geexbox-1.1/0000755000175000017500000000000010642017370011106 5ustar benbengeexbox-1.1/AUTHORS0000644000175000017500000001214210641745504012164 0ustar benben ooooo oo o o oo o M" "Mo Mo oM" M Mo oM" M oM""Mo oM""Mo "Mo" Mo"""o oM""Mo "Mo" M """M MooooMM MooooMM oMMo M "M M M oMMo "o oM M o M o oM Mo M oM M M oM Mo "MoooM"M "MooM" "MooM" M" "M M"ooo" "MooM" M" "M | NOTE | ~~~~ Do NOT send bug reports, help and feature requests directly to the authors. | GEEXBOX PROJECT LEADERS | ~~~~~~~~~~~~~~~~~~~~~~~ Aurelien Jacobs Benjamin Zores | GEEXBOX TEAM MEMBERS | ~~~~~~~~~~~~~~~~~~~~ Amir Shalem * Hebrew subtitles support through fribidi library. * complete rewrite of installator and GRUB support. * libtheora support. * too many fixes to be listed. Andrew Calkin * digimatrix remote support. * native ide-cd driver instead of ide-scsi layer. * support for X-in-1 cards readers. Alexis Saettler * CPU frequency scaling support. * Debian's generator package and repository. * Askey remote support. * various website's XHTML/CSS/XSL enhancements. Mathieu Schroeter * support for SHOUTcast, Extended M3U and custom network streams. * many patches over generator. Guillaume LECERF * support for LCD displays. * various patches and bug fixes. | PATCHES | ~~~~~~~ Ville Skyttä * many cleaning and fixes Serge Gebhardt * added fbi for image viewing support. BWare * added wifi support. Serial Cleaner * setcd patch * hauppauge remote support. Hervé Urbain * logitech remote support. * realmagic remote support. Plom * leadtek remote support. Mathieu Velten * enhanced win32 generator. Kevin Foss * radio card support. Arne Graesser * sleeptimer Cédric Chaissac * support for Microsoft MCE USB remote. * support for StreamZap remote. Jean Flinois * support for ATI Remote Wonder II. Laurent Peltier * support for SHOUTcast, Extended M3U and custom network streams. Bertrand Cachet * support for Python | TRANSLATIONS | ~~~~~~~~~~~~ Kiril Jovchev * Bulgarian menu translation. Michele Schaeuble * German menu and README translations. Andrighetto Riccardo * Italian menu translation. barb3tta * Italian README translation. Yogi * Polish menu translation. Eva Mikulcikova * Czech and Slovak menu translations. ClycioC * brasilian portuguese menu translation. Nikolas Garofil * dutch menu translation. kim * Finnish and Swedish menu translations. Tommi Tauriainen and team Jynkky * Finnish menu and readme translations fixes. c0p0n * Spanish menu translation. Nicolas Forgeard * French README translation. Sass Tabakajev * Estonian menu translation Ebore Belosa * Czech menu and help translation. Excaliber * Hebrew menu and help translation. Strahinic Igor * Serbian menu and help translation. Lars Sunde * Norwegian menu and help translation. Vladimir * Czech README translation. Yhlee * Korean menu and help translation. Christos Themelis * Greek menu and help translation. MarkTsai * Simplified and Traditional Chinese menu and help translation. Denis Polevoi * Russian README translation. Siddique Vally-Adam * French and English documentation about how to setup a Win32 PXE server. Heiko Rutenbeck (bzrudi) * Complete deutsch website's translation. | DESIGNERS | ~~~~~~~~~ Mickaël Beugnier for the GeeXboX logo and bootlogo design (releases 0.90-1 to 0.98). Nicolas Staszak (NICO.S) for the bootsplash and user interface design. | THANKS | ~~~~~~ Special thanks to Dennis Roos and his company InTouch for offering us a webserver and full of bandwidth up to Dec. 2005. Special thanks to George Pratt and Stephen McCarron and their company Hosting365 for offering us a dedicated webserver and full of bandwidth since Dec. 2005. Thanks for all of the generous donators who have contributed to help us with GeeXboX development by giving us hardware or money. They are too many to be listed here but each of them will recognize himself. The whole free software community, and especially the whole MPlayer team. geexbox-1.1/README0000644000175000017500000007041610641745504012004 0ustar benben ooooo oo o o oo o M" "Mo Mo oM" M Mo oM" M oM""Mo oM""Mo "Mo" Mo"""o oM""Mo "Mo" M """M MooooMM MooooMM oMMo M "M M M oMMo "o oM M o M o oM Mo M oM M M oM Mo "MoooM"M "MooM" "MooM" M" "M M"ooo" "MooM" M" "M | ABOUT | ~~~~~ GeeXboX is a Media Center Linux distribution. In fact, it is a stand-alone boot CD which allows you to watch movies or listen to music. It supports many formats, such as avi, mpeg, divx, ogm, rm, mp3, ogg, dvd, vcd and cdda. It also supports some IR remote controllers and TV-Out for some graphic cards. This archive contains the needed scripts to rebuild an iso image of GeeXboX. | REQUIREMENTS | ~~~~~~~~~~~~ To generate a GeeXboX iso, you will need either : - a GNU/Linux system with mkisofs and mkzftree. - a MAC OS X system with mkisofs and mkzftree. - a Windows system. To build the GeeXboX, you will need some classic tools : - a working GNU/Linux system. - the gcc C compiler. - GNU make - the patch command. - the nasm assembler. - bzip2 and gzip. - the wget download tool (not needed for the full GeeXboX package). - mkisofs and mkzftree to build the iso image. - mkzftree to compress files on the iso image. - cdrecord (to burn the iso image). And also 2 GB of hard disk free space. | PERSONALIZATION | ~~~~~~~~~~~~~~~ When the GeeXboX is installed on a hard drive or generated, it is quite easy to personalize it. You can add some proprietary codecs such a rv9 or wmv9, simply by adding them in the GEEXBOX/codecs directory. You can find those codecs in the package on http://www.geexbox.org/releases/extra-codecs-nonfree.tar.gz You can also modify many options. This can be done simply by editing some text files. * Firmware auto-loader : GeeXboX supports many free drivers but unfortunately some of them may require an additionnal proprietary firmware (non-free and so not included in GeeXboX ISO) to work properly. The firmware is a binary file that is uploaded to the device (PCI or USB) when the driver is loaded. For each driver, the firmware has to be a specific file with a pre-determined name. If you have reluctant hardware that require additionnal firmware (in most of the cases, it only concerns WiFi and DVB cards), you'll need to check on the Internet for your Linux driver page to see how to check the firmware file. Most of the time, you'll get a direct download link. Sometimes, you'll need to extract it from your Windows drivers archive that was shipped with your hardware. Once you get the firmware file, simply put it into the /firmwares directory. You can put in as many firmwares as you want, and GeeXboX will automatically find them and use them with the right drivers if needed. The only thing you then have to take care is to have the good firmwares file and to generate a new ISO. Please note that you can also use the GeeXboX ISO generator to automatically grab firmwares for you. You can select all of the extra binary firmware files you want the generator to add for you. Simply note that this feature will require you to have an Internet access when using the GeeXboX generator. * MPlayer : This is where you can do most of the configuration and tweaking. The options take place in the file packages/MPlayer/config/mplayer.conf. You may want to modify options such as OSD font size (subfont-text-scale). You can also add lots of options such as DVD default language (eg: alang=fr,en). The best place to find them is the MPlayer manpage for Linux users (man -l build/MPlayer-*/DOCS/mplayer.1). You should also have a look at the MPlayer documentation (in build/MPlayer-*/DOCS or at http://www.mplayerhq.hu/DOCS/). Another file you may modify is the packages/i18n-texts/config/menu.conf. You can remove items you don't need, or you can translate it in your own language for example. Then the last file you can look at is the packages/MPlayer/build which contains the selection of options which are built into MPlayer. * TV-Out : Enabling the TV-Out is achieved with the help of multiple small programs dedicated to different video card brands. Currently we use atitvout for ATI cards, s3switch for S3 cards and nvtv for nVidia cards (and possibly intel i810 and 3dfx cards). The configuration of those programs is done in packages/tvout/config/tvout. There you can choose the TV standard you want (pal, ntsc...) and you can also modify specific options for nvtv. # TV Output Standard (ntsc/pal/secam) TVOUT_STANDARD=pal Please note that you can also define the output aspect (say 4:3 or 16:9 display) in this file through the line : TVOUT_ASPECT="4:3" This parameter will be used both for TVOut and regular (CRT/TFT) display. You can also specify the desired height/width values and your display's horizontal and vertical frequencies in case you have unusual screen like WideScreens or videoprojector. This can be done, editing the /etc/mplayer/mplayer.conf file. Default parameters are shown below (please uncomment lines related to frequency if you want to use them) : screenw=800 screenh=600 #monitor-hfreq=31.5k-50k #monitor-vfreq=50-90 * Lirc : You can choose one of the supported remote controller by editing the file GEEXBOX/etc/remote. Also take care to chose the corresponding ir receiver in the same configuration file. If you want to modify the key binding of your remote controler, look at the file GEEXBOX/etc/lirc/lircrc_REMOTE. * Network : You can configure the network in the file GEEXBOX/etc/network. There you can chose the IP address used by the GeeXboX (default is to use DHCP and if it don't work, fall back to 192.168.0.54). You can also specify a login and a password which will be used to connect to windows shares (default will only connect to anonymous shares). You can also declare some NFS mounts in GEEXBOX/etc/nfs. * WiFi : By default, GeeXboX tries to autodetect your network settings. If you have both traditionnal NIC and WiFi cards, only the latest will be setup. You may have to modify the /etc/network file in order to fit your network's settings. In this one, 4 lines are related to wireless cards : * PHY_TYPE="auto" # Network physical type (auto|ethernet|wifi) * WIFI_MODE="managed" # Wifi working mode (managed|ad-hoc) * WIFI_WEP="" # Wifi WEP key * WIFI_ESSID="any" # Wifi SSID These lines let you configure most of the settings. You can let autodetection enable or even force the use of ethernet or WiFi adapters. In the same way, this let you choose between the managed and the ad-hoc mode and let you define your WEP key and SSID. * Gateway : GeeXboX supports access to the Internet. In the case you've got a connection to the Internet, you may share it with your multimedia box, using a router or a gateway. For this, simply define the gateway IP address in the /etc/network file. * GATEWAY="" # Gateway IP ("" for DHCP or no internet connection) * DNS server : If you want to access to the Internet, GeeXboX may require a DNS server IP address. If you're not using a DHCP server that will do this job, you'll have to specify it by hand in the /etc/network file. * DNS_SERVER="" # DNS Server IP ("" for DHCP or none) * TV configuration : GeeXboX supports TV inputs and tuners. The system hardly tries to autodetect the card and the tuner. You can force the settings and skip the autodetection try. Please modify the /etc/tvcard as described : #TV CARD/TUNER Model (AUTO for autodetection or look at the following urls) #http://www.linuxhq.com/kernel/v2.6/2/Documentation/video4linux/CARDLIST.bttv #http://www.linuxhq.com/kernel/v2.6/2/Documentation/video4linux/CARDLIST.tuner TV_CARD=AUTO TV_TUNER=AUTO TVIN_STANDARD=pal Please let the AUTO parameter whether you want to keep autodetection, or replace it by the number of your card and tuner types, according to the previous URL. Please be careful : in order to force the card and tuner types, you have to know the EXACT REFERENCES of your hardware. Once done, you should be able to use the TV inputs (Composite and S-VHS) of your TV card. In the same way, you can use the tuner to watch TV. For that, you will have to define the region you belongs to and the frequency of the TV channels you want to watch. Once again, simply edit the /etc/tvcard file : # TV Channels # Syntax : CHAN="Channel Frequency:Channel Title" # Example : # CHAN="26:France 2" # CHAN="K08:Canal +" # TV Channels List # Available : france, europe-east, europe-west, us-bcast, us-cable CHANLIST=france Please be careful when editing channels and simply use the same syntax as described above and TV channels should be present in the main menu. * Audio configuration : GeeXboX supports both analog and digital audio output through regular JACK connectors or RCA SPDIF one. By default, output is set to analog. You can change this, by editing the /etc/audio file : # Output using SPDIF (yes/no), otherwise ANALOG output SPDIF=no Remember that you will need to set your output to SPDIF if you want to connect your soundcard to an external amplifier for decoding AC3/DTS streams (using passthrough mode). * Video post-processing : Post-Processing is a software way to get a smoother and more accurate render of your videos. It however consumes a lot of CPU time to magnify pictures but, as a result, it looks far better. Using MPlayer internal filters, GeeXboX lets you make h/v deblocking, deringing and auto luminance to enhance your image. By default, post-processing is disabled to avoid lagging on small configurations. You can enable it simply by editing the /etc/mplayer/mplayer.conf file : # Set Post Processing (h deblock, v deblock, dering, auto luminance) # Consumes CPU power, disabled for low configs, uncomment to enable it. #vf=pp=hb:a/vb:a/dr:a/al:a * DXR3/Hollywood+ cards : Users with this kind of hardware decompression card does NOT even need to have a video board and sound card to use GeeXboX. On the drawbacks, only the tvout connector can be used with DXR3 cards (no CRT display). You may have to set the required image norm (PAL/NTSC) in the /etc/tvout file and the kind of audio output you want to use (Analog or SPDIF) in /etc/audio. * Radio configuration : If your TV-card has built-in FM radio tuner, GeeXboX can support playing the radio. You have to modify the GEEXBOX/etc/radio file to have "RADIO=yes" if you want to use the radio. There is no hardware auto- detection, so setting this to 'yes' without a TV-card-based FM radio will put unnecessary menu items on your GeeXboX screen. The GEEXBOX/etc/radio file also has the radio station definition. There are a number of examples in the file, which simply include the radio frequency and the name of the station. Please be careful when editing channels and simply use the same syntax as the examples and the radio stations should be present in the main menu under "LISTEN RADIO". Since the radio application itself is not part of MPlayer, there is separate access to the volume. Please note that the volume that is being increased or decreased is Master volume. Before switching back to TV or video viewing, or music playing, the volume should be re-adjusted. * UPnP File Sharing : UPnP stands for Universal Plug & Play and is a network protocol aiming at providing the autodiscovery of devices and services of your Home Network. The UPnP A/V (for Audio/Video) norms defines several profiles for devices to easily share multimedia files and lets them being played. The UPnP Media Server profiles represent all of the devices that are able to share files to devices implementing the UPnP Media Player or UPnP Media Renderer profiles. The GeeXboX embeds a UPnP Control Point software that is able to auto-discover all UPnP Media Servers from your Home network and it simply mounts their contents to a dedicated mount point (/mnt/UPnP). This way, you just have to share contents using a compliant UPnP Media Server software and they'll be automatically accessible from GeeXboX. For more info about UPnP and some media servers usage, please go to http://www.geexbox.org/wiki/index.php/Accessing_to_UPnP_Contents * Network streaming : GeeXboX now gives you the possibility to add some SHOUTcast Radio/TV official playlist as easily as personal playlists (local and remote). SHOUTcast activation is set in "GEEXBOX/etc/network" config file. As SHOUTcast TV sometimes may contain pornographic and subscription-only streams, you can define a "black list" and a "white list" to allow/deny any streams you choose (default keywords for "black list" are : "adult xxx porn ESS SWCTV SWPTV Subscription"). The black/white lists are case-insensitive. "GEEXBOX/etc/netstream" config file can be set to create local and remote playlists (some examples are located in this file). "Remote playlists" refer to "Extended M3U" files. For French users only : You can get "FreeboxTV" thanks to this file, using the following process : - uncomment EXTM3U ad hoc entry. - use a GeeXboX version that have to be compiled with "LIVE555 library" support (otherwise you won't be able to decode the stream). * DVB cards : GeeXboX has a support for various types of DVB cards (Terrestrial, Cable, ATSC and Satellite) either in PCI or USB. Please note that for now, only one DVB adapter is usable at a time. Some DVB devices (especially USB ones) may require an external proprietary firmware to be loaded in the mean time as the driver to be usable. You may have a look at the LinuxTV DVB Wiki (http://linuxtv.org/wiki/index.php/Main_Page) to see if you're card requires one or not and if so, which one it is. Some firmwares can be fetched directly from the LinuxTV website (http://linuxtv.org/download/firmware/), otherwise may be included in the Windows drivers archive. See the GeeXboX firmware loader documentation to see how to get them loaded for you. For each card, the list of channels is available through the MPlayer's open menu. Nevertheless, there's no way to auto-discover these channels. Thus, adding the list of DVB channels to GeeXboX can be done in several ways : - using an existing channel list : MPlayer needs to have a working channels.conf file to use DVB. This file can be generated through the utilities provided by the dvb-apps package. Simply use a Linux box that has a DVB card configured, download the linuxtv-dvb-apps tarball from http://www.linuxtv.org/download/dvb/ , compile it and create the config file using the "scan" executable, in "zap" format (which is the default as of dvb-apps 1.1.0). For example, for a DVB-S (Satellite) card using Astra-19.2E as the provider: wget http://www.linuxtv.org/download/dvb/linuxtv-dvb-apps-1.1.0.tar.bz2 tar jxvf linuxtv-dvb-apps-1.1.0.tar.bz2 cd linuxtv-dvb-apps-1.1.0/util/scan make ./scan -x 0 dvb-s/Astra-19.2E > channels.conf The "-x 0" flag is here to restrict the scan to Free To Air channels only. Please always do so, as MPlayer do not support encrypted DVB channels. According to your type of DVB card, choose either a file from the "dvb-s" "dvb-c", "dvb-t" or "atsc" directories and ask for a scan. Then, simply copy the channels.conf file you've just created to the /etc/mplayer directory in the GeeXboX generator tree, and rebuild away. - using an existing transponder list : the procedure is highly similar to the one defined just before but with no scan. This time, the scan will be done at GeeXboX boot but this way, you do no more require another Linux system to generate the channels.conf file. To do so, you simpy have to check at : http://linuxtv.org/cgi-bin/viewcvs.cgi/dvb-apps/util/scan/ According to your DVB card type (S/T/C/ATSC), check for the good directory and grab the transponder frequency list that fit your needs. Then simply rename the file to dvb.conf and copy it to /etc. Then, rebuild a new ISO using the generator. A bootup, if GeeXboX detects a valid transponder file in /etc/dvb.conf, it will be used to scan for DVB channels and will generate the /etc/mplayer/channels.conf file itself. WARNING : Scanning can be slow according to the number of devices to be scanned and will be done each time you boot GeeXboX if using it as a LiveCD. It is highly recommended that you do it once only, then copy the generated /etc/mplayer/channels.conf file somewhere else and rebuild an ISO using generator, following the first method or to install it on disk. - using installator : this is for sure the easiest solution but requires you to install GeeXboX to disk. During the installation process, if a valid DVB device is recognized by the system, the installator script will ask you if you want to scan for DVB channels. The installator contains the complete list of transponders frequencies. That way, you just have to select your DVB device type and the transponder file you want to use for GeeXboX to scan. The channels.conf file will then be automatically generated. * DVD Navigation Menus : GeeXboX allows 2 DVD playback mode: - Direct movie playback (default). - DVD Navigation Menu support (fairly experimental). The first one can be safely trusted for playing any kind of DVD. Once inserted, the disc is automatically detected and MPlayer tries to play the title it consider as the movie one. The major advantage is that all copyright, advertisement and menu parts are skipped to allow a direct playback. However, in some situations (like DVDs with enhanced menus or most of the series DVD, containing multiple titles to be played) this method is inaccurate and you'll not be able to watch your DVD correctly. The second one, while still experimental (but has really good chances to works fine) supports the regular DVD Navigation Menus and let you control your DVD the same way you'll do it using a regular commercial DVD player. You can use the GeeXboX options menu to switch between the DVD playback methods, according to the DVD disc you're trying to watch. You can also make use of the GeeXboX ISO generator to select the default DVD playback method you want. | INSTALLATION | ~~~~~~~~~~~~ The easiest way to install GeeXboX is to boot it from CD and type "install" at isolinux boot prompt. Be carefull during this step. Read twice each question and stop installing if you don't understand one of the questions. | PXE BOOT | ~~~~~~~~ Yes, the GeeXboX is able to boot from the network on a diskless station ! To achieve this you will need : - a DHCP server - a TFTP server - a NFS server - a PXE capable station :-) * Using a GNU/Linux system : ------------------------ First configure your dhcp server to send PXE boot info. Here is an example with isc dhcp : allow booting; allow bootp; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.128 192.168.0.192; option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; next-server 192.168.0.1; filename "/tftpboot/GEEXBOX/boot/pxelinux.0"; } The next-server option is the address of the TFTP server. Then configure your TFTP server (such as atftpd) to server the /tftpboot directory and copy a full GEEXBOX tree in this directory. For example you can copy the content of a GeeXboX CD from a linux WITH THE CDROM TRANSPARENT DECOMPRESSION ENABLED !! (to verify this, look at the sbin/init file in the GeeXboX tree and verify that it do not contain garbage) If you've built the GeeXboX yourself from sources, you can also generate the GEEXBOX tree with make pxe. Then you should edit the file /tftpboot/GEEXBOX/boot/pxelinux.cfg/default to set nfsroot to the right NFS path to the GEEXBOX tree. Finaly set up your NFS to export the GEEXBOX tree with a /etc/exports containing something like this : /tftpboot/GEEXBOX (ro) and a /etc/hosts.allow containing something like : ALL: ALL That should do the trick. Boot your PXE station and see what happen. * Using a Microsoft Windows system : -------------------------------- In order to boot in PXE mode from a Windows host, you'll need the following software : * An TFTP and a DHCP Server (for example "tftpd32", available at http://tftpd32.jounin.net/) * An NFS Server (for example "Allegro NFS server", available at http://opensource.franz.com/nfs/) * A computer supporting PXE boot mode. Download and uncompress (No need to install) the tftpd32 folder somewhere on your disk. In this example, lets assume it is : C:\tftpd32 Copy the complete GEEXBOX tree in the same directory (C:\tftpd32\GEEXBOX) Start tftpd32 : - Choose the C:\tftpd32 folder for "current directory". - Choose the interface (network card) to be used in "server interface". In the example here it's 192.168.0.1 - Go in "setting" and make sure DHCP server is checked (enabled) - In the "DHCP server" tab, fill in all the box using the following example : (Please refer to some documentation about DHCP all around the net in order to understand) * IP starting pool : 192.168.0.10 * Size of pool : 10 * Boot file : ./GEEXBOX/boot/pxelinux.0 * WINS/DNS server : 192.168.0.254 * Default router : 192.168.0.254 * Mask : 255.255.255.0 * Domain name : mydomain.net - Click "save" to apply modifications. First part is done, you can now boot the client computer (the one starting GeeXboX), and will see it loading until the logo appears. After a while it'll freeze because your NFS server is not set yet. Install "Allegro NFS server" and fill in the boxes following these settings : Exports tab : * Add a "new name" : and call it "/tftpboot/GEEXBOX" * In "path" just below : choose "C:\tftp32\GEEXBOX" folder * In "allowed host list" , choose "all" * "Read write", and "read only user list", choose "root" and "everyone" (if you want some log just check all in the last tab) Apply settings. Don't forget to modify the file : C:\tftp32\GEEXBOX\boot\pxelinux.cfg\default and change the IP address "192.168.0.2" to "192.168.0.1" (or the one you've previously setup). Just start the client computer and now GeeXboX should be running fine. | BUILDING | ~~~~~~~~ First have a look at the configuration section just under (at least the global part). Then basically you can build the iso with : make Or you can directly burn this iso with : make burn When done, you can save disk space by cleaning the build tree : make clean or by doing a full cleaning, even removing downloaded sources : make distclean There's also more advanced commands if you want to hack around the GeeXboX : scripts/get package # download the package scripts/unpack package # unpack and prepare the package scripts/build package # build the package scripts/install package # install the package with the $INSTALL prefix scripts/clean package # clean the package build tree scripts/clean --full package # clean both the package build and source trees make exec # launch directly the GeeXboX in a jail # WARNING: this is a highly experimental feature # use it at your own risks. If you've made a hacked version of the GeeXboX, you can easily build a small tar.bz2 for it with : make dist or a full tar (containing all sources) with : make fulldist or a geexbox generator with : make generator or a pxe ready tree with : make pxe | CONFIGURATION | ~~~~~~~~~~~~~ * Global options : This is the first thing you should take care of before trying to build the GeeXboX. It stands in the file config/options, and it should be self explanatory. * Linux : This is a classical Linux configuration (packages/linux/config/linux.conf). You can edit them by hand, or you can also do a scripts/unpack linux and then a make menuconfig -C build/linux-* (or use the method you prefer instead of menuconfig). Then you should backup your build/linux-*/.config into packages/linux/config/linux.conf. * Lirc : Lirc allows you to control the GeeXboX using a remote controller. First you have to choose the file describing your specific remote in build/lirc-*/remotes (after doing a scripts/unpack lirc) and add it in packages/lirc/install. Then you should choose your device (default is /dev/ttyS0 (COM1)) and the lirc driver and put them in a file called packages/lirc/config/lircd_$REMOTE. Then you can choose your key mapping in the file packages/lirc/config/lircrc_$REMOTE. For each mapping you have to select a button (pike their names in the remote definition file) and associate an action to it. The action is one of MPlayer's actions (you can find a list in the html file build/MPlayer-*/DOCS/documentation.html#commands). | HACKING | ~~~~~~~ The first thing you should look at is the initialization script. In fact there are two initialization scripts. The first one is in packages/initrd/scripts/linuxrc but you shouldn't need to modify it. The second one is in config/options and that's where you may put some customizations. There you can first choose which is the architecture (i386 or PPC) you want to build GeeXboX for. After that, you can perform finnest tuning by specifying a certain kind of sub arch (386, pentium, athlon) in order to optimize the distribution for your specific CPU and gets the best perfomances off. Then the next thing which may interest you is the creation of a new "package". A package is just a bunch of scripts which have to follow some rules. All the scripts have to take place in a directory named as the program you want to "package", itself in the packages directory. Here is a list of the scripts you may create : - url : just a list of urls where to get the program sources. - unpack : what to do after unpacking the sources. For example, you can modify some configuration files. This does not include applying patches. - need_build : called when the package as allready been built, in order to be sure that it don't need to be rebuilt. It should remove the file .stamps/"package name"/build if the package need to be rebuilt. - build : all the steps needed to build the program. - install : all the steps needed to install the program. The installation prefix should be $INSTALL. In addition, the package main directory may contain extra subdirs : - config : where all config files belong. These files may be used either by the build script to compile the package or by the install script to be put to the system's /etc directory. - scripts : this subdir may contain runtime initialization scripts related to the current package which should be installed by install script - patches : this subdir may contain patches to be applied to the sources of the package, at unpack time. - sources : if files are present here, they will be automatically copied into the package's build tree. - init.d : contains initialization scripts to be launched at runtime. You also have to remember that software which run on the GeeXboX have to be compiled with the uClibc gcc wrapper. Fortunately, the GeeXboX toolchain is smart enough to automatically build all added packages using the uClibc gcc wrapper itself. Do not forget to ask for your package's compilation and installation by explicitely asking for it in the scripts/gentree build script. Finally, the best way to make a package is to look how other packages are done. | LICENSE | ~~~~~~~ All the programs used by the GeeXboX are protected by their respective license. They all are free software and most of them are covered by the GNU General Public License. The GeeXboX itself, meaning all the scripts which are used in the building process, are covered by the GNU General Public License. geexbox-1.1/COPYING0000644000175000017500000004313310641745504012153 0ustar benben GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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 the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. geexbox-1.1/VERSION0000644000175000017500000000000410641745641012160 0ustar benben1.1 geexbox-1.1/ChangeLog0000644000175000017500000005262310641745700012674 0ustar benben2007-07-01 Benjamin Zores * released version 1.1. 2007-06-17 Benjamin Zores * released version 1.1-rc4 for test and trial. 2007-06-12 Guillaume LECERF * add support for multiple menu languages in the ISO. 2007-06-02 Benjamin Zores * released version 1.1-rc3 for test and trial. 2007-06-02 Benjamin Zores * removed libdts, libmpcdec, libogg, libvorbis and libtheora, as deprecated by new MPlayer internal decoders/demuxers. * reworked internationalization files. 2007-06-02 Guillaume LECERF * updated MPlayer to SVN r23418. * added new libdvdnav fork. 2007-05-17 Guillaume LECERF * updated linux to 2.6.21.1. 2007-05-06 Aurelien Jacobs * updated uClibc to 0.9.29. 2007-04-28 Guillaume LECERF * updated lcd4linux to 0.10.1-RC1. 2007-03-24 Aurelien Jacobs * updated busybox to 1.5.0. 2007-03-19 Guillaume LECERF * updated busybox to 1.4.2. 2007-03-01 Benjamin Zores * released version 1.1-rc2 for test and trial. 2007-02-12 Guillaume LECERF * updated uClibc to snapshot 20070212. 2007-02-03 Benjamin Zores * released version 1.1-rc1 for test and trial. 2007-01-23 Benjamin Zores * upgraded linux to 2.6.20-rc5. 2007-01-21 Aurelien Jacobs * updated busybox to 1.4.0. 2006-12-19 Benjamin Zores * added optional support for DirectFB video output. 2006-12-14 Aurelien Jacobs * updated busybox to 1.3.0. 2006-12-14 Benjamin Zores * added optional support for IVTV based (PVRxxx) TV cards. 2006-12-13 Benjamin Zores * added optional support for games emulators (zsnes only right now). 2006-12-09 Guillaume LECERF * added drivers for wireless TI ACX111 chipsets. 2006-12-08 Guillaume LECERF * upgraded MPlayer to 1.0rc1, * now compiled with --enable-libavformat * remove support for mencoder, it's buggy 2006-11-30 Benjamin Zores * updated linux to 2.6.19 2006-11-19 Benjamin Zores * added new makefile rules to build and play VMware virtual machines. 2006-11-12 Benjamin Zores * Added optional support for Python 2.4.3 (patch from Bertrand Cachet, initial draft from Amir). * added optional support for SDL library. * added optional support for PyGame bindings. 2006-10-20 Amir Shalem * Update FriBidi to 'fribidi2' code base. 2006-09-30 Amir Shalem * added optional glibc based system, instead of uClibc. 2006-09-20 Aurelien Jacobs * updated linux to 2.6.18 2006-08-05 Andrew Calkin * added NdisWrapper support 2006-07-07 Amir Shalem * updated busybox to 1.2.0. 2006-06-29 Benjamin Zores * use powernowd for CPU frequency scaling instead of cpufreqd. 2006-06-23 Amir Shalem * updated linux to 2.6.17 2006-06-22 Aurelien Jacobs * new public release (version 1.0) 2006-06-12 Guillaume LECERF * upgraded MPlayer to 1.0pre8. 2006-05-20 Benjamin Zores * upgraded MPlayer to CVS 2006-05-19. 2006-05-16 Andrew CALKIN * disable recorder by default, as it is still experimental. 2006-05-14 Guillaume LECERF * branch vesafb-tng as it doesn't work on some cards. 2006-05-13 Benjamin Zores * upgraded MPlayer to CVS 2006-05-11. 2006-05-02 Amir Shalem * integrate vesafb-tng. 2006-04-11 Guillaume LECERF * integrate lcd4linux. 2006-03-29 Aurelien Jacobs * updated busybox to 1.1.1. 2006-03-26 Benjamin Zores * added DVD Navigation Menu support. 2006-03-25 Amir Shalem * updated linux to 2.6.16 2006-03-24 Amir Shalem * upgraded uClibc to SVN 2006-03-24 2006-03-17 Benjamin Zores * preliminary support for encoder with Time-Shifting feature (still considered as _experimental_ at this stage). * support for FLAC audio files metadata. 2006-03-17 Aurelien Jacobs * upgraded MPlayer to CVS 2006-02-23. 2006-03-17 Amir Shalem * Updated GCC to v4.1.0 2006-03-04 Benjamin Zores * added new menu that displays stream A/V properties (Codec, Bitrate, Resolution, ID3 Tags ...). 2006-02-22 Laurent Peltier Mathieu Schroeter * support for SHOUTcast, Extended M3U and custom network streams. * generator patch for network streams support. 2006-02-20 Benjamin Zores * added optionnal (default is NO) support for mencoder (in a single binary, code shared with mplayer). 2006-02-12 Benjamin Zores * added strace (with DEVTOOLS=yes only) for debugging facility. 2006-02-10 Amir Shalem * Optional support for C++ in toolchain * Optional support for LIVE555 library (RTP/RSTP/SIP streaming) 2006-01-03 Aurelien Jacobs * updated linux to 2.6.15. 2005-12-10 Benjamin Zores * updated djmount to release 0.50 (files are now natively shared, i.e. no more playlist, and you can seek in remote streams). * added support for non-free binary firmwares at sources build. 2005-11-23 Benjamin Zores * added support for PcCard (32bits CardBus only, not 16bits PCMCIA). 2005-11-11 Aurelien Jacobs * new public release (version 0.98.7) 2005-11-01 Benjamin Zores * added support for UPnP A/V Media Server browsing. * added support for DVB (Sat, Cable, Ter) cards (PCI and USB). * removed buggy RT2570 USB driver. 2005-10-28 Amir Shalem * updated linux to 2.6.14. * added support for Prism54 WiFi chipsets. * added support for Intel IPW2100/IPW2200 WiFi chipsets. 2005-08-29 Aurelien Jacobs * updated linux to 2.6.13. 2005-08-24 Benjamin Zores * added support for RT2570 USB WiFi chipsets. * added udev external firmwares auto-loader. 2005-08-15 Aurelien Jacobs * new public release (version 0.98.6) 2005-07-18 Aurelien Jacobs * integrate udev and replace our hotplug script. 2005-07-13 Benjamin Zores * compress kernel, binaries and grub archives using LZMA algorithm. 2005-07-05 Alexis Saettler * added support for CPU frequency scaling on laptops. 2005-07-03 Benjamin Zores * added support for MusePack codec (.mpc files) 2005-06-20 Andrew Calkin * use native IDE CD drivers instead of IDE-SCSI layer. * support for X-in-1 cards readers. 2005-06-07 Amir Shalem * added FLTK version of the generator. 2005-06-05 Andrew Calkin * added support for digimatrix remote. 2005-04-26 Benjamin Zores * added channels scanner for analog TV cards. 2005-04-17 Benjamin Zores * updated MPlayer to 1.0pre7. * added HTTP server with CGI support for Web Management. 2005-04-15 Kevin Foss * added radio card support. 2005-04-12 Aurelien Jacobs * powerpc architecture support. 2005-04-10 Benjamin Zores * added support for CX88 TV card chipsets. 2005-03-03 Benjamin Zores * upgrade linux to 2.6.11. 2005-01-13 Aurelien Jacobs * updated uClibc to 0.9.27. 2004-12-29 Aurelien Jacobs * new public release (version 0.98.5) 2004-12-24 Aurelien Jacobs * updated MPlayer to 1.0pre6. 2004-11-25 Amir Shalem * support for cross-compiling GeeXboX under FreeBSD. 2004-11-24 Benjamin Zores * added new official theme (graphics by Nicolas Staszak). 2004-11-17 Benjamin Zores * added TVOut support for i810/i815 based cards. 2004-11-14 Amir Shalem * complete rewrite of installator and support for GRUB as a bootloader (standalone or multiboot). 2004-10-13 Benjamin Zores * switch BusyBox to final 1.00 release. 2004-10-10 Benjamin Zores * added drivers for RT2500 i802.11 b/g chipset. 2004-09-17 Aurelien Jacobs * added a full cross-compilation toolchain. 2004-09-10 Benjamin Zores * updated VESA framebuffer driver to the new vesafb-tng. 2004-09-10 Alexis Saettler * switch BootSplash to FBSplash. 2004-09-05 Alexis Saettler * added support for Askey remote. 2004-09-03 Benjamin Zores * updated ALSA lib and utils to 1.0.6 * updated Samba to 3.0.6 * removed acx100 wireless drivers (need non free firmware to work). 2004-09-03 Aurelien Jacobs * added module-init-tools package for 2.6 modules. * switch the 2.4 LPP patch to BootSplash. * updated uClibc to current CVS for Linux 2.6 support. 2004-08-18 Benjamin Zores * ported GeeXboX to linux 2.6.8.1 kernel. * linux image and initrd now in gzip format, nor bzip2. * removed alsa-driver package (now included in kernel). * removed at76c503 package (now included in kernel). * updated em8300 drivers to CVS snapshot for 2.6 compatibility. 2004-08-17 Samuel Suárez * added Avermedia remote/receiver support. 2004-08-14 Sass Tabakajev * added estonian translation. 2004-08-12 Aurelien Jacobs * new public release (version 0.98) 2004-08-04 Benjamin Zores * added chapter selector for DVD and Matroska files. 2004-07-31 Alexis Saettler * added geexbox-generator Debian package 2004-07-26 Aurelien Jacobs * updated to busybox 1.00-rc2. 2004-07-25 Aurelien Jacobs * updated to busybox 1.00-rc1. * added dts decoding support. 2004-07-22 Aurelien Jacobs * separated remote selection from ir receiver selection. 2004-07-20 Bernardo Santos * added Gradiente D-10 remote support. 2004-07-18 Benjamin Zores * added support for SPDIF output. 2004-07-15 Aurelien Jacobs * updated to MPlayer 1.0pre5. 2004-07-14 Benjamin Zores * updated to ALSA 1.0.5a. * updated to Samba 3.0.4. * updated to nvtv 0.4.7. 2004-07-10 Benjamin Zores * added support for USB and SideWinder joysticks. 2004-06-03 Benjamin Zores * added drivers for wireless TI ACX100 chipsets. 2004-06-01 Benjamin Zores * added drivers for wireless RT2400 chipsets. 2004-05-28 bufa * added LG remote support. 2004-05-12 Benjamin Zores * added telnet server. 2004-05-09 Aurelien Jacobs * added libirman. 2004-05-08 Aurelien Jacobs * updated to syslinux-2.09. * updated to lirc-0.4.0pre4. * now use lirc to manage Ati Remote Wonder. 2004-05-02 Benjamin Zores * added vidix driver for CLE266 (VIA Unichrome) 2004-04-29 Aurelien Jacobs * updated to MPlayer-1.0pre4. * updated to linux-2.4.26. * updated to ALSA 1.0.4. * updated to BusyBox 1.0pre10 2004-03-31 Serge Gebhardt * added fbi for image viewing support. 2004-03-16 Aurelien Jacobs * really working v4l2 for bt8x8 and saa7134. 2004-03-10 Aurelien Jacobs * updated nvtv to version 0.4.6. 2004-03-05 Aurelien Jacobs * added MPEG hardware decompression for DXR3. 2004-03-02 Benjamin Zores * added Serial ATA controllers support. 2004-02-24 Benjamin Zores * added 3COM/NetGear Gigabit ethernet cards support. * switched to V4L2 API with Connexant chipsets support. 2004-02-23 barb3tta * added italian README translation. 2004-02-20 Benjamin Zores * updated to linux-2.4.25. 2004-02-06 Matt Rinsch * added Packard Bell Fast media remote and receiver support. 2004-02-05 Aurelien Jacobs * added streaming support. 2004-02-04 Benjamin Zores * added BT8x8 cards support. 2004-01-25 BWare * added wifi support. 2004-01-23 Aurelien Jacobs * updated uClibc to 0.9.26. 2004-01-15 Aurelien Jacobs * added matroska support. 2004-01-14 Madarassy László * added hungarian translation. * patched s3switch to support virge gx2. 2004-01-07 Benjamin Zores * added DXR3/Hollywood+ cards support (TVOut only for now). 2003-12-17 Benjamin Zores * added new Xmas theme for 0.96 release 2003-12-16 Yogi * added polish translation. 2003-12-15 Michele Schaeuble * added german translation. 2003-12-14 Aurelien Jacobs * alsa updated ALSA to 1.0.0rc2. 2003-12-11 Aurelien Jacobs * updated to MPlayer 1.0pre3. * updated to busybox 1.00-pre4. 2003-12-11 rheve * added animax remote support. 2003-12-04 Aurelien Jacobs * updated to linux-2.4.23. * added PXE boot support. 2003-11-27 Aurelien Jacobs * added NFS support. 2003-11-23 Kiril Jovchev * added bulgarian translation. 2003-11-22 Benjamin Zores * added experimental DirectFB support. 2003-11-12 Cristi S * added romanian translation. 2003-10-19 Benjamin Zores * added new halloween theme for 0.95 release. 2003-10-16 Aurelien Jacobs * updated MPlayer to 1.0pre2. 2003-10-16 Guillaume Roche * added menu's files filter. 2003-09-28 Benjamin Zores * added the Win32 version of the generator. 2003-09-23 Aurelien Jacobs * added autoplay. 2003-09-15 laclasse * added creative PC-DVD remote support. 2003-09-15 freddy ARNAULX * added sony RM-S6 remote support. 2003-09-10 Benjamin Zores * replaced oftpd by bftpd. 2003-09-06 Aurelien Jacobs * updated to linux 2.4.22. * updated to uClibc 0.9.20. * updated to MPlayer 1.0pre1. 2003-09-02 Benjamin Zores * replace OSS sound drivers by ALSA ones. 2003-08-30 Aurelien Jacobs * added genext2fs to be able to build the GeeXboX without being root. 2003-08-29 Aurelien Jacobs * added XCD support. 2003-08-25 Benjamin Zores * upgraded Samba to 3.0rc1 with WinXP shares support. * set resolution to 800x600 to fix some TV-Out bug with DVD playback. 2003-08-24 ClycioC * added brasilian portuguese translation. 2003-08-23 Aurelien Jacobs * updated MPlayer to the CVS version. 2003-08-21 Nikolas Garofil * added dutch translation. 2003-08-21 Benjamin Zores * added ftp server. 2003-08-18 kim * added finnish translation. 2003-08-14 Benjamin Zores * added zlib library to read files with compressed headers. 2003-08-13 kim * added swedish translation. 2003-08-12 c0p0n * improved spanish translation. 2003-08-09 zarta * added spanish translation. 2003-08-02 Aurelien Jacobs * fixed a bug which prevented to play file whose name contain a quote. 2003-07-30 Aurelien Jacobs * installator is now available directly from the GeeXboX cd, by typing install at boot prompt. 2003-07-29 Aurelien Jacobs * updated busybox to 1.00-pre1. * added DHCP network auto-configuration. 2003-07-28 Eva Mikulcikova * added czech and slovak translation. 2003-07-28 Aurelien Jacobs * added lirc_serial module to support homemade receiver. 2003-07-22 Aurelien Jacobs * updated samba to 3.0.0beta3. * added autodetection of all the shares on the network. 2003-07-21 Benjamin Zores / Mickaël Bugnier * added new theme: movies. 2003-07-20 Benjamin Zores * added Samba Network Shares support. 2003-07-18 Aurelien Jacobs * merged rp9codecs and dmocodecs into extralite to use the new MPlayer upstream binary codecs package. 2003-07-17 Plom * added leadtek tv2000 remote support. 2003-07-15 Benjamin Zores * replace kernel modules support by build-in drivers. * added support for Ethernet network cards. 2003-07-15 Andrighetto Riccardo * added Italian langage support for menu and help files. 2003-07-13 Aurelien Jacobs * added the installator version. 2003-07-04 Benjamin Zores * replace SysLinux by IsoLinux to avoid floppy emulation. 2003-07-02 Aurelien Jacobs * disabled many unused video filters in MPlayer. 2003-06-29 Aurelien Jacobs * added runtime subtitle file selection. 2003-06-25 Aurelien Jacobs * new public release (version 0.90-3) 2003-06-24 Aurelien Jacobs * tested and improved ATI Remote Wonder support. 2003-06-22 Hervé Urbain * added support for Realmagic remote controller. 2003-06-22 Aurelien Jacobs * better playtree interface (Jump to menu). 2003-06-19 Aurelien Jacobs * added runtime DVD subtitle selection. 2003-06-18 Aurelien Jacobs * added rescan-scsi-bus to correctly handle firewire devices. 2003-06-18 Serial Cleaner * added hauppauge remote support. 2003-06-17 Aurelien Jacobs * added ATI Remote Wonder support (not tested at all). * added runtime audio channel selection. 2003-06-15 Aurelien Jacobs * MPlayer menu now respond to all commands. 2003-06-14 Aurelien Jacobs * updated linux up to version 2.4.21. 2003-06-12 Hervé Urbain * added support for Logitech remote controller. 2003-06-12 Benjamin Zores/Aurelien Jacobs * more classical font for subtitles. 2003-06-11 Aurelien Jacobs * allowed on the fly aspect change. 2003-06-10 Aurelien Jacobs * added patch to remove some encoding parts of libavcodec. 2003-06-09 Aurelien Jacobs * added the generator version (win32 generator still not usable). 2003-06-08 Benjamin Zores * added Windows Media 9 codecs support. 2003-06-07 Benjamin Zores * added patch to use cyberblade's cards under vidix when using OverScan TV-Out's mode on EPIA 800. 2003-06-06 Aurelien Jacobs * reverted to an older acpi patch. * added patch for displaying I420 streams under vidix with radeon cards 2003-06-04 Serial Cleaner * added setcd to reduce CD drives speed. 2003-06-03 Aurelien Jacobs * added patch for displaying I420 streams under vidix with mga cards. 2003-06-03 Benjamin Zores * added RealVideo RV 20/30/40 codecs support. * added RealAudio Sipro/Cook/ATRAC3 codecs support. * added patch for displaying I420 streams under VESA mode. * added patch for displaying I420 streams under vidix with mach64 cards * added locales for easy langage change. 2003-06-02 Aurelien Jacobs * integreted iscd for better CD drives detection. 2003-05-29 Aurelien Jacobs * changed the stop/eject/quit scheme. 2003-05-28 Aurelien Jacobs * new public release (version 0.90-2) 2003-05-27 Benjamin Zores * added S3 Savage chipset TV-Out support. 2003-05-25 Aurelien Jacobs * changed mountpoints naming. * added support for SCSI/USB/firewire disks (no hotplug). 2003-05-22 Aurelien Jacobs * added some patches to allow compilation with gcc 3.3. * added some adaptec scsi support. 2003-05-21 Aurelien Jacobs * added firewire support. 2003-05-20 Aurelien Jacobs * merged the normal and acpi versions. 2003-05-19 Aurelien Jacobs * switched to 2.4.21-rc2 kernel (to support EPIA M9000 soundcard). * added USB keyboard support. 2003-05-18 Aurelien Jacobs * modularized kernel. * patch for audigy soundcards * more soundcards support. 2003-05-16 Aurelien Jacobs * first public release (version 0.90-1) geexbox-1.1/Makefile0000644000175000017500000000102110641745504012546 0ustar benbeniso: scripts/iso burn: iso scripts/burn dist: scripts/dist fulldist: scripts/dist full generator: scripts/generator installator: scripts/installator pxe: scripts/pxe vmx: scripts/vmx build vmx-play: scripts/vmx play qemu: iso scripts/qemu exec: iso scripts/exec sum: iso generator dist fulldist scripts/sum md5sum scripts/sum sha1sum get: scripts/get clean: scripts/clean distclean: rm -rf .stamps build.* sources geexbox* .PHONY: iso burn dist fulldist generator installator exec clean distclean geexbox-1.1/DOCS/0000755000175000017500000000000010641745504011644 5ustar benbengeexbox-1.1/DOCS/MPlayer-patches.txt0000644000175000017500000000127110641745504015404 0ustar benbenPatches for MPlayer should be made so that they can be: 1) Numbered into the following broad groups: 000-049 : uClibC and general compilation-related 050-099 : VESA, VIDIX, VO-related 100-149 : ALSA-related 150-199 : Miscellaneous changes (e.g. filter types etc) 200-249 : input-related 250-299 : bg_video/OSD-related 300-349 : DVD/VCD/CDDA-related 350-399 : subtitle-related 400-449 : encoder/recorder-related 500-649 : libmenu-related 650-699 : tv-related 700-749 : dvdnav-related 2) If possible, patches that are unrelated to the previous patch should have a numeric spacing of 5 (0,5,10...) so that new patches related to an existing patch can be inserted in the sequence later if needed. geexbox-1.1/DOCS/README_cz.txt0000644000175000017500000003541010641745504014041 0ustar benben ooooo oo o o oo o M" "Mo Mo oM" M Mo oM" M oM""Mo oM""Mo "Mo" Mo"""o oM""Mo "Mo" M """M MooooMM MooooMM oMMo M "M M M oMMo "o oM M o M o oM Mo M oM M M oM Mo "MoooM"M "MooM" "MooM" M" "M M"ooo" "MooM" M" "M | O produktu | ~~~~~ GeeXboX je druh "divx box" softwaru. Jedná se o bootovací CD umožòující sledování filmù nebo poslouchání hudby. Podporuje celou øadu formátù jako avi, mpeg, divx, ogm, rm, mp3, ogg, dvd, vcd , cdda. Obsahuje také podporu IR dálkových ovladaèù a TV výstup na urèitých typech grafických karet. Tato distribuce obsahuje nástroje potøebné k vytvoøení vlastního GeexboX iso souboru. GeeXboX is a kind of "divx box" software. In fact, it is a stand-alone boot CD which allows you to watch movies or listen to music. It supports many formats, such as avi, mpeg, divx, ogm, rm, mp3, ogg, dvd, vcd and cdda. It also supports some IR remote controllers and TV-Out for some graphic cards. This archive contain the needed scripts to rebuild an iso image of the GeeXboX. | Požadavky na systém | ~~~~~~~~~~~~ Pro vytvoøení GeeXboX iso souboru potøebujete jedno z následujících: - GNU/Linux systém s mkisofs a mkzftree. - MAC OS X systém s mkisofs a mkzftree. - MS Windows systém. K instalaci GeeXboX potøebujete: - GNU/Linux systém s syslinux. Pro vytvoøení GeeXboXu jsou zapotøebí následující standardní nástroje: - funkèní GNU/Linux systém. - gcc C compiler. - GNU make - patch command. - nasm assembler. - bzip2 a gzip. - mkfs.ext2 a mkfs.vfat - wget download tool (není zapotøebí pokud máte plnou verzi GeeXboX balíèku). - mkisofs a mkzftree pro vytvoøení iso souboru. - mkzftree pro komprimaci souborù v iso souboru. - cdrecord (pro vypálení iso souboru). A také pøibližnì 500 MB volného diskového prosoru. | Vlastní nastavení | ~~~~~~~~~~~~~~~ Pokud je GeeXboX nainstalován na pevný disk nebo generován je velice jednoduché vytvoøit osobní nastavení. Mùžete pøidat další kodeky jako napøíklad rv9 nebo wmv9 pouhým nakopírováním do adresáøe GEEXBOX/codecs. Tyto kodeky mùžete nalézt v balíècích na http://www.geexbox.org/releases/geexbox-extra-codecs-nonfree.tar.gz Dále upravit velké množství nastavení editací textových konfiguraèních souborù. * Jazyky: Mùžete zvolit preferovaný jazyk nabídky následujícími zpùsoby: - uživatelé GNU/Linux: Pøed spuštìním editujte øádek "MENU_LANG=en" skriptu generator.sh na váš preferovaný jazyk napø "MENU_LANG=cz" - Uživatelé Microsoft Windows : Pøi spuštìní generátoru vyberte v rozbalovací nabídce požadovaný jazyk. Poznámka : Toto nemá vliv na volbu jazyka v DVD (více v sekci o MPlayeru ). Pro seznam podporovaných jazykù nahlédnìte do adresáøe "language". Pokud není Váš jazyk v nabídce mùžete jej vytvoøit pøeložením již existujících souborù menu language/menu_LANG.conf a language/help_LANG.txt, a pøidáním LANG do language/lang.conf. * MPlayer : Zde mùžete provádìt nejvíce nastavení a customizací. Nastavení se provádìjí pomocí souboru packages/MPlayer/mplayer.conf. Pravdìpodobnì budete chtít zmìnit hodnoty jako napø. velikost OSD fontu. Mùžete pøidat další parametry jako napø. výchozí jazyk pro DVD (eg: alang=cz,en). Nejlepším místem pro získání parametrù je manuál MPlayeru. Uživatelé linuxu (man -l build/MPlayer-*/DOCS/mplayer.1). Mùžete také nahlédnout na dokumentaci ( build/MPlayer-*/DOCS nebo na http://mplayerhq.hu/DOCS/). Dalším souborem kde je dobré provádìt úpravy je packages/MPlayer/menu.conf. Mùžete odebrat volby, které nepotøebujete nebo jej pøeložit do vašeho jazyka. Posledním souborem doporuèeným k editaci je packages/MPlayer/build který obsahuje výbìr možností MPlayeru. * tv výstup : TV výstu je dosažen s pomocí drobných aplikací uršených pro dané typy grafických karet V souèasné dobì používáme atitvout pro karty ATI, s3switch pro karty S3 a nvtv pro karty nVidia (možná i karty intel i810 a karty 3dfx cards). Nastavení tìchto pomocných programù je provedeno v config/tvout. Tam mùžete nastavi Váš TV standard (pal, ntsc...) a nastavit specielní volby pro nvtv. Zde mùžete také definovat pomìr stran (napø. 4:3 nebo 16:9) toho docílíte parametrem: TVOUT_ASPECT="4:3" Tento parametr bude použit pro oba (TVOut i klasický (CRT/TFT)) výstupy. V pøípadì že máte nestandardní monitor (Wide screen nebo videoprojektor) ùžete nastavit požadovanou výšku/šíøku stejnì jako obnovovací frekvenci. Parametry nastavujeme v souboru /etc/mplayer/mplayer.conf . Výchozí hodnoty jsou uvedeny níže (odkomentujte øádky u frekvencí pokud je chcete použít) : screenw=800 screenh=600 #monitor-hfreq=31.5k-50k #monitor-vfreq=50-90 * Lirc : Mùžete vybrat jeden z podporovaných typù dálkových ovladaèù editací souboru GEEXBOX/etc/remote. Dbejte na sprývný výbìr pøijímacího zaøízení v tomtéž souboru Pokud chcete zbìnit pøiøazení tlaèítek Vašeho ovladaèe podívejte se do souboru GEEXBOX/etc/lirc/lircrc_REMOTE. * Sí : Nastavení sítì se provádí v souboru GEEXBOX/etc/network. Zde mùžete nastavit IP adresu pro GeeXboX (výchozí nastavení je použít DHCP a pohud proces selže, je nastavena adresa 192.168.0.54. Lze zde také nastavit uživatelské jméno a heslo pro pøístup ke sdíleným složkám systému windows (výchozí nastavení se pøipojí pouze k anonymním sdílením). Parametry pro NFS se nastavují v souboru GEEXBOX/etc/nfs. * wifi : GeeXboX se pokusí automaticky zjistit síové nastavení. Pokud máte v systému klasickou NIC a WiFi kartu pouze poslední v øadì bude nastavena. Pro pøesné nastavení vyhovující Vašemu prostøedí musíte upravit soubor /etc/network. Následující øádky se týkají konfigurace WiFi : * PHY_TYPE="auto" # Network physical type (auto|ethernet|wifi) * WIFI_MODE="managed" # Wifi working mode (managed|ad-hoc) * WIFI_WEP="" # Wifi WEP key * WIFI_ESSID="any" # Wifi SSID Toto by mìlo postaèovat pro nastavení. Mùžete zvolit autodetekci nebo dokonce zvolit používání pouze WiFi nebo ethernetu. Stejným zpùsobem lze vybrat typ WiFi módu mezi managed a ad-hocvèetnì nastavení WEP klíèe a SSID. * gateway : GeeXboX podporuje pøístup na sí internet. Pokud máte na síti dostupné internetové pøipojení mùžete ho sdílet pro GeeXBox použitím routeru nebo brány. Pro tuto možnost editujte IP adresu brány v souboru /etc/network file. * GATEWAY="" # IP adresa brány ("" pro DHCP nebo žádný pøístup na internet) * nastavení TV : GeeXboX umožòuje použití TV tunerù. Systém se snaží rozpoznat jaký televizní tuner máte. Mùžete pøeskoèit autodetekci vepsáním parametrù Vašeho tuneru v /etc/tvcard následujícím zpùsobem : #TV CARD/TUNER Model (AUTO pro autodetekci nebo zadejte hodnoty z následujících odkazù) #http://www.linuxhq.com/kernel/v2.6/2/Documentation/video4linux/CARDLIST.bttv #http://www.linuxhq.com/kernel/v2.6/2/Documentation/video4linux/CARDLIST.tuner TV_CARD=AUTO TV_TUNER=AUTO TVIN_STANDARD=pal Nechte parametr AUTO pokud si pøejete aby se systém pokusil rozpoznat Vaši kartu, nebo jej nahraïte èíslem Vaší karty v souladu z odkaz uvedenými výše. Pozor v pøípadì že nepoužijete parametr AUTO musíte znát pøesný typ Vaší karty!. Pokud máte nastaveno mìli by jste být schopni pøijímat TV signáls (Composite a S-VHS) na vaší TV kartì. Stejnì jako sledovat televizní vysílání. Pro nalazení programù muzíte zadat region a frekvenci kanálu, který chcete sledovat. To lze provést v souboru /etc/tvcard : # TV programy # Syntaxe : CHAN="Frekvence:Název programu" # Ukázka : # CHAN="29:France 2" # CHAN="K08:Canal +" # TV Channels List # Available : france, europe-east, europe-west, us-bcast, us-cable CHANLIST=france Jednotlivé programy by se mìli objevit v základní nabídce. * audio nastavení : GeeXboX podporuje analogový i digitální audio výstup pøes klasický JACK nebo RCA SPDIF. Výchozí výstup je nastavený analogový. Tuto hodnotu mùžete zmìnit editací souboru /etc/audio : # Output using SPDIF (yes/no), otherwise ANALOG output SPDIF=no Pamatujte, že musíte nastavit SPDIF pokud chcete zvukovou kartu pøipojit k externímu zesilovaèi pro dekódování AC3/DTS stop. * DXR3/Hollywood+ karty : Uživatelé s tímto druhem hardware ani nemusí mít video a zvukovou kartu k používání GeeXboXu. Ve reálu lze použít pouze TV out s tìmito kartami. Možná bude zapotøebí nastavit požadovanou normu (PAL/NTSC) v souboru /etc/tvout fstejnì jako audio výstup (Analog nebo SPDIF) v /etc/audio. | Generování | ~~~~~~~~~~ Nejprve si prosím pøeètìte sekci o nastavení viz výše. Potom jednoduše vygenerujte iso soubor v Linuxu spuštìním skriptu ./generator.sh nebo ve windows aplikací generator.exe | Instalace | ~~~~~~~~~~~~ K instalaci je zapotøebí vytvoøit diskový oddíl FAT16 s alespoò 16MB volného místa. Pak je možné nainstalovat GeeXboX pod linuxem spuštìním skriptu ./installator.sh S následným zodpovìzením všech nastavujících dotazù. Dbejte zvýšené opatrnosti v prùbìhu instalace, radìji pøerušte instalaci pokud si nejste jisti co dìláte. | PXE Bootování | ~~~~~~~~ GeeXboX je schopný bootovat ze sítì na bezdiskové stanici. K dosažení tohoto stavu budete potøebovat: - DHCP server - TFTP server - NFS server - PXE kompatibilní stanici :-) Nejprve je nutné nakonfigurovat Váš DHCP server pro zasílání PXE bootovacích informací Zde je ukázka s isc dhcp: allow booting; allow bootp; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.128 192.168.0.192; option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; next-server 192.168.0.1; filename "/tftpboot/GEEXBOX/boot/pxelinux.0"; } Další nastavení je adresa TFTP serveru. Nakonfigurujte TFTP server na adresáø /tftpboot a nakopírujte všechny GeeXboX soubory do tohoto adresáøe. Napøíklad mùžete nakopírovat obsah GeeXboX CD z linuxu v módu TRANSPARENT DECOMPRESSION ! pro ovìøení nahlédnìte do souboru sbin/init a zkontrolujte že je struktura normální. Pokud jste vytvoøili GeeXboX ze zrdrojových souborù mùžete strukturu GeeXboXu vygenerovat pomocí If you've built the GeeXboX yourself from sources, you can also generate make pxe. Poté mùžete editovat soubor /tftpboot/GEEXBOX/boot/pxelinux.cfg/default pro nastavení nfsroot na správnou NFS cestu pro GEEXBOX strukturu. Nakonec nastavte NFS pro export GEEXBOX struktury v /etc/exports zhruba tímto zpùsobem : /tftpboot/GEEXBOX (ro) a /etc/hosts.allow asi takhle: ALL: ALL To by mìlo být vše nyní mùžete zkusit nabootovat a uvidíte co se stane. | Vytváøení ISO | ~~~~~~~~ Nejprve prosím proètìte èást o nastavení. Potom vytvoøte iso pomocí: make Nebo soubor rovnou vypalte : make burn Když jste hotovi mùžete GeeXboX stukturu smazat pro úsporu místa na disku: make clean Nebo smazat všechny soubory a zdroje: make distclean Existuje více nastavujících pøíkazù pokud se chcete v GeeXboXu troch vrtat: scripts/get package # stáhnout balíèek scripts/unpack package # rozbalit a pøipravit balíèek scripts/build package # vytvoøí balíèek scripts/install package # instalovat balíèek s $INSTALL prefix scripts/clean package # vymazat adresáøovou strukturu balíèku make exec # launch directly the GeeXboX in a jail # WARNING: this is a highly experimental feature # use it at your own risks. Pokud jste vytvoøili upravenou verzi GeeXboXu mùžete vytvoøit tar.bz2 pomocí : make dist nebo plný tar (se všemi zdrojovými soubory) pomocí : make fulldist nebo geexbox generátor pomocí : make generator nebo geexbox instalátor pomocí : make installator nebo pxe strukturu pomocí : make pxe | Konfigurace | ~~~~~~~~~~~~~ * Globální nastavení : Je nejdùležitìjším krokem pøed samotným vytváøením GeeXboXu. Je uloženo v souboru config/options, a jeho syntaxe je srozumitelná. Mùžete zvolit typ Vašeho procesoru, téma, a zda chcete používat True Type fonty nebo ne. Také mùžete upravit nastavení Vaší vypalovaèky aby bylo možné iso rovnou vypálit. * Linux : Tohle je klasické nastavení Linuxu (packages/linux/linux.conf). Lze je editovat ružnì nebo spustit skript scripts/unpack linux a poté make menuconfig -C build/linux-* (pøípadnì použít Vámi preferovanou metodu namísto menuconfig). Zazálohujte /linux-*/.config do packages/linux/linux.conf. * Lirc : Lirc umožòuje ovládání GeeXboXu pomocí dálkového ovladaèe. Nejprve se pokuste nalézt soubor s vaším typem ovladaèe v build/lirc-*/remotes (po provedení scripts/unpack lirc) a pøidejte jej do packages/lirc/install. Potom vyberte zaøízení (výchozí je /dev/ttyS0 (COM1)) a ovladaè lirc a uložte jej do souboru packages/lirc/lircd_$REMOTE. Poté zvolte nastavení tlaèítek v souboru packages/lirc/lircrc_$REMOTE. Pro každé pøiøazení tlaèítka musíte vybrat jeho jméno ze souboru a zasociovat ho k urèité akci. Tou mùže být nìkterá z akcí MPlayeru (ty naleznete v souboru build/MPlayer-*/DOCS/documentation.html#commands). | Úpravy | ~~~~~~~ Jako první je dobré podívat se na inicializaèní skript. Ve skuteènosti se jedná o skripty dva. První je v packages/initrd/linuxrc ale ten pravdìpodobnì nebudete chtít upravovat. Druhý je config/init a v nìm se dá upravit nìkolik možností nastavení. Další co by Vás mohlo zajímat je vytvoøení nového balíèku. To není nic jiného než spousta skriptù které sledují urèitá pravidla. Všechny skripty musejí být ve stejném adresáøi jako je program který chcete "pøibalit" Zde je seznam skriptù které mùžete vytvoøit : - url : seznam adres kde lze stáhnout zdrojové soubory programù. - unpack : co se provede po rozbalení zdrojù, ùžete napøíklad upravit konfiguraèní soubory, netýká se aplikací záplat. - need_build : použití pokud balíèek již byl sestaven, a pro ujištìní že nepotøebuje reebuilt. Dojde k odstranìní souboru .stamps/"package name"/build v pøípadì že rebuild není nutný. - build : všechny nezbytné kroky k vytvoøení programu. - install : všechny nezbytné kroky k instalaci programu. Zaèátek instalace by mìl být $INSTALL. Když je soubor z url adresy pojmenován záplata-program_name-...je automaticky záplata aplikována na rozbalené zdrojové soubory programu. Mìli by jste pamatovat že software na kterém GeeXboX bìží musí být zkompilován s uClibc gcc wrapper. Nakonec, nejlepší cesta k vytvoøení balíèku je podívat s edo již hotových. | Licenèní podmínky | ~~~~~~~ Všechny programy použité v GeeXboXu jsou chránìny jejich licencí. Všechny jsou volnì šiøitelné a vìtšina z nich podléhá GNU licencování. GeeXboX jako takový. myšleno skripty použité pro jeho vytvoøení spadají pod GNU. geexbox-1.1/DOCS/README_de.txt0000644000175000017500000003767410641745504014033 0ustar benben ooooo oo o o oo o M" "Mo Mo oM" M Mo oM" M oM""Mo oM""Mo "Mo" Mo"""o oM""Mo "Mo" M """M MooooMM MooooMM oMMo M "M M M oMMo "o oM M o M o oM Mo M oM M M oM Mo "MoooM"M "MooM" "MooM" M" "M M"ooo" "MooM" M" "M | ÜBER GEEXBOX | ~~~~~~~~~~~~ GeeXboX ist eine Art "Divx Out-Of-The-Box" Software. Genaugenommen ist es eine bootfähige CD, welche es erlaubt, Filme anzuschauen, Musik zu hören und Bilder zu betrachten. Es unterstützt viele Formate wie zum Beispiel avi, mpeg, divx, ogm, rm, mp3, ogg, dvd, vcd, jpg, bmp, cdda... GeeXboX unterstützt zudem einige Infrarot-Fernbedienungen und den TV-Ausgang einiger Grafikkarten. Dieses Archiv enthält die nötigen Scripte um ein eigenes ISO-Image von GeeXboX zu erstellen. | VORAUSSETZUNGEN | ~~~~~~~~~~~~~~~ Um ein GeeXboX ISO zu erstellen, wird eines der folgenden Systeme benötigt: - GNU/Linux mit mkisofs und mkzftree. - MAC OS X mit mkisofs und mkzftree. - Windows. Um GeeXboX zu installieren benötigen Sie: - GNU/Linux mit syslinux. Um Ihre eigene GeeXboX zu erstellen benötigen Sie einige "klassische" Werkzeuge: - ein funktionierendes GNU/Linux System. - denn gcc C Compiler. - GNU make - patch. - den nasm Assembler. - bzip2 und gzip. - mkfs.ext2 und mkfs.vfat - wget Kommandozeilen-Downloadtool(wird nicht für das komplette GeeXboX Paket benötigt). - mkisofs und mkzftree um das ISO-Image zu erstellen und zu komprimieren. - cdrecord (um das ISO-Image zu brennen). Zudem benötigen Sie mindestens 500 MB freien Speicher auf Ihrer Festplatte. | PERSONALISIERUNG | ~~~~~~~~~~~~~~~~ Mit dem Generator ist es sehr einfach GeeXboX seinen persönlichen Bedürfnissen anzupassen. Sie können zum Beispiel die Unterstützung einiger proprietäre Codecs wie rv9 oder wmv9 hinzufügen, indem Sie die Codecs einfach in das Verzeichnis GEEXBOX/codecs kopieren. Diese Codecs finden Sie im Paket, welches unter http://www.geexbox.org/releases/geexbox-extra-codecs-nonfree.tar.gz erhältlich ist. Sie können aber auch viele andere Einstellungen verändern, indem Sie einfach einige Text-Dateien editieren: * Sprache: Sie können die Menu-Sprache ändern, indem Sie die Datei GEEXBOX/etc/lang editieren. Diese Einstellung hat keinen Effekt auf die Sprache der DVD (siehe Kapitel MPlayer). Falls Ihre Sprache nicht existiert, können Sie das Menu übersetzen, indem Sie die Dateien GEEXBOX/etc/mplayer/menu_LANG.conf und GEEXBOX/usr/share/mplayer/help_LANG.txt bearbeiten. * MPlayer: Dies ist der Ort, an dem Sie die meisten Einstellungen und Veränderungen vornehmen können. Die Einstellungen sind in der Datei packages/MPlayer/mplayer.conf enthalten. Dort können viele Optionen geändert werden, wie z.B. die Schriftgröße des Onscreen-Menüs (subfont-text-scale). Sie können aber auch viele andere Einstellungen, wie zum Beispiel die DVD Standard-Sprache verändern (zum Beispiel: alang=fr,en). Die beste Übersicht über alle Einstellung finden Linux-Benutzer in der manpage (man -l build/MPlayer-*/DOCS/mplayer.1). Weitere Informationen finden Sie auch in der MPlayer Dokumentation (in build/MPlayer-*/DOCS oder unter http://mplayerhq.hu/DOCS/). Eine andere Datei, die sie vielleicht editieren wollen, ist packages/MPlayer/menu.conf. Sie können z.B. einzelne Menupunkte entfernen oder das Menü in eine beliebige Sprache übersetzen. Die letzte interessante Datei ist packages/MPlayer/build. Sie enthält die Optionen, welche für das Erstellen von MPlayer gesetzt sind. * TV-Ausgang: Das Aktivieren des TV-Ausgangs wird durch die Verwendung mehrerer kleiner Programme für die unterschiedlichen Video Karten Hersteller erreicht. Wir verwenden im Moment atitvout für ATI Karten, s3switch für S3 Karten und nvtv für nVidia Karten (unterstützt zum Teil ebenfalls Intel i810 und 3dfx Karten). Die Einstellungen dieser Programme werden in der Datei config/tvout vorgenommen. Sie können den TV-Standard wählen (PAL, NTSC) und einige spezifische Optionen für nvtv vornehmen. * Lirc: Sie können eine der unterstützten Fernbedienungen wählen, indem Sie die Datei GEEXBOX/etc/remote editieren. Falls Sie eine ATI Remote Wonder verwenden (welche nicht von Lirc unterstützt wird), müssen Sie nichts verändern, da diese standardmässig von GeeXboX unterstützt wird. Falls Sie die Tastenbelegung ihrer Fernbedienung verändern möchten, so editieren Sie die Datei GEEXBOX/etc/lirc/lircrc_REMOTE. * Netzwerk: Die Netzwerkeinstellungen werden in der Datei GEEXBOX/etc/network vorgenommen. Hier können Sie beispielsweise die IP-Adresse festlegen (Standardmässig wird DHCP verwendet und falls dies nicht funktioniert, wird die IP 192.168.0.54 verwendet). Sie können aber auch einen Login-Name und eine Passwort festlegen, welches für die Windows-Freigaben verwendet wird (standardmässig wird nur zu anonymen Freigaben verbunden). Ebenso können NFS mounts in der Datei GEEXBOX/etc/nfs eingetragen werden. * WiFi: In der Default-Einstellung versucht GeeXboX automatisch ihre Netzwerkein- stellungen zu erkennen. Wenn sie einen traditionellen NIC und eine WiFi-Karte haben, wird nur letztere eingerichtet. Unter Umständen müssen sie die Datei /etc/network editieren, um sie an ihre Netzwerkeinstellungen anzupassen. Dort finden sie 4 Zeilen die Wireless Lan Karten betreffen: * PHY_TYPE="auto" # Physikalischer Netzwerktyp (auto|ethernet|wifi) * WIFI_MODE="managed" # Wifi Betreibsmodus (managed|ad-hoc) * WIFI_WEP="" # Wifi WEP Schlüssel * WIFI_ESSID="any" # Wifi SSID Hier können sie die meisten der nötigen Einstellungen vornehmen. Sie können die Autoerkennung eingeschalten lassen oder sogar die Verwendung von Ethernet oder WiFi erzwingen. Genauso können sie hier zwischen den Betreibsmodi "managed" oder "ad-hoc" wählen, sowie ihren WEP Schlüssel und SSID einstellen. * Internetzugang (Gateway): GeeXboX unterstützt auch einen Internetzugang. Wenn sie einen Verbindung zum Internet haben, können sie sich diese mit ihrer GeeXboX durch die Verwendung eines Routers oder eines Gateways teilen. Dazu müssen sie nur die IP-Adresse des Gateways in der Datei /etc/network eintragen * GATEWAY="yourIP" # Gateway IP ("" für DHCP oder keine Internetverbindung) * TV-Konfiguration: GeeXboX unterstützt TV-Input und Tuner und versucht die Karte wie den Tuner automatisch zu erkennen. Sie können die Autoerkennung auch umgehen und selbst die richtigen Einstellungen in der Datei /etc/tvcard wie folgend beschrieben vornehmen: #TV CARD/TUNER Model (AUTO für automatische Erkennung, weitere Infos in den Links) #http://www.linuxhq.com/kernel/v2.6/2/Documentation/video4linux/CARDLIST.bttv #http://www.linuxhq.com/kernel/v2.6/2/Documentation/video4linux/CARDLIST.tuner TV_CARD=AUTO TV_TUNER=AUTO Bitte lassen sie die Einträge auf "AUTO" wenn sie die automatische Erkennung verwenden wollen. Ansonsten setzen sie die richtige Zahl für ihre Karte und ihren Tuner-Typ (siehe obenstehende Links). VORSICHT: um selber die richtigen Einstellungen vorzunehmen. müssen sie die exakten Referenzzahlen ihrer Hardware kennen!!! Wenn das erledigt ist, sollte es ihnen möglich sein den TV-Eingang (Composite und S-VHS) ihrer Karte zu nutzen. Auf dieselbe Art und Weise können sie den TV-Tuner benutzen. Dafür müssen sie ihre Region und die Frequenzen der TV Kanäle in der Datei /etc/tvcard eintragen: # TV Channels # Syntax : CHAN="Channel Frequency:Channel Title" # Example : # CHAN="29:France 2" # CHAN="K08:Canal +" # TV Channels List # Available : france, europe-east, europe-west, us-bcast, us-cable CHANLIST=france Bitte seien sie vorsichtig beim editieren der Kanäle. Benutzen sie genau dieselbe Syntax wie oben beschrieben, dann sind ihre TV Kanäle im Hauptmenü verfügbar. | ERSTELLEN EINER ISO-DATEI | ~~~~~~~~~~~~~~~~~~~~~~~~~ Bitte widmen Sie einen Augenblick der oben beschriebenen Personalisierung ihrer GeeXboX bevor Sie mit der Erstellung einer ISO-Datei beginnen. Anschliessend können Sie unter Linux die ISO-Datei mit dem folgenden Kommando erstellen: ./generator.sh oder unter Windows mit dem Starten der Datei generator.exe | INSTALLATION | ~~~~~~~~~~~~ Als erstes benötigen Sie eine FAT16 Partition mit ungefähr 16 MB freiem Speicherplatz. Dann können Sie die Installation unter Linux starten, indem Sie folgendes Kommando eingeben: ./installator.sh Beantworten Sie anschliessend alle Fragen. Seien Sie bei diesem Vorgang sehr vorsichtig! Lesen Sie jede Frage zweimal und unterbrechen Sie die Installation wenn Sie eine Frage nicht verstehen. | PXE BOOT | ~~~~~~~~ Ja, GeeXboX ist fähig über ein Netzwerk ohne Festplatte zu starten! Um dies zu erreichen benötigen Sie folgendes: - einen DHCP Server - einen TFTP Server - einen NFS Server - einen PXE fähiger Computer :-) Zuerst müssen Sie den DHCP Server konfigurieren, damit dieser die PXE Boot Informationen schickt. Im Folgenden eine Beispiel mit isc dhcp: allow booting; allow bootp; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.128 192.168.0.192; option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; next-server 192.168.0.1; filename "/tftpboot/GEEXBOX/boot/pxelinux.0"; } Die next-server Option ist die Adresse des TFTP Servers. Anschliessend konfigurieren Sie Ihren TFTP Server (wie zum Beispiel atftpd) so, damit er das Verzeichnis /tftpboot zur Verfügung stellt. Das Verzeichnis /tftpboot muss einen vollständigen GEEXBOX Stammbaum enthalten. Sie können dazu zum Beispiel den Inhalt eine GeeXboX CD von Linux aus MIT DER AKTIVIERTEN TRANSPARENTEN DEKOMPRESSION DER CDROM! (um dies zu überprüfen schauen Sie auf den Inhalt der sbin/init im GeeXboX Dateibaum und prüfen, ob diese Datei keinen Müll enthält). Falls Sie GeeXboX selber aus den Sourcen kompiliert haben, so können Sie einen Dateibaum ganz einfach mit make pxe erstellen. Danach sollten Sie die Datei /tftpboot/GEEXBOX/boot/pxelinux.cfg/default editieren, so dass nfsroot zum richtigen NFS Pfad des GEEXBOX Dateibaumes zeigt. Am Schluss müssen Sie noch NFS so konfigurieren, dass der GEEXBOX Dateibaum exportiert wird. Dies erreichen Sie, indem Sie der Datei /etc/exports in etwa folgendes hinzufügen: /tftpboot/GEEXBOX (ro) und der Datei /etc/hosts.allow folgendes hinzufügen: ALL: ALL Damit ist die Konfiguration abgeschlossen. Starten Sie den PXE Computer und schauen Sie was passiert. | KOMPILIEREN | ~~~~~~~~~~~ Bevor Sie beginnen, lesen Sie bitte das anschliessende Konfigurations-Kapitel (mindestens die allgemeinen Einstellungen). Anschliessen können Sie das ISO-Image einfach mit folgendem Kommando erstellen: make oder Sie brennen das ISO-Image sogleich: make burn Wenn Sie fertig sind, können Sie mehr freien Speicherplatz schaffen, indem Sie nicht mehr benötigte Dateien löschen: make clean oder alle Dateien inklusive der heruntergeladenen Dateien löschen: make distclean Es gibt noch einige Kommandos, die für fortgeschrittene Benutzer gedacht sind: scripts/get package # lädt ein Paket herunter scripts/unpack package # entpackt und bereitet das Paket vor scripts/build package # kompliert das Paket scripts/install package # installiert das Paket nach $INSTALL scripts/clean package # reinigt den Dateibaum des Paketes make exec # startet GeeXboX in einem Käfig # WARNUNG: Dies ist eine experimentelle Funktion, # Benutzung auf eigene Gefahr. Falls Sie eine veränderte Version von GeeXboX erstellt haben, so können Sie sehr einfach ein tar.bz2 Archiv davon erstellen: make dist oder ein vollständiges Archiv (inklusive allen Sourcen): make fulldist oder einen GeeXboX Generator mit: make generator oder eine GeeXboX Installationsroutine mit: make installator oder einen PXE fähigen Baum: make pxe | KONFIGURATION | ~~~~~~~~~~~~~ * Allgemeine Einstellungen: Dies ist der erste Schritt, den Sie vor dem Kompilieren von GeeXboX machen sollten. Alle Einstellungen stehen in der Datei config/options, welche sich selbsterklärend sein sollte. Dort können Sie die CPU-Familie und den Theme wählen und ob sie TrueType Schriften wollen oder nicht. Sie sollten zudem die Konfiguration des CD-Brenners anpassen, sofern sie die ISO-Datei direkt brennen wollen. * Linux : Dies ist die klassische Linux-Konfiguration (packages/linux/linux.conf). Sie können diese Datei entweder von Hand oder mit einem scripts/unpack linux und einem anschliessenden make menuconfig -C build/linux-* (oder ihrer bevorzugten Methode anstatt menuconfig) anpassen. Danach sollten Sie Ihre Konfigurationsdatei build/linux-*/.config nach packages/linux/linux.conf sichern. * Lirc : Lirc erlaubt Ihnen, GeeXboX mit einer Fernbedienung zu bedienen. Zuerst müssen Sie die zur ihrer Fernbedienung passende Datei aus build/lirc-*/remotes (nachdem Sie ein scripts/unpack lirc gemacht haben) auswählen und diese zur Datei packages/lirc/install hinzufügen. Danach sollten Sie die Gerätedatei (Standard ist /dev/ttyS0 (COM1)) und den Lirc Treiber auswählen und dies in die Datei packages/lirc/lircd_$REMOTE hinzufügen. Danach können Sie die Tasten in der Datei packages/lirc/lircrc_$REMOTE belegen. Für jede Belegung müssen Sie einen Knopf (entnehmen Sie die Namen der Knöpfe der Fernbedienungs-Defintion- Datei) eine passenden Belegung zuweisen. Die "Belegung" ist eine der MPlayer Aktionen (sie finden eine Liste der möglichen Aktionen in der HTML-Datei build/MPlayer-*/DOCS/documentation.html#commands). | VERÄNDERUNGEN | ~~~~~~~~~~~~~ Das Erste was Sie anschauen sollten, ist das Initialisierungs-Script. Eigentlich sind es zwei Initialisierungs-Scripte. Das Erste ist packages/initrd/linuxrc welches Sie aber wahrscheinlich nicht zu verändern brauchen. Das Zweite ist config/init, wo Sie Ihre Personalisierungen einbringen können. Das nächste was Sie interessieren könnte, ist die Erstellung eines neuen "Paketes". Ein Paket ist nur eine Reihe von Scripten, die einigen Regeln folgen müssen. Alle Scripte müssen sich in einem Verzeichnis befinden mit dem gleichen Namen wie das Programm, das Sie "packen" wollen, dieses Verzeichnis wiederum im packages Verzeichnis. Hier ist eine Liste mit den Scripten, die Sie erstellen sollten: - url: eine Liste der URL's, wo man die Programm-Sourcen herunterladen kann. - unpack: enthält, was nach dem Auspacken des Paketes gemacht wird. Zum Beispiel das Modifizieren von Konfigurations-Dateien. Dieses Script spielt jedoch keine Patches auf. - need_build: wird aufgerufen, falls das Paket schon kompiliert wurde, um sicherzugehen, dass es nicht noch einmal kompiliert werden muss. Es sollte die Datei .stamps/"package name"/build entfernen, falls das Paket nochmals kompiliert werden muss. - build: enthält alle Schritte um das Programm zu kompilieren. - install: enthält alle Schritte um das Programm installieren zu können. Das Prefix der Installtion sollte $INSTALL sein. Wenn die Datei url einen Dateinamen der Form patch-program_name-... enthält, wird der Patch automatisch auf die entpackten Sourcen aufgespielt. Beachten Sie zudem, dass Software, die auf der GeeXboX laufen soll, mit dem uClibc gcc Wrapper kompiliert werden muss. Es bleibt nur noch zu sagen, dass der beste Weg ein eigenes Paket zu erstellen der ist, einen Blick auf andere Pakete zu werfen. | LIZENZ | ~~~~~~~ Alle Programme, die von GeeXboX benutzt werden, sind durch ihre eigene Lizenz geschützt. Sie alle sind freie Software und die meisten Programme stehen unter der GNU General Public License. GeeXboX selber, gemeint sind alle Scripte die für die Komilierung benutzt werden, stehen unter der GNU General Public License. geexbox-1.1/DOCS/README_en.txt0000644000175000017500000007041610641745504014034 0ustar benben ooooo oo o o oo o M" "Mo Mo oM" M Mo oM" M oM""Mo oM""Mo "Mo" Mo"""o oM""Mo "Mo" M """M MooooMM MooooMM oMMo M "M M M oMMo "o oM M o M o oM Mo M oM M M oM Mo "MoooM"M "MooM" "MooM" M" "M M"ooo" "MooM" M" "M | ABOUT | ~~~~~ GeeXboX is a Media Center Linux distribution. In fact, it is a stand-alone boot CD which allows you to watch movies or listen to music. It supports many formats, such as avi, mpeg, divx, ogm, rm, mp3, ogg, dvd, vcd and cdda. It also supports some IR remote controllers and TV-Out for some graphic cards. This archive contains the needed scripts to rebuild an iso image of GeeXboX. | REQUIREMENTS | ~~~~~~~~~~~~ To generate a GeeXboX iso, you will need either : - a GNU/Linux system with mkisofs and mkzftree. - a MAC OS X system with mkisofs and mkzftree. - a Windows system. To build the GeeXboX, you will need some classic tools : - a working GNU/Linux system. - the gcc C compiler. - GNU make - the patch command. - the nasm assembler. - bzip2 and gzip. - the wget download tool (not needed for the full GeeXboX package). - mkisofs and mkzftree to build the iso image. - mkzftree to compress files on the iso image. - cdrecord (to burn the iso image). And also 2 GB of hard disk free space. | PERSONALIZATION | ~~~~~~~~~~~~~~~ When the GeeXboX is installed on a hard drive or generated, it is quite easy to personalize it. You can add some proprietary codecs such a rv9 or wmv9, simply by adding them in the GEEXBOX/codecs directory. You can find those codecs in the package on http://www.geexbox.org/releases/extra-codecs-nonfree.tar.gz You can also modify many options. This can be done simply by editing some text files. * Firmware auto-loader : GeeXboX supports many free drivers but unfortunately some of them may require an additionnal proprietary firmware (non-free and so not included in GeeXboX ISO) to work properly. The firmware is a binary file that is uploaded to the device (PCI or USB) when the driver is loaded. For each driver, the firmware has to be a specific file with a pre-determined name. If you have reluctant hardware that require additionnal firmware (in most of the cases, it only concerns WiFi and DVB cards), you'll need to check on the Internet for your Linux driver page to see how to check the firmware file. Most of the time, you'll get a direct download link. Sometimes, you'll need to extract it from your Windows drivers archive that was shipped with your hardware. Once you get the firmware file, simply put it into the /firmwares directory. You can put in as many firmwares as you want, and GeeXboX will automatically find them and use them with the right drivers if needed. The only thing you then have to take care is to have the good firmwares file and to generate a new ISO. Please note that you can also use the GeeXboX ISO generator to automatically grab firmwares for you. You can select all of the extra binary firmware files you want the generator to add for you. Simply note that this feature will require you to have an Internet access when using the GeeXboX generator. * MPlayer : This is where you can do most of the configuration and tweaking. The options take place in the file packages/MPlayer/config/mplayer.conf. You may want to modify options such as OSD font size (subfont-text-scale). You can also add lots of options such as DVD default language (eg: alang=fr,en). The best place to find them is the MPlayer manpage for Linux users (man -l build/MPlayer-*/DOCS/mplayer.1). You should also have a look at the MPlayer documentation (in build/MPlayer-*/DOCS or at http://www.mplayerhq.hu/DOCS/). Another file you may modify is the packages/i18n-texts/config/menu.conf. You can remove items you don't need, or you can translate it in your own language for example. Then the last file you can look at is the packages/MPlayer/build which contains the selection of options which are built into MPlayer. * TV-Out : Enabling the TV-Out is achieved with the help of multiple small programs dedicated to different video card brands. Currently we use atitvout for ATI cards, s3switch for S3 cards and nvtv for nVidia cards (and possibly intel i810 and 3dfx cards). The configuration of those programs is done in packages/tvout/config/tvout. There you can choose the TV standard you want (pal, ntsc...) and you can also modify specific options for nvtv. # TV Output Standard (ntsc/pal/secam) TVOUT_STANDARD=pal Please note that you can also define the output aspect (say 4:3 or 16:9 display) in this file through the line : TVOUT_ASPECT="4:3" This parameter will be used both for TVOut and regular (CRT/TFT) display. You can also specify the desired height/width values and your display's horizontal and vertical frequencies in case you have unusual screen like WideScreens or videoprojector. This can be done, editing the /etc/mplayer/mplayer.conf file. Default parameters are shown below (please uncomment lines related to frequency if you want to use them) : screenw=800 screenh=600 #monitor-hfreq=31.5k-50k #monitor-vfreq=50-90 * Lirc : You can choose one of the supported remote controller by editing the file GEEXBOX/etc/remote. Also take care to chose the corresponding ir receiver in the same configuration file. If you want to modify the key binding of your remote controler, look at the file GEEXBOX/etc/lirc/lircrc_REMOTE. * Network : You can configure the network in the file GEEXBOX/etc/network. There you can chose the IP address used by the GeeXboX (default is to use DHCP and if it don't work, fall back to 192.168.0.54). You can also specify a login and a password which will be used to connect to windows shares (default will only connect to anonymous shares). You can also declare some NFS mounts in GEEXBOX/etc/nfs. * WiFi : By default, GeeXboX tries to autodetect your network settings. If you have both traditionnal NIC and WiFi cards, only the latest will be setup. You may have to modify the /etc/network file in order to fit your network's settings. In this one, 4 lines are related to wireless cards : * PHY_TYPE="auto" # Network physical type (auto|ethernet|wifi) * WIFI_MODE="managed" # Wifi working mode (managed|ad-hoc) * WIFI_WEP="" # Wifi WEP key * WIFI_ESSID="any" # Wifi SSID These lines let you configure most of the settings. You can let autodetection enable or even force the use of ethernet or WiFi adapters. In the same way, this let you choose between the managed and the ad-hoc mode and let you define your WEP key and SSID. * Gateway : GeeXboX supports access to the Internet. In the case you've got a connection to the Internet, you may share it with your multimedia box, using a router or a gateway. For this, simply define the gateway IP address in the /etc/network file. * GATEWAY="" # Gateway IP ("" for DHCP or no internet connection) * DNS server : If you want to access to the Internet, GeeXboX may require a DNS server IP address. If you're not using a DHCP server that will do this job, you'll have to specify it by hand in the /etc/network file. * DNS_SERVER="" # DNS Server IP ("" for DHCP or none) * TV configuration : GeeXboX supports TV inputs and tuners. The system hardly tries to autodetect the card and the tuner. You can force the settings and skip the autodetection try. Please modify the /etc/tvcard as described : #TV CARD/TUNER Model (AUTO for autodetection or look at the following urls) #http://www.linuxhq.com/kernel/v2.6/2/Documentation/video4linux/CARDLIST.bttv #http://www.linuxhq.com/kernel/v2.6/2/Documentation/video4linux/CARDLIST.tuner TV_CARD=AUTO TV_TUNER=AUTO TVIN_STANDARD=pal Please let the AUTO parameter whether you want to keep autodetection, or replace it by the number of your card and tuner types, according to the previous URL. Please be careful : in order to force the card and tuner types, you have to know the EXACT REFERENCES of your hardware. Once done, you should be able to use the TV inputs (Composite and S-VHS) of your TV card. In the same way, you can use the tuner to watch TV. For that, you will have to define the region you belongs to and the frequency of the TV channels you want to watch. Once again, simply edit the /etc/tvcard file : # TV Channels # Syntax : CHAN="Channel Frequency:Channel Title" # Example : # CHAN="26:France 2" # CHAN="K08:Canal +" # TV Channels List # Available : france, europe-east, europe-west, us-bcast, us-cable CHANLIST=france Please be careful when editing channels and simply use the same syntax as described above and TV channels should be present in the main menu. * Audio configuration : GeeXboX supports both analog and digital audio output through regular JACK connectors or RCA SPDIF one. By default, output is set to analog. You can change this, by editing the /etc/audio file : # Output using SPDIF (yes/no), otherwise ANALOG output SPDIF=no Remember that you will need to set your output to SPDIF if you want to connect your soundcard to an external amplifier for decoding AC3/DTS streams (using passthrough mode). * Video post-processing : Post-Processing is a software way to get a smoother and more accurate render of your videos. It however consumes a lot of CPU time to magnify pictures but, as a result, it looks far better. Using MPlayer internal filters, GeeXboX lets you make h/v deblocking, deringing and auto luminance to enhance your image. By default, post-processing is disabled to avoid lagging on small configurations. You can enable it simply by editing the /etc/mplayer/mplayer.conf file : # Set Post Processing (h deblock, v deblock, dering, auto luminance) # Consumes CPU power, disabled for low configs, uncomment to enable it. #vf=pp=hb:a/vb:a/dr:a/al:a * DXR3/Hollywood+ cards : Users with this kind of hardware decompression card does NOT even need to have a video board and sound card to use GeeXboX. On the drawbacks, only the tvout connector can be used with DXR3 cards (no CRT display). You may have to set the required image norm (PAL/NTSC) in the /etc/tvout file and the kind of audio output you want to use (Analog or SPDIF) in /etc/audio. * Radio configuration : If your TV-card has built-in FM radio tuner, GeeXboX can support playing the radio. You have to modify the GEEXBOX/etc/radio file to have "RADIO=yes" if you want to use the radio. There is no hardware auto- detection, so setting this to 'yes' without a TV-card-based FM radio will put unnecessary menu items on your GeeXboX screen. The GEEXBOX/etc/radio file also has the radio station definition. There are a number of examples in the file, which simply include the radio frequency and the name of the station. Please be careful when editing channels and simply use the same syntax as the examples and the radio stations should be present in the main menu under "LISTEN RADIO". Since the radio application itself is not part of MPlayer, there is separate access to the volume. Please note that the volume that is being increased or decreased is Master volume. Before switching back to TV or video viewing, or music playing, the volume should be re-adjusted. * UPnP File Sharing : UPnP stands for Universal Plug & Play and is a network protocol aiming at providing the autodiscovery of devices and services of your Home Network. The UPnP A/V (for Audio/Video) norms defines several profiles for devices to easily share multimedia files and lets them being played. The UPnP Media Server profiles represent all of the devices that are able to share files to devices implementing the UPnP Media Player or UPnP Media Renderer profiles. The GeeXboX embeds a UPnP Control Point software that is able to auto-discover all UPnP Media Servers from your Home network and it simply mounts their contents to a dedicated mount point (/mnt/UPnP). This way, you just have to share contents using a compliant UPnP Media Server software and they'll be automatically accessible from GeeXboX. For more info about UPnP and some media servers usage, please go to http://www.geexbox.org/wiki/index.php/Accessing_to_UPnP_Contents * Network streaming : GeeXboX now gives you the possibility to add some SHOUTcast Radio/TV official playlist as easily as personal playlists (local and remote). SHOUTcast activation is set in "GEEXBOX/etc/network" config file. As SHOUTcast TV sometimes may contain pornographic and subscription-only streams, you can define a "black list" and a "white list" to allow/deny any streams you choose (default keywords for "black list" are : "adult xxx porn ESS SWCTV SWPTV Subscription"). The black/white lists are case-insensitive. "GEEXBOX/etc/netstream" config file can be set to create local and remote playlists (some examples are located in this file). "Remote playlists" refer to "Extended M3U" files. For French users only : You can get "FreeboxTV" thanks to this file, using the following process : - uncomment EXTM3U ad hoc entry. - use a GeeXboX version that have to be compiled with "LIVE555 library" support (otherwise you won't be able to decode the stream). * DVB cards : GeeXboX has a support for various types of DVB cards (Terrestrial, Cable, ATSC and Satellite) either in PCI or USB. Please note that for now, only one DVB adapter is usable at a time. Some DVB devices (especially USB ones) may require an external proprietary firmware to be loaded in the mean time as the driver to be usable. You may have a look at the LinuxTV DVB Wiki (http://linuxtv.org/wiki/index.php/Main_Page) to see if you're card requires one or not and if so, which one it is. Some firmwares can be fetched directly from the LinuxTV website (http://linuxtv.org/download/firmware/), otherwise may be included in the Windows drivers archive. See the GeeXboX firmware loader documentation to see how to get them loaded for you. For each card, the list of channels is available through the MPlayer's open menu. Nevertheless, there's no way to auto-discover these channels. Thus, adding the list of DVB channels to GeeXboX can be done in several ways : - using an existing channel list : MPlayer needs to have a working channels.conf file to use DVB. This file can be generated through the utilities provided by the dvb-apps package. Simply use a Linux box that has a DVB card configured, download the linuxtv-dvb-apps tarball from http://www.linuxtv.org/download/dvb/ , compile it and create the config file using the "scan" executable, in "zap" format (which is the default as of dvb-apps 1.1.0). For example, for a DVB-S (Satellite) card using Astra-19.2E as the provider: wget http://www.linuxtv.org/download/dvb/linuxtv-dvb-apps-1.1.0.tar.bz2 tar jxvf linuxtv-dvb-apps-1.1.0.tar.bz2 cd linuxtv-dvb-apps-1.1.0/util/scan make ./scan -x 0 dvb-s/Astra-19.2E > channels.conf The "-x 0" flag is here to restrict the scan to Free To Air channels only. Please always do so, as MPlayer do not support encrypted DVB channels. According to your type of DVB card, choose either a file from the "dvb-s" "dvb-c", "dvb-t" or "atsc" directories and ask for a scan. Then, simply copy the channels.conf file you've just created to the /etc/mplayer directory in the GeeXboX generator tree, and rebuild away. - using an existing transponder list : the procedure is highly similar to the one defined just before but with no scan. This time, the scan will be done at GeeXboX boot but this way, you do no more require another Linux system to generate the channels.conf file. To do so, you simpy have to check at : http://linuxtv.org/cgi-bin/viewcvs.cgi/dvb-apps/util/scan/ According to your DVB card type (S/T/C/ATSC), check for the good directory and grab the transponder frequency list that fit your needs. Then simply rename the file to dvb.conf and copy it to /etc. Then, rebuild a new ISO using the generator. A bootup, if GeeXboX detects a valid transponder file in /etc/dvb.conf, it will be used to scan for DVB channels and will generate the /etc/mplayer/channels.conf file itself. WARNING : Scanning can be slow according to the number of devices to be scanned and will be done each time you boot GeeXboX if using it as a LiveCD. It is highly recommended that you do it once only, then copy the generated /etc/mplayer/channels.conf file somewhere else and rebuild an ISO using generator, following the first method or to install it on disk. - using installator : this is for sure the easiest solution but requires you to install GeeXboX to disk. During the installation process, if a valid DVB device is recognized by the system, the installator script will ask you if you want to scan for DVB channels. The installator contains the complete list of transponders frequencies. That way, you just have to select your DVB device type and the transponder file you want to use for GeeXboX to scan. The channels.conf file will then be automatically generated. * DVD Navigation Menus : GeeXboX allows 2 DVD playback mode: - Direct movie playback (default). - DVD Navigation Menu support (fairly experimental). The first one can be safely trusted for playing any kind of DVD. Once inserted, the disc is automatically detected and MPlayer tries to play the title it consider as the movie one. The major advantage is that all copyright, advertisement and menu parts are skipped to allow a direct playback. However, in some situations (like DVDs with enhanced menus or most of the series DVD, containing multiple titles to be played) this method is inaccurate and you'll not be able to watch your DVD correctly. The second one, while still experimental (but has really good chances to works fine) supports the regular DVD Navigation Menus and let you control your DVD the same way you'll do it using a regular commercial DVD player. You can use the GeeXboX options menu to switch between the DVD playback methods, according to the DVD disc you're trying to watch. You can also make use of the GeeXboX ISO generator to select the default DVD playback method you want. | INSTALLATION | ~~~~~~~~~~~~ The easiest way to install GeeXboX is to boot it from CD and type "install" at isolinux boot prompt. Be carefull during this step. Read twice each question and stop installing if you don't understand one of the questions. | PXE BOOT | ~~~~~~~~ Yes, the GeeXboX is able to boot from the network on a diskless station ! To achieve this you will need : - a DHCP server - a TFTP server - a NFS server - a PXE capable station :-) * Using a GNU/Linux system : ------------------------ First configure your dhcp server to send PXE boot info. Here is an example with isc dhcp : allow booting; allow bootp; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.128 192.168.0.192; option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; next-server 192.168.0.1; filename "/tftpboot/GEEXBOX/boot/pxelinux.0"; } The next-server option is the address of the TFTP server. Then configure your TFTP server (such as atftpd) to server the /tftpboot directory and copy a full GEEXBOX tree in this directory. For example you can copy the content of a GeeXboX CD from a linux WITH THE CDROM TRANSPARENT DECOMPRESSION ENABLED !! (to verify this, look at the sbin/init file in the GeeXboX tree and verify that it do not contain garbage) If you've built the GeeXboX yourself from sources, you can also generate the GEEXBOX tree with make pxe. Then you should edit the file /tftpboot/GEEXBOX/boot/pxelinux.cfg/default to set nfsroot to the right NFS path to the GEEXBOX tree. Finaly set up your NFS to export the GEEXBOX tree with a /etc/exports containing something like this : /tftpboot/GEEXBOX (ro) and a /etc/hosts.allow containing something like : ALL: ALL That should do the trick. Boot your PXE station and see what happen. * Using a Microsoft Windows system : -------------------------------- In order to boot in PXE mode from a Windows host, you'll need the following software : * An TFTP and a DHCP Server (for example "tftpd32", available at http://tftpd32.jounin.net/) * An NFS Server (for example "Allegro NFS server", available at http://opensource.franz.com/nfs/) * A computer supporting PXE boot mode. Download and uncompress (No need to install) the tftpd32 folder somewhere on your disk. In this example, lets assume it is : C:\tftpd32 Copy the complete GEEXBOX tree in the same directory (C:\tftpd32\GEEXBOX) Start tftpd32 : - Choose the C:\tftpd32 folder for "current directory". - Choose the interface (network card) to be used in "server interface". In the example here it's 192.168.0.1 - Go in "setting" and make sure DHCP server is checked (enabled) - In the "DHCP server" tab, fill in all the box using the following example : (Please refer to some documentation about DHCP all around the net in order to understand) * IP starting pool : 192.168.0.10 * Size of pool : 10 * Boot file : ./GEEXBOX/boot/pxelinux.0 * WINS/DNS server : 192.168.0.254 * Default router : 192.168.0.254 * Mask : 255.255.255.0 * Domain name : mydomain.net - Click "save" to apply modifications. First part is done, you can now boot the client computer (the one starting GeeXboX), and will see it loading until the logo appears. After a while it'll freeze because your NFS server is not set yet. Install "Allegro NFS server" and fill in the boxes following these settings : Exports tab : * Add a "new name" : and call it "/tftpboot/GEEXBOX" * In "path" just below : choose "C:\tftp32\GEEXBOX" folder * In "allowed host list" , choose "all" * "Read write", and "read only user list", choose "root" and "everyone" (if you want some log just check all in the last tab) Apply settings. Don't forget to modify the file : C:\tftp32\GEEXBOX\boot\pxelinux.cfg\default and change the IP address "192.168.0.2" to "192.168.0.1" (or the one you've previously setup). Just start the client computer and now GeeXboX should be running fine. | BUILDING | ~~~~~~~~ First have a look at the configuration section just under (at least the global part). Then basically you can build the iso with : make Or you can directly burn this iso with : make burn When done, you can save disk space by cleaning the build tree : make clean or by doing a full cleaning, even removing downloaded sources : make distclean There's also more advanced commands if you want to hack around the GeeXboX : scripts/get package # download the package scripts/unpack package # unpack and prepare the package scripts/build package # build the package scripts/install package # install the package with the $INSTALL prefix scripts/clean package # clean the package build tree scripts/clean --full package # clean both the package build and source trees make exec # launch directly the GeeXboX in a jail # WARNING: this is a highly experimental feature # use it at your own risks. If you've made a hacked version of the GeeXboX, you can easily build a small tar.bz2 for it with : make dist or a full tar (containing all sources) with : make fulldist or a geexbox generator with : make generator or a pxe ready tree with : make pxe | CONFIGURATION | ~~~~~~~~~~~~~ * Global options : This is the first thing you should take care of before trying to build the GeeXboX. It stands in the file config/options, and it should be self explanatory. * Linux : This is a classical Linux configuration (packages/linux/config/linux.conf). You can edit them by hand, or you can also do a scripts/unpack linux and then a make menuconfig -C build/linux-* (or use the method you prefer instead of menuconfig). Then you should backup your build/linux-*/.config into packages/linux/config/linux.conf. * Lirc : Lirc allows you to control the GeeXboX using a remote controller. First you have to choose the file describing your specific remote in build/lirc-*/remotes (after doing a scripts/unpack lirc) and add it in packages/lirc/install. Then you should choose your device (default is /dev/ttyS0 (COM1)) and the lirc driver and put them in a file called packages/lirc/config/lircd_$REMOTE. Then you can choose your key mapping in the file packages/lirc/config/lircrc_$REMOTE. For each mapping you have to select a button (pike their names in the remote definition file) and associate an action to it. The action is one of MPlayer's actions (you can find a list in the html file build/MPlayer-*/DOCS/documentation.html#commands). | HACKING | ~~~~~~~ The first thing you should look at is the initialization script. In fact there are two initialization scripts. The first one is in packages/initrd/scripts/linuxrc but you shouldn't need to modify it. The second one is in config/options and that's where you may put some customizations. There you can first choose which is the architecture (i386 or PPC) you want to build GeeXboX for. After that, you can perform finnest tuning by specifying a certain kind of sub arch (386, pentium, athlon) in order to optimize the distribution for your specific CPU and gets the best perfomances off. Then the next thing which may interest you is the creation of a new "package". A package is just a bunch of scripts which have to follow some rules. All the scripts have to take place in a directory named as the program you want to "package", itself in the packages directory. Here is a list of the scripts you may create : - url : just a list of urls where to get the program sources. - unpack : what to do after unpacking the sources. For example, you can modify some configuration files. This does not include applying patches. - need_build : called when the package as allready been built, in order to be sure that it don't need to be rebuilt. It should remove the file .stamps/"package name"/build if the package need to be rebuilt. - build : all the steps needed to build the program. - install : all the steps needed to install the program. The installation prefix should be $INSTALL. In addition, the package main directory may contain extra subdirs : - config : where all config files belong. These files may be used either by the build script to compile the package or by the install script to be put to the system's /etc directory. - scripts : this subdir may contain runtime initialization scripts related to the current package which should be installed by install script - patches : this subdir may contain patches to be applied to the sources of the package, at unpack time. - sources : if files are present here, they will be automatically copied into the package's build tree. - init.d : contains initialization scripts to be launched at runtime. You also have to remember that software which run on the GeeXboX have to be compiled with the uClibc gcc wrapper. Fortunately, the GeeXboX toolchain is smart enough to automatically build all added packages using the uClibc gcc wrapper itself. Do not forget to ask for your package's compilation and installation by explicitely asking for it in the scripts/gentree build script. Finally, the best way to make a package is to look how other packages are done. | LICENSE | ~~~~~~~ All the programs used by the GeeXboX are protected by their respective license. They all are free software and most of them are covered by the GNU General Public License. The GeeXboX itself, meaning all the scripts which are used in the building process, are covered by the GNU General Public License. geexbox-1.1/DOCS/README_es.txt0000644000175000017500000010413110641745504014031 0ustar benben ooooo oo o o oo o M" "Mo Mo oM" M Mo oM" M oM""Mo oM""Mo "Mo" Mo"""o oM""Mo "Mo" M """M MooooMM MooooMM oMMo M "M M M oMMo "o oM M o M o oM Mo M oM M M oM Mo "MoooM"M "MooM" "MooM" M" "M M"ooo" "MooM" M" "M | ACERCA DE... | ~~~~~~~~~~~~ Geexbox es un software que convierte tu ordenador en una máquina de reproducir DivX. De hecho, es un CD auto-arrancable que permite ver películas o escuchar música. Soporta multitud de formatos, tales como avi, mpeg, divx, ogm, rm, mp3, ogg, dvd, vcd y cdda. También soporta algunos mandos a distancia IR y las salidas de TV de ciertas tarjetas. Este archivo contiene los ficheros necesarios para generar una imagen iso personalizada de GeexBoX. | REQUISITOS | ~~~~~~~~~~ Para generar una iso GeeXboX, necesitas: - un sistema GNU/Linux con mkisofs y mkzftree. - un sistema MAC OS X con mkisofs y mkzftree. - un sistema windows. Para instalar GeeXboX, necesitarás: - un sistema GNU/Linux con syslinux. Para construir GeeXboX, te harán falta algunas utilidades clásicas: - un sistema GNU/Linux funcionando. - el compilador gcc para el lenguaje C. - GNU make. - el comando patch. - el ensamblador nasm. - bzip2 y gzip. - mkfs.ext2 y mkfs.vfat. - la utilidad de descarga wget (no necesaria para todo el paquete GeeXboX). - mkisofs y mkzftree para construir la imagen iso. - mkzftree para comprimir los archivos en la imagen iso. - cdrecord (para tostar la iso). Y también 1.2 GB de espacio libre en disco. | PERSONALIZACIÓN | ~~~~~~~~~~~~~~~ Cuando GeeXboX está instalado en un disco duro o es generado, resulta muy fácil personalizarlo. Puedes añadir algunos códecs propietarios como rv9 o wmv9, copiándolos en el directorio iso/GEEXBOX/codecs. Puedes encontrar estos códecs en el paquete http://www.geexbox.org/releases/extra-codecs-nonfree.tar.gz También puedes modificar muchas opciones a través de la edición de algunos ficheros de texto. * Idioma : Puedes seleccionar fácilmente tu idioma de menú favorito siguiendo estos pasos: - Usuarios GNU/Linux: Edita el script generator.sh y cambia la línea (cerca del principio): "MENU_LANG=en" a tu idioma preferido. Por ejemplo: para ponerlo en español, cambiala a "MENU_LANG=es". - Usuarios Microsoft Windows: Cuando arrancas, generator.exe te da una lista de selección que te permitirá escoger tu lenguaje preferido. NOTA: Esto no tiene efecto en el lenguaje del DVD (mira en la sección de MPlayer). Si tu idioma no está disponible, puedes traducir el menú a tu propio idioma, lo que conlleva la creación de los archivos language/menu_LANG.conf y language/help_LANG.txt, asi como añadir LANG a language/lang.conf. * Firmware auto-loader : GeeXboX soporta muchos controladores libres pero, desafortunadamente, algunos requieren firmware propietario (no libre y por tanto no incluido en GeeXboX ISO) para funcionar correctamente. El firmware es un fichero binario que es enviado por el dispositivo (PCI o USB) cuando se carga el controlador. Por cada controlador el firmware tiene un fichero especifico con un nombre predeterminado. Si tienes hardware que requiere firmware adicional (suelen ser tarjetas WIFI y sintonizadoras de TDT), necesitaras buscar en la página del fabricante los ficheros de firmware. La mayor parte de los casos encontraras un link para descargarlos en la sección de drivers para Linux. Algunas veces puedes necesitar extraer los ficheros de los drivers para windows del CD de drivers que venia con el hardware. Una vez que tengas el fichero del firmware, simplemente ponlo en el directorio /firmwares. Puedes poner tantos firmware como quieras y GeeXboX automáticamente buscará y usará los ficheros correctos cuando se necesiten. Solo has de tener la precaución de tener el fichero de firmware correcto y generar una nueva ISO. El GeeXboX ISO generator puede descargar los firmwares automáticamente. Puedes seleccionar todos los ficheros de firmware y el generador los añadirá. Pero para que esta característica funcione debes tener acceso a internet en el PC que ejecutas el GeeXboX generator. * MPlayer : Aquí es donde puedes hacer la mayor parte de las configuraciones y ajustes. Las opciones se encuentran en el fichero packages/MPlayer/config/mplayer.conf. Quizás quieras modificar opciones como tamaño de fuente del OSD (subfont-text-scale). También puedes añadir muchas opciones como idioma por defecto para DVD (ej: alang=es,en). El mejor sitio para encontrar estas opciones es en la pagina man de MPlayer, para usuarios de linux (man -l build/MPlayer-*/DOCS/mplayer.1). Tambien deberias echar un vistazo a la documentación de MPlayer (http://mplayerhq.hu/DOCS/). Otro archivo que quizá quieras modificar es packages/i18n-texts/config/menu.conf. Puedes quitar elementos del menú que no necesites, o, por ejemplo, traducirlos a tu propio idioma. El ultimo archivo que puedes mirar es packages/MPlayer/build, que contiene la selección de opciones que están compiladas en MPlayer. * Salida de TV : La activación de la salida de TV se consigue con la ayuda de múltiples programas dedicados a las diferentes marcas de tarjetas. Actualmente usamos atitvout para las tarjetas Ati, s3switch para las tarjetas S3 y nvtv para las tarjetas Nvidia (y posiblemente las intel i810 y las 3dfx). La configuración de estos programas se realiza en packages/tvout/config/tvout. Ahí puedes seleccionar el estandar de TV que quieras (PAL para España, NTSC en Iberoamérica...) y modificar otras opciones específicas de nvtv. # TV Output Standard (ntsc/pal/secam) TVOUT_STANDARD=pal Tambien puedes defineir el aspectos de tu televisor (4:3 o 16:9) cambiando esta línea: TVOUT_ASPECT="4:3" Este parametro se usará pata TVOut y para el monitor. Tammbien puedes especificar la resolución y las frecuencias horizontal y vertical en caso de que tengas un dispositivo inusual, como un proyector o HDTV. Para esto edita el fichero /etc/mplayer/mplayer.conf. Los parametros por defecto se muestran abajo (quita el comentario '#' de las líneas de frecuencia si deseas cambiarla) screenw=800 screenh=600 #monitor-hfreq=31.5k-50k #monitor-vfreq=50-90 * Lirc : Puedes elegir uno de los controladores soportados editando el archivo GEEXBOX/etc/remote. Lirc no puede controlar ATI Remote Wonder y está siempre activado, asi que no tienes que modificar nada para usarlo. Si quieres cambiar la asignación de teclas para el mando a distancia, mira en el fichero GEEXBOX/etc/lirc/lircrc_REMOTE. * Red : Puedes configurar la red en el archivo GEEXBOX/etc/network. Ahí puedes escoger la dirección IP usada por GeeXboX (por defecto se usa DHCP, y si no funciona, la IP cambia a 192.168.0.54.). También puedes establecer un usuario y contraseña para conectarse a recursos compartidos en máquinas windows (por defecto se conecta únicamente a los recursos que permitan conexiones anónimas). Tambien puedes declarar algunos NFS mounts en GEEXBOX/etc/nfs. * Wifi : Por defecto, GeeXboX intentara autodetectar la configuración de la red. Si tienes una tarjeta Ethernet y una tarjeta WiFi, solo la última será configurada. Puedes modificar el fichero /etc/network para especificar tu configuración de red. en este fichero, 4 líneas configuran la tarjeta WiFi: * PHY_TYPE="auto" # Tipo de red (auto|ethernet|wifi) * WIFI_MODE="managed" # Modo de trabajo Wifi (managed|ad-hoc) * WIFI_WEP="" # Wifi WEP key * WIFI_ESSID="any" # Wifi SSID * Gateway : GeeXboX soporta acceso a Internet. En el caso de que tengas una conexión a Internet puedes compartirla con tu caja multimedia usando un router. Solamente necesitas definir la ip del Gateway (normalmente el router) en /etc/network. * GATEWAY="" # Gateway IP ("" for DHCP or no internet connection) * DNS server : Para acceder a Internet, GeeXboX necesita la dirección IP del servidor DNS. Si no usas un servidor DHCP, puedes especificar esta IP en /etc/network. * DNS_SERVER="" # DNS Server IP ("" for DHCP or none) * Configuración de TV: GeeXboX soporta entradas de TV y sintonizadoras. El sistema detectará automáticamente la tarjeta y sintonizador que tienes instalados. Puedes forzar la configuración y eliminar la autodetección. Para ello modifica el fichero /etc/tvcard #TV CARD/TUNER Model (AUTO for autodetection or look at the following urls) #http://www.linuxhq.com/kernel/v2.6/2/Documentation/video4linux/CARDLIST.bttv #http://www.linuxhq.com/kernel/v2.6/2/Documentation/video4linux/CARDLIST.tuner TV_CARD=AUTO TV_TUNER=AUTO TVIN_STANDARD=pal Debes dejar el parámetro AUTO si quieres conservar la autodetección, o reemplazalo por el número de tu tarjeta y sintonizador. Dicho número lo encontraras en las direeciones del comentario. Se cuidadoso: antes de forzar un tipo de tarjeta y sintonizador debes saber las REFERENCIONAS EXACTAS de tu hardware. Una vez hecho podras usar las entradas de TV (Vídeo compuesto y S-VHS) de tu tarjeta de TV. Del mismo modo puedes usar el sintonizador para ver la TV. Para ello debes definir la región en la que vives y debajo añadir la frecuencia y nombre de los canales que quieras sintonizar. De nuevo solo tendras que editar el fichero /etc/tvcard # TV Channels # Syntax : CHAN="Número de canal:Nombre del canal" # Example : # CHAN="26:France 2" # CHAN="K08:Canal +" # TV Channels List # Available : france, europe-east, europe-west, us-bcast, us-cable CHANLIST=france Por favor, se cuidadoso cuando edites los canals y usa la misma sintaxis que en el ejemplo. El nombre de los canales se mostrará en el menú. NOTA: Durante la instalación el programa te permitira buscar los canales automáticamente, pero no te permitirá ordenarlos. * Configuración de Sonido : GeeXbox soporta salida de audio analógico a traves del JACK de la tarjeta de sonido. Tambien puede sacarte audio digital por los conectores RCA o SPDIF (si es que lo tienes). Por defecto esta configurado para audio analógico. Puedes cambiar la configuración editando el fichero /etc/audio # Output using SPDIF (yes/no), otherwise ANALOG output SPDIF=no Si quieres conectar tu GeeXbox a un amplificador externo para decodificar AC3 o DTS debes poner "SPDIF=yes" * Post-procesado de Vídeo : Post-Processing es un sistema por software para mejorar la calidad de la imagen. Esto consume un montón de potencia de CPU pero la imagen se verá bastante mejor. Usando los filtros internos del MPlayer, GeeXbox puede hacer deblocking horizontal y vertical, deringing y auto luminance para mejorar la imagen. Por defecto el post-procesado esta dehabilitado para poder funcionar en equipos antiguos. Puedes habilitarlo editando el fichero /etc/mplayer/mplayer.conf Simplemente elimina el '#' de la tercera línea. # Set Post Processing (h deblock, v deblock, dering, auto luminance) # Consumes CPU power, disabled for low configs, uncomment to enable it. #vf=pp=hb:a/vb:a/dr:a/al:a * Tarjetas DXR3/Hollywood+ : Usuarios con estas tarjetas de descompresión por hardware NO NECESITAN tener una tarjeta de video ni tarjeta de sonido para usar GeeXbox. Desgraciadamente solo el puede ser usado el conector tvout (no podras poner monitor). Deberas poner la norma de TV (PAL/NTSC) en el fichero /etc/tvout y la salida de sonido deseada (Analógica o SPDIF) en el fichero /etc/audio. * Radio configuration : If your TV-card has built-in FM radio tuner, GeeXboX can support playing the radio. You have to modify the GEEXBOX/etc/radio file to have "RADIO=yes" if you want to use the radio. There is no hardware auto- detection, so setting this to 'yes' without a TV-card-based FM radio will put unnecessary menu items on your GeeXboX screen. The GEEXBOX/etc/radio file also has the radio station definition. There are a number of examples in the file, which simply include the radio frequency and the name of the station. Please be careful when editing channels and simply use the same syntax as the examples and the radio stations should be present in the main menu under "LISTEN RADIO". Since the radio application itself is not part of MPlayer, there is separate access to the volume. Please note that the volume that is being increased or decreased is Master volume. Before switching back to TV or video viewing, or music playing, the volume should be re-adjusted. * UPnP File Sharing : UPnP stands for Universal Plug & Play and is a network protocol aiming at providing the autodiscovery of devices and services of your Home Network. The UPnP A/V (for Audio/Video) norms defines several profiles for devices to easily share multimedia files and lets them being played. The UPnP Media Server profiles represent all of the devices that are able to share files to devices implementing the UPnP Media Player or UPnP Media Renderer profiles. The GeeXboX embeds a UPnP Control Point software that is able to auto-discover all UPnP Media Servers from your Home network and it simply mounts their contents to a dedicated mount point (/mnt/UPnP). This way, you just have to share contents using a compliant UPnP Media Server software and they'll be automatically accessible from GeeXboX. For more info about UPnP and some media servers usage, please go to http://www.geexbox.org/wiki/index.php/Accessing_to_UPnP_Contents * Network streaming : GeeXboX now gives you the possibility to add some SHOUTcast Radio/TV official playlist as easily as personal playlists (local and remote). SHOUTcast activation is set in "GEEXBOX/etc/network" config file. As SHOUTcast TV sometimes may contain pornographic and subscription-only streams, you can define a "black list" and a "white list" to allow/deny any streams you choose (default keywords for "black list" are : "adult xxx porn ESS SWCTV SWPTV Subscription"). The black/white lists are case-insensitive. "GEEXBOX/etc/netstream" config file can be set to create local and remote playlists (some examples are located in this file). "Remote playlists" refer to "Extended M3U" files. For French users only : You can get "FreeboxTV" thanks to this file, using the following process : - uncomment EXTM3U ad hoc entry. - use a GeeXboX version that have to be compiled with "LIVE555 library" support (otherwise you won't be able to decode the stream). * DVB cards : GeeXboX has a support for various types of DVB cards (Terrestrial, Cable, ATSC and Satellite) either in PCI or USB. Please note that for now, only one DVB adapter is usable at a time. Some DVB devices (especially USB ones) may require an external proprietary firmware to be loaded in the mean time as the driver to be usable. You may have a look at the LinuxTV DVB Wiki (http://linuxtv.org/wiki/index.php/Main_Page) to see if you're card requires one or not and if so, which one it is. Some firmwares can be fetched directly from the LinuxTV website (http://linuxtv.org/download/firmware/), otherwise may be included in the Windows drivers archive. See the GeeXboX firmware loader documentation to see how to get them loaded for you. For each card, the list of channels is available through the MPlayer's open menu. Nevertheless, there's no way to auto-discover these channels. Thus, adding the list of DVB channels to GeeXboX can be done in several ways : - using an existing channel list : MPlayer needs to have a working channels.conf file to use DVB. This file can be generated through the utilities provided by the dvb-apps package. Simply use a Linux box that has a DVB card configured, download the linuxtv-dvb-apps tarball from http://www.linuxtv.org/download/dvb/ , compile it and create the config file using the "scan" executable, in "zap" format (which is the default as of dvb-apps 1.1.0). For example, for a DVB-S (Satellite) card using Astra-19.2E as the provider: wget http://www.linuxtv.org/download/dvb/linuxtv-dvb-apps-1.1.0.tar.bz2 tar jxvf linuxtv-dvb-apps-1.1.0.tar.bz2 cd linuxtv-dvb-apps-1.1.0/util/scan make ./scan -x 0 dvb-s/Astra-19.2E > channels.conf The "-x 0" flag is here to restrict the scan to Free To Air channels only. Please always do so, as MPlayer do not support encrypted DVB channels. According to your type of DVB card, choose either a file from the "dvb-s" "dvb-c", "dvb-t" or "atsc" directories and ask for a scan. Then, simply copy the channels.conf file you've just created to the /etc/mplayer directory in the GeeXboX generator tree, and rebuild away. - using an existing transponder list : the procedure is highly similar to the one defined just before but with no scan. This time, the scan will be done at GeeXboX boot but this way, you do no more require another Linux system to generate the channels.conf file. To do so, you simpy have to check at : http://linuxtv.org/cgi-bin/viewcvs.cgi/dvb-apps/util/scan/ According to your DVB card type (S/T/C/ATSC), check for the good directory and grab the transponder frequency list that fit your needs. Then simply rename the file to dvb.conf and copy it to /etc. Then, rebuild a new ISO using the generator. A bootup, if GeeXboX detects a valid transponder file in /etc/dvb.conf, it will be used to scan for DVB channels and will generate the /etc/mplayer/channels.conf file itself. WARNING : Scanning can be slow according to the number of devices to be scanned and will be done each time you boot GeeXboX if using it as a LiveCD. It is highly recommended that you do it once only, then copy the generated /etc/mplayer/channels.conf file somewhere else and rebuild an ISO using generator, following the first method or to install it on disk. - using installator : this is for sure the easiest solution but requires you to install GeeXboX to disk. During the installation process, if a valid DVB device is recognized by the system, the installator script will ask you if you want to scan for DVB channels. The installator contains the complete list of transponders frequencies. That way, you just have to select your DVB device type and the transponder file you want to use for GeeXboX to scan. The channels.conf file will then be automatically generated. * DVD Navigation Menus : GeeXboX allows 2 DVD playback mode: - Direct movie playback (default). - DVD Navigation Menu support (fairly experimental). The first one can be safely trusted for playing any kind of DVD. Once inserted, the disc is automatically detected and MPlayer tries to play the title it consider as the movie one. The major advantage is that all copyright, advertisement and menu parts are skipped to allow a direct playback. However, in some situations (like DVDs with enhanced menus or most of the series DVD, containing multiple titles to be played) this method is inaccurate and you'll not be able to watch your DVD correctly. The second one, while still experimental (but has really good chances to works fine) supports the regular DVD Navigation Menus and let you control your DVD the same way you'll do it using a regular commercial DVD player. You can use the GeeXboX options menu to switch between the DVD playback methods, according to the DVD disc you're trying to watch. You can also make use of the GeeXboX ISO generator to select the default DVD playback method you want. * Recording Capabilities : GeeXboX allows you to record the stream you're watching and even proceed with live pause (a.k.a. Time-Shifting). Unfortunately, this operation is CPU-time consuming (realtime encoding and playback of a stream) and so, you may require a fairly recent computer to be able to fully make use of this feature. The control menu comes with a recorder-dedicated sub-menu that allows you to monitor the recording status (on/off), check for the recorded files destination, but also start/stop the record process and select the encoding profile you want to use. The record process can also be started (or stopped) from the keyboard, using the "i" key, or from the remote controller. There's unfortunately a requirement to the use of recording capabilities : you need to be able to store the recorded files somewhere. This can be an internal/external hard drive or a remote NFS/Samba share. The only thing that matters is that the filesystem has to be Linux-writable (i.e. NTFS disk aren't supported). Be aware while recording that your disk will be remounted R/W to allow file storage. Once the record process has ended, GeeXboX should remount your disk as R/O for safety measure but this might not work. It is then highly recommended when making use of the recording capabilities that you perform a clean shutdown of the computer to avoid a potential filesystem or data corruption. We won't take any responsibility for data loss. The recorded files destination path has to be specified at installation or ISO generation in the /etc/recorder configuration file. Simply replace the following setting with your own one : SAVE_PATH="/tmp" The default behavior is to save to /tmp but as it's a RAMdisk, GeeXboX is smart enough to not proceed so. Considering that, there's no way GeeXboX will try to record or store files to your computer unless you'd explicitely specify a destination path. In the same way, you can also specify the default encoding profile to be used when recording. You can always change to another one at runtime through the recorder option menu. A few profiles are available (see the /etc/mplayer/mencoder.conf file for a complete list and details) and they all feature different level of quality or encoding speed. You might choose one over another, according to your CPU power. According to the input stream (low-resolution WebTV, regular analog TV, digital HDTV ...), one profile might fit better than another. Below is a short non-exhaustive list of available encoding profiles : - MPEG 1 - MPEG 2 - Video CD (PAL/NTSC) - Super Video CD (PAL/NTSC) - DVD Video (PAL/NTSC) - Stream Dump (can be safely used on DVB MPEG-TS streams for example to avoid a re-encoding process). The default encoding profile has to be specified in the /etc/recorder configuration file, as below : RECORD_PROFILE="mpeg1" Unless you know exactly what you're doing, it is highly recommended that you use the ISO generator to select the default profile. When watching a TV stream and starting the record process, GeeXboX image might freeze a few seconds (time for MEncoder to start recording) and will start playing back the currently recording file. If you're CPU is too slow, the playback will lag, waiting for the frames to be encoded. If this happens, you only have 2 solutions : - use a more powerful HTPC. - use a fastest (i.e. less quality) encoding profile. When stopping the recording process, GeeXboX will stop MEncoder and will reload the original input stream. | GENERACIÓN | ~~~~~~~~~~ Primero echa un vistazo a la sección de personalización detallada más arriba. Para generar la iso únicamente tienes que ejecutar en Linux: ./generator.sh o en Windows generator.exe | INSTALACIÓN | ~~~~~~~~~~~ Lo primero que necesitas es crear una partición FAT16/32 o EXT2/3 con al menos 16 MB libres. (Recomendamos usar EXT3) A partir de aquí, puedes instalar GeeXboX bajo Linux ejecutando ./installator.sh Responde a todas las preguntas y ten mucho cuidado con ellas. Léelas dos veces y, si no entiendes alguna, para la instalación. Pero la forma más facil de instalar GeeXboX es arrancar desde el CD y teclear "install" en el menu del isolinux. | PXE BOOT | ~~~~~~~~ Yes, the GeeXboX is able to boot from the network on a diskless station ! To achieve this you will need : - a DHCP server - a TFTP server - a NFS server - a PXE capable station :-) * Using a GNU/Linux system : ------------------------ First configure your dhcp server to send PXE boot info. Here is an example with isc dhcp : allow booting; allow bootp; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.128 192.168.0.192; option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; next-server 192.168.0.1; filename "/tftpboot/GEEXBOX/boot/pxelinux.0"; } The next-server option is the address of the TFTP server. Then configure your TFTP server (such as atftpd) to server the /tftpboot directory and copy a full GEEXBOX tree in this directory. For example you can copy the content of a GeeXboX CD from a linux WITH THE CDROM TRANSPARENT DECOMPRESSION ENABLED !! (to verify this, look at the sbin/init file in the GeeXboX tree and verify that it do not contain garbage) If you've built the GeeXboX yourself from sources, you can also generate the GEEXBOX tree with make pxe. Then you should edit the file /tftpboot/GEEXBOX/boot/pxelinux.cfg/default to set nfsroot to the right NFS path to the GEEXBOX tree. Finaly set up your NFS to export the GEEXBOX tree with a /etc/exports containing something like this : /tftpboot/GEEXBOX (ro) and a /etc/hosts.allow containing something like : ALL: ALL That should do the trick. Boot your PXE station and see what happen. * Using a Microsoft Windows system : -------------------------------- In order to boot in PXE mode from a Windows host, you'll need the following software : * An TFTP and a DHCP Server (for example "tftpd32", available at http://tftpd32.jounin.net/) * An NFS Server (for example "Allegro NFS server", available at http://opensource.franz.com/nfs/) * A computer supporting PXE boot mode. Download and uncompress (No need to install) the tftpd32 folder somewhere on your disk. In this example, lets assume it is : C:\tftpd32 Copy the complete GEEXBOX tree in the same directory (C:\tftpd32\GEEXBOX) Start tftpd32 : - Choose the C:\tftpd32 folder for "current directory". - Choose the interface (network card) to be used in "server interface". In the example here it's 192.168.0.1 - Go in "setting" and make sure DHCP server is checked (enabled) - In the "DHCP server" tab, fill in all the box using the following example : (Please refer to some documentation about DHCP all around the net in order to understand) * IP starting pool : 192.168.0.10 * Size of pool : 10 * Boot file : ./GEEXBOX/boot/pxelinux.0 * WINS/DNS server : 192.168.0.254 * Default router : 192.168.0.254 * Mask : 255.255.255.0 * Domain name : mydomain.net - Click "save" to apply modifications. First part is done, you can now boot the client computer (the one starting GeeXboX), and will see it loading until the logo appears. After a while it'll freeze because your NFS server is not set yet. Install "Allegro NFS server" and fill in the boxes following these settings : Exports tab : * Add a "new name" : and call it "/tftpboot/GEEXBOX" * In "path" just below : choose "C:\tftp32\GEEXBOX" folder * In "allowed host list" , choose "all" * "Read write", and "read only user list", choose "root" and "everyone" (if you want some log just check all in the last tab) Apply settings. Don't forget to modify the file : C:\tftp32\GEEXBOX\boot\pxelinux.cfg\default and change the IP address "192.168.0.2" to "192.168.0.1" (or the one you've previously setup). Just start the client computer and now GeeXboX should be running fine. | COMPILANDO | ~~~~~~~~~~ Lo primero es echar un vistazo a la sección de configuración, más arriba (al menos, la parte general y la que se refiere al tostado en CD). A continuación, puedes crear la iso básicamente con: make O puedes quemarla directamente en CD con: make burn Cuando se haya terminado, puedes ahorrar espacio de disco limpiando el árbol de compilación: make clean o haciendo una limpieza total, incluso borrando las fuentes descargadas: make distclean Existen también otros comandos más avanzados si quieres enredar en las tripas de GeeXboX: scripts/get package # descargar el paquete scripts/unpack package # desempaqueta y prepara el paquete scripts/build package # construye el paquete scripts/install package # instala el paquete con el prefijo $INSTALL scripts/clean package # limpia el árbol de fuentes del paquete scripts/clean --full package # límpia el paquete construido y sus fuentes make exec # lanza directamente GeeXboX en una jaula # AVISO: esta característica es áltamente experimental # úsala a tu propio riesgo. Si has hecho una versión modificada de GeeXboX, puedes construir fácilmente un pequeño tar.bz2 con: make dist o un tar completo (conteniendo todos los fuentes) con: make fulldist o un generador geexbox con: make generator o un instalador geexbox con: make installator o un directorio para arranque remoto con : make pxe | CONFIGURACIÓN | ~~~~~~~~~~~~~ * Opciones globales: Éste es el primer apartado en el que debes fijarte antes de intentar compilar GeeXboX. Se encuentra en el archivo config/options, y debería explicarse por sí mismo. En este fichero puedes seleccionar la familia de tu CPU, el tema a usar, y si quieres utilizar fuentes truetype o no. Además, deberías modificar la configuración de la grabadora de CD para poder grabar directamente la ISO. * Linux: El archivo packages/linux/linux.conf es una configuración clásica de Linux. Puedes editarlo a mano, o también puedes ejecutar scripts/unpack linux y hacer make menuconfig -C build/linux-* (o utilizar el método que prefieras en vez de menuconfig). Es conveniente que hagas una copia de seguridad de build/linux-*/.config en packages/linux/linux.conf. Lo más "difícil" que puede ocurrir es mantener tamaño del kernel lo suficientemente reducido como para que quepa en una imagen de un disquete de arranque. * Lirc: Lirc te permite controlar GeeXboX a través de un mando a distancia. Lo primero que debes hacer es escoger el archivo que describe tu mando en concreto en build/lirc-*/remotes (despues de hacer scripts/unpack lirc) y añadirlo a packages/lirc/install. A partir de aquí, escoge un dispositivo (por defecto es /dev/ttyS0, o COM1) y el driver lirc y colócalos en un archivo con el nombre packages/lirc/lircd_$REMOTE. Entonces podrás escoger la asignación de teclas en packages/lirc/lircrc_$REMOTE. En cada asignación tienes que seleccionar un botón (coge los nombres del archivo de definición del mando a distancia) y asociarle una acción. Esta acción pertenece a MPlayer, y puedes encontrar un listado en el fichero build/MPlayer-*/DOCS/documentation.html#commands. | HACKING | ~~~~~~~ El primer sitio donde debes mirar es en el script de inicialización. De hecho, existen dos scripts de inicialización. El primero está en packages/initrd/linuxrc, aunque no deberías necesitar modificarlo. El segundo se encuentra en config/init y es donde puedes personalizar. Lo siguiente que podría interesarte es la creación de un nuevo "paquete". Un paquete consiste en una gran cantidad de scripts que han de seguir algunas reglas. Todos los scripts deben funcionar sobre un directorio llamado como el programa que quieres empaquetar, dentro del directorio packages. Una lista de scripts que puedes crear: - url: sólo una lista de urls para conseguir los fuentes del programa. - unpack: qué hacer después de desempaquetar los fuentes. Por ejemplo, puedes modificar algunos ficheros de configuración. Ésto no incluye aplicar parches. - need_build: es llamado cuando el paquete ha terminado de compilarse, con el objetivo de estar seguros de que no necesita volver a construirse. Debe borrar el archivo .stamps/"nombre del paquete"/build, si el paquete debe ser recompilado. - build: todos los pasos necesarios para compilar el programa. - install: todos los pasos necesarios para instalar el programa. El prefijo de instalación debe ser $INSTALL. Tambien, en el directorio principal del paquete puedes poner estas carpetas : - config : Donde estan todos los ficheros de configuración. Estos ficheros pueden ser usados para construir un script para compilar el paquete o por un script de instalacion para ser puestos en el directorio /etc - scripts : Este subdirectorio contiene los runtime initialization scripts relativos al paquete actual, los cuales seran instalados por el script de instalación. - patches : Este subdirectorio contiene los parches que seran aplicados a las fuentes cuando se descompriman. - sources : Si hay ficheros en este subdirectorio, seran copiados automáticamente en el arbol del paquete. - init.d : contiene scripts de inicialización que serán lanzados en el momento de la ejecución. Cuando un archivo de las url se llama patch-nombre_del_programa-... se aplica automáticamente a los fuentes desempaquetados del programa. Además, debes recordar que el software que corre en GeeXboX debe ser compilado con el wrapper gcc de uClibc. Afortunadamente, el GeeXboX toolchain puede construir automáticamente todos los paquetes añadidos usando el uClibc gcc wrapper por si mismo. Finalmente, el mejor modo de hacer un paquete es observar cómo están hechos otros paquetes. | LICENCIA | ~~~~~~~~ Todos los programas usados por GeeXbox estan protegidos por sus respectivas licencias. Todos ellos son software libre, y la mayoría están cubiertos por la Licencia Pública General GNU (GPL). El propio GeeXboX, incluyendo todos los scripts que son utilizados en el proceso de construcción y compilación, están cubiertos por la Licencia Pública General GNU (GPL). geexbox-1.1/DOCS/README_fr.txt0000644000175000017500000010060210641745504014030 0ustar benben ooooo oo o o oo o M" "Mo Mo oM" M Mo oM" M oM""Mo oM""Mo "Mo" Mo"""o oM""Mo "Mo" M """M MooooMM MooooMM oMMo M "M M M oMMo "o oM M o M o oM Mo M oM M M oM Mo "MoooM"M "MooM" "MooM" M" "M M"ooo" "MooM" M" "M | AVANT PROPOS | ~~~~~~~~~~~~ La GeeXboX est une distribution Linux de type Media Center. Il s'agit d'un CD bootable qui vous permet de regarder des films ou d'écouter de la musique. Il supporte de nombreux formats tels que avi, mpeg, divx, ogm, rm, mp3, ogg, dvd, vcd et cdda. GeeXboX supporte aussi certains types de télécommandes infra-rouge et les sorties TV de certaines cartes graphiques. Cette archive contient tous les fichiers nécessaires pour générer une image iso personnalisée de la GeeXboX | PREREQUIS | ~~~~~~~~~ Pour générer une iso GeeXboX vous devez posséder l'un des sytémes suivants: - GNU/Linux avec mkisofs et mkzftree. - MAC OS X avec mkisofs et mkzftree. - Windows. Pour construire votre propre GeeXboX, vous nécessiterez les outils classiques : - un système GNU/Linux opérationnel. - Le compilateur C GCC. - GNU make - La commande patch. - L'assembleur nasm. - bzip2 et gzip. - L'outil de téléchargement wget (non nécessaire pour le paquetage GeeXboX complet). - mkisofs et mkzftree pour construire l'image ISO. - mkzftree pour compresser les fichiers de l'image ISO. - cdrecord (pour graver l'image). Et environ 2 Go d'espace disque disponible. | PERSONALISATION | ~~~~~~~~~~~~~~~ Le but du générateur est de personnaliser facilement sa GeeXboX. La chose la plus interessante que vous puissiez faire et de générer une image comportant une vidéo complète qui sera lu automatiquement au boot. Vous avez juste à copier vos vidéos (ou vos fichiers sons) et vos playlists dans le repertoire iso. Vous pouvez aussi ajouter des codecs propriétaires comme le rv9 ou le wmv9, en les copiant simplement dans le répertoire iso/GEEXBOX/codecs. Ces codecs se trouvent ici : http://www.geexbox.org/releases/geexbox-extra-codecs-nonfree.tar.gz Vous pouvez modifier d'autres options en éditant simplement des fichiers textes. * Chargement des firmwares : La GeeXboX supporte de nombreux pilotes de périphériques mais malheureusement, certains d'entre eux requierent un firmware binaire additionnel propriétaire (i.e. non-libre et donc non-inclus dans la GeeXboX). Le firmware est un fichier binaire qui est envoyé au périphérique (PCI ou USB) lorsque le pilote se charge. Pour chaque pilote, le firmware se doit d'être un fichier spécifique avec un nom pré-déterminé. Si vous disposez de matériel à problème qui peut nécessiter la présence d'un firmware additionnel (dans la plupart des cas, il s'agit de cartes WiFi ou DVB), vous devrez chercher sur Internet une page concernant le support de périphérique sous Linux et l'utilisation du firmware. La plupart du temps, vous tomberez sur un lien de téléchargement direct. Des fois, il vous sera nécessaire d'extraire ce firmware depuis une archive de pilotes pour Windows qui ont été fourni par le fabricant du périphérique. Une fois que vous disposerez du fichier de firmware pour votre carte, déposez le simplement dans le répertoire /firmwares. Vous pouvez y stocker autant de firmwares que vous voudrez, la GeeXboX essaiera d'elle même de les charger lorsqu'un pilote en aura besoin. La seule chose dont vous ayez à vous soucier et de disposer des bons fichiers de firmwares avec les bons noms avant de regénérer une nouvelle ISO. Veuillez noter que vous pouvez également utiliser le générateur d'ISO de la GeeXboX qui vous permettra de récupérer les firmwares pour vous. Vous pouvez l'utiliser pour sélectionner tous les fichiers de firmware que vous souhaiter et le générateur les téléchargera et ajoutera pour vous. Assurez vous juste de disposer d'une connexion à Internet lors de l'utilisation du générateur. * MPlayer : C'est ici que se font la plupart des configurations et modifications. Les options se situent dans le fichier packages/MPlayer/mplayer.conf Il est possible de changer des options comme la taille des police de l'OSD (subfont-text-scale) et beaucoup d'autres choses telles que la langue par défaut de lecture des DVD (ex: alang=fr,en). La meilleur façon de comprendre ces options est, pour les utilisateurs de Linux, de se référer au MAN de MPlayer (man -l build/MPlayer-*/DOCS/mplayer.1). D'autres informations sont aussi disponibles sur la documentation officielle (http://mplayerhq.hu/DOCS/). Il peut également être intéressant de modifier le fichier packages/MPlayer/menu.conf. Vous pouvez les menus qui vous semblent inutiles, ou les traduire dans d'autres langues par exemple. Enfin, le dernier intéressant est packages/MPlayer/build, qui contient la sélection d'options de compilation de MPlayer. * Sortie TV : Activer la sortie TV se fait au moyen de nombreux petits utilitaires dédiés chacun à une marque carte graphique. Nous utilisons actuellement atitvout pour les cartes ATI, s3switch pour les cartes S3 et nvtv pour les cartes nVidia (ce qui peut aussi marcher abec les cartes i810 et 3dfx). La configuration de ces programmes se fait dans iso/GEEXBOX/etc/tvout. Vous pouvez y choisir le standard que vous utilisez (pal, secam...) et y modifier les options spécifiques de nvtv. # TV Output Standard (ntsc/pal/secam) TVOUT_STANDARD=pal Vous pouvez également définir le rapport d'image de sortie (mode 4:3 ou 16:9) via la ligne : TVOUT_ASPECT="4:3" Ce paramètre est utilisé à la fois pour la sortie TV et pour l'affichage classique sur moniteurs CRT ou TFT. Vous pouvez également définir les valeurs de hauteur et largeur (en pixels) pour l'affichage, ainsi que les fréquences de rafraichissement horizontal et vertical, dans le cas où vous utiliseriez un écran panoramique ou encore un rétro-projecteur. Ceci peut etre fait en modifiant le contenu du fichier /etc/mplayer/mplayer.conf. Les paramètres suivants sont donnés par défaut (veuillez décommenter les lignes liées à la fréquence de refraichissement si vous souhaiter les utiliser ) : screenw=800 screenh=600 #monitor-hfreq=31.5k-50k #monitor-vfreq=50-90 * Lirc : Choisissez la télécommande supporté en éditant le fichier generator.sh ou generator.bat (en fonction de votre OS). Faite également attention à bien choisir le récepteur infrarouge correspondant dans le même fichier. Si vous désirez modifier le mappage des touches reportez vous au fichier lirc/lircrc_REMOTE. * Réseau : Le réseau est configurable au niveau du fichier iso/GEEXBOX/etc/network. Ici vous reglerez l'adresse IP de la GeeXboX (qui par défaut cherche un serveur DCHP ou prend l'IP 192.168.0.54 si elle n'en trouve pas). Il est aussi possible de lui assigner un login est un mot de passe (par défaut, la GeeXboX ne peut se connecter que sur des partages anonymes). Vous pouvez aussi déclarer des montages NFS dans GEEXBOX/etc/nfs. * WiFi : Par defaut, le système tente de détecter automatiquement votre configuration réseau. Si vous disposez à la fois d'une carte réseau Ethernet classique et d'une carte WiFi, seule cette dernière sera configurée. Vous pourrez avoir à modifier le fichier /etc/network afin d'y configurer vos paramètres réseaux. Dans ce dernier, 4 lignes sont relatives aux cartes sans-fils : PHY_TYPE="auto" # Network physical type (auto|ethernet|wifi) WIFI_MODE="managed" # Wifi working mode (managed|ad-hoc) WIFI_WEP="" # Wifi WEP key WIFI_ESSID="any" # Wifi SSID Vous pouvez soit conserver la détection automatique, soit forcer l'activation du controleur Ethernet ou WiFi. De la même façon, ceci vous permettra de choisir entre le mode managed et le mode de communication dit ad-hoc et de définir à la fois votre clé WEP et le SSID de votre réseau. * Passerelle : La GeeXboX supporte l'accès à Internet. Définissez simplement l'adresse IP de la passerelle dans le fichier /etc/network GATEWAY="" # Gateway IP ("" for DHCP or no internet connection) * Configuration TV : La GeeXboX supporte les entrées et tuners de cartes TV. Le système essaie avec peine de détecter automatiquement le type de carte et de tuners utilisés. Vous pouvez forcer les paramètres et ainsi éviter la tentative de détection automatique. Veuillez modifier le fichier /etc/tvcard tel qu'il suit : # TV CARD/TUNER Model (AUTO for autodetection or look at the following urls) # http://www.linuxhq.com/kernel/v2.6/2/Documentation/video4linux/CARDLIST.bttv # http://www.linuxhq.com/kernel/v2.6/2/Documentation/video4linux/CARDLIST.tuner TV_CARD=AUTO TV_TUNER=AUTO Laissez le paramètre AUTO si vous souahitez conserver la détection automatique, ou remplacez le par le numéro de la carte et du tuner, comme décrit dans les URL précédentes. Soyez attentifs : pour forcer les types de cartes et de tuners, vous devez connaître les REFERENCES EXACTES de votre matériel. Une fois cela fait, vous devriez être en mesure d'utiliser les entrées TV (Composite et S-VHS) de votre carte TV. De la même manière, vous pouvez utiliser le tuner pour regarder la TV. Pour cela, vous devrez définir votre région ainsi que les fréquences des chaînes que vous souhaitez visionner. Editez simplement le fichier /etc/tvcard : # TV Channels # Syntax : CHAN="Channel Frequency:Channel Title" # Example : # CHAN="29:France 2" # CHAN="K08:Canal +" # TV Channels List # Available : france, europe-east, europe-west, us-bcast, us-cable CHANLIST=france Faites attention lors de l'édition des canaux TV et veillez à utiliser la même syntaxe que décrit ci-dessus et les canaux TV devraient apparaître dans le menu principal. * Configuration Audio : La GeeXboX supporte à la fois la restitution audio via la sortie analogique ou numérique, en utilisant les connecteurs classiques JACK ou RCA SPDIF. Par défaut, la sortie est gérée de manière analogique. Ceci peut etre changé en modifiant le fichier /etc/audio : # Output using SPDIF (yes/no), otherwise ANALOG output SPDIF=no Souvenez vous qu'il est nécessaire de régler la sortie en mode numérique (SPDIF), si vous souhaitez relier votre carte son à un amplificateur hifi externe pour décoder des flux AC3/DTS (en utilisant le mode passthrough). * Post-Processing vidéo : Le Post-Processing est un moyen logiciel pour affiner une image, en la rendant plus nette et plus précise. Cela a par contre l'inconvénient de consommer une partie du temps processeur afin de rendre l'image plus belle. Via l'utilisation des filtres internes à MPlayer, la GeeXboX vous permet de minimiser les effets de blocs horizontaux et verticaux, les effets d'anneaux de dégradés et de corriger automatiquement la luminosité de votre film. Par défaut, le Post-Processing est désactivé, pour éviter de saccader sur de petites configurations matérielles. Il vous est possible de l'activer très simplement en éditant le fichier /etc/mplayer/mplayer.conf : # Set Post Processing (h deblock, v deblock, dering, auto luminance) # Consumes CPU power, disabled for low configs, uncomment to enable it. #vf=pp=hb:a/vb:a/dr:a/al:a * DXR3/Hollywood+ cards : Les utilisateurs de ce type de cartes de décompression n'ont pas besoin d'avoir une carte vidéo ou une carte son dans leur ordinateur. Parmi les inconvénients, on notera néanmoins que seule la sortie TV peut etre utilisée avec ce type de carte (pas d'affichage sur moniteur). Vous pouvez etre amené à définir la norme d'image souhaitée (PAL/NTSC) via le fichier /etc/tvout ainsi que le type de sortie audio à utiliser (Analogique ou SPDIF) via le fichier /etc/audio. * Configuration de la radio : Si vôtre carte TV dispose d'un tuner radio FM intégré, la GeeXboX vous permet d'écouter la radio. Pour cela, il vous faudra modifier le fichier GEEXBOX/etc/radio pour mettre l'option RADIO à yes. Le fichier GEEXBOX/etc/radio contient aussi la définition des stations. Des exemples sont présents dans le fichier. Il suffira de les dé-commenter et de les adapter à vos stations favorites. Le programme d'écoute de la radio ne faisant pas partie de MPlayer, il y a des contrôle de volume séparés pour la radio. Notez que le volume contrôlé est le volume principale. Il pourra donc être nécessaire de le réajuster avant de lancer la TV, une vidéo ou de la musique. * Partage de fichiers via UPnP : UPnP est l'acronyme de Universal Plug & Play et peut se décrire comme un protocole réseau permettant l'auto-découverte de périphériques ainsi que des services qui leur sont associés au sein de votre réseau domestique. La norme UPnP A/V (pour Audio/Video) définit un certains nombre de profiles pour des périphériques permettant le partage et la lecture de fichiers multimédias au sein d'un réseau. Le profile UPnP Media Server permet regroupe tous les périphériques capables de partager des fichiers à des périphériques de type UPnP Media Player ou UPnP Media Renderer, qui sont en mesure de les restituer. La GeeXboX embarque un logiciel de contrôle UPnP (UPnP Control Point) qui permet l'auto-découverte de tous les périphériques de type Media Server de votre réseau local et qui s'occupe de monter leur contenu en toute transparence dans un point de montage dédié (/mnt/UPnP). De cette manière, il vous suffit de disposer d'un PC ou autre périphérique possédant un logiciel compatible avec le profile UPnP Media Server pour que son contenu soit accessible depuis la GeeXboX. Pour plus d'infos sur l'UPnP ainsi que l'utilsiation de quelques serveurs, veuillez vous référer à la page suivante : http://www.geexbox.org/wiki/index.php/Accessing_to_UPnP_Contents * Streaming réseau : GeeXboX permet de rajouter les listes de streams SHOUTcast Radio et TV tout autant que vos propres listes de lecture. (locales et distantes.) L'activation de SHOUTcast se déclare dans le fichier de configuration "GEEXBOX/etc/network". SHOUTcast TV étant succeptible de diffuser des streams nécessitant une inscription particulière ainsi que des streams à caractère pornographique, une liste noire et une liste blanche peuvent être complétées afin de filtrer le contenu selon vos critères (par défaut, les mots clefs définis pour la liste noire sont : "adult xxx porn ESS SWCTV SWPTV Subscription"). La liste noire et la liste blanche sont insensibles à la casse. Vous pouvez créer vos listes de lecture locales et distantes dans le fichier de configuration "GEEXBOX/etc/netstream" (Des exemples sont contenus dans ce fichier). Les listes de lecture distantes concernent uniquement les fichiers M3U Etendus. Note aux utilisateurs (Français uniquement) : Il est possible de receptionner un flux "FreeboxTV" grâce à ce fichier. Pour y parvenir, veuillez suivre la procédure suivante : - dé-commentez l'entrée EXTM3U ad-hoc. - utilisez une version de GeeXboX compilée avec le support de la librairie "LIVE555". (ces deux conditions étant nécessaires à la visualisation du flux) * Cartes DVB : La GeeXboX supporte un grand nombre de cartes DVB (Terrestre i.e. TNT, Cable, ATSC et Satellite) et ce, aussi bien en PCI qu'en USB. Veuillez cependant noter qu'il n'est pour l'instant possible d'utiliser qu'un unique adaptateur DVB à la fois. Certains péripéhriques DVB (particulièrement ceux en USB) peuvent nécessiter un firmware propriétaire additionnel pour fonctionner correctement. Il vous sera peut être utile de jeter un oeil au Wiki DVB de LinuxTV (http://linuxtv.org/wiki/index.php/Main_Page) pour vous assurer que votre carte nécessite un tel firmware ou non. Dans ce cas, le générateur d'ISO pourra le télécharger pour vous. Certains firmwares peuvent être récupérés directement depuis le site Web de LinuxTV (http://linuxtv.org/download/firmware/), d'autres peuvent être inclus dans l'archive de drivers Windows du constructeur de la carte. Veuillez vous référer à la documentation sur le chargement des firmwares dans la GeeXboX pour de plus amples informations. Pour chaque carte, la liste des chaînes disponibles est disponible au sein du menu de MPlayer. Il n'est cependant pas possible d'auto-découvrir ces chaînes automatiquement. De ce fait, la déclaration de chaînes accessibles par DVB dans la GeeXboX peut être fait de différentes manières : - utiliser une liste de chaîne existante : MPlayer a besoin d'un fichier channels.conf valide et fonctionnel pour faire fonctionner la DVB. Ce fichier peut être généré à l'aide d'utilitaire fournis par le paquetage dvb-apps. Utilisez simplement une distribution Linux classique où votre carte DVB a déjà été configurée, téléchargez l'archive linuxtv-dvb-apps depuis le site http://www.linuxtv.org/download/dvb/, compilez le tout et créez le fichier de configuration via l'utilitaire "scan", dans le format "zap" (qui est le format par défaut). Par exemple, pour une carte DVB-S (Satellite) utilisant le fournisseur d'accès Astra-19.2E : wget http://www.linuxtv.org/download/dvb/linuxtv-dvb-apps-1.1.0.tar.bz2 tar jxvf linuxtv-dvb-apps-1.1.0.tar.bz2 cd linuxtv-dvb-apps-1.1.0/util/scan make ./scan -x 0 dvb-s/Astra-19.2E > channels.conf Le drapeau "-x 0" indique que le scan ne tentera pas de se connecter aux chaînes cryptées (généralement payantes). Veuillez tout le temps procéder de la sorte, MPlayer ne gérant de toutes façons pas les chaînes DVB cryptées. Selon votre type de carte DVB, choisissez un fichier de transponders (fournisseur) depuis les répertoires "dvb-s", "dvb-c", "dvb-t" ou "atsc". Ensuite, copiez simplement le fichier channels.conf que vous venez de générer au sein du répertoire /etc/mplayer de l'arborescence GeeXboX du générateur and recompilez une ISO. - utiliser une liste de transpondeur existante : cette procédure est relativement similaire à la précédente à la différence qu'il s'agit cette fois de la GeeXboX qui va s'occuper de scanner les chaînes pour vous et ce, à chaque démarrage. Vous n'aurez ainsi plus besoin d'une autre distribution Linux pour générer le fichier channels.conf. Pour ce faire, rendez-vous simplement sur : http://linuxtv.org/cgi-bin/viewcvs.cgi/dvb-apps/util/scan/ Selon votre type de carte DVB (S/T/C/ATSC), sélectionnez le bon répertoire et choisissez le fichier de liste de fréquences de transpondeurs qui correspond à vos besoins ou votre localisation géographique. Renommez ensuite simplement ce fichier en dvb.conf et copiez le dans le répertoire /etc. Puis, reconstruisez une ISO via le générateur. Au démarrage, si la GeeXboX détecte un fichier de transpondeur valide dans le fichier /etc/dvb.conf, elle l'utilisera pour scanner les chaînes DVB disponibles et générera le fichier /etc/mplayer/channels.conf d'elle-même. ATTENTION : Le scan de chaînes peut être relativement lent selon le type d'émetteur et le nombre de chaînes à découvrir. Ce processus est de plus effectué à chaque démarrage de la GeeXboX si vous l'utilisez en tant que LiveCD. Il est alors hautement recommandé qu'une fois le scan effectué, vous copiez manuellement le fichier /etc/mplayer/channels.conf qui aura été généré quelque part afin de pouvoir le ré-utiliser dans le générateur d'ISO en suivant la première méthode, ou de faire une installation sur disque dur. - utiliser l'installator : il s'agit probablement là de la méthode la plus simple mais recquiert une installation sur disque de la GeeXboX. Au cours du processus d'installation, si un périphérique compatible DVB est reconnu sur votre système, le script d'installation vous demandera de lui-même si vous souhaitez rechercher les chaînes disponibles pour votre carte DVB. L'installator contient la liste complète des fréquences des transpondeurs du site LinuxTV. De ce fait, vous n'aurez qu'à sélectionner votre type de carte ainsi que le transpondeur à utiliser et la GeeXboX s'occupera de scanner letout et de générer le fichier /etc/mplayer/channels.conf. * Menus de Navigation DVD : La GeeXboX propose 2 méthodes de lecture des DVD : - Lecture directe du film (defaut). - Lecture avec support des menus de Navigation DVD (expérimental). La première permet une lecture quasi-assurée de la plupart des DVDs. Une fois inséré, le disque est automatiquement détecté et MPlayer va essayer de lire le chapitre qu'il jugera correspondre au film. Le principal avantage réside dans le fait que toutes les scènes de droit d'auteur, publicités ou menus seront sautées pour permettre une lecture instantannée du film. Néanmoins, dans certaines situations (comme les DVD avec des menus très sophistiqués ou encore les DVD de séries TV, contenant de multiples épisodes et donc chapitres), cette méthode n'est pas précise et vous pourriez ne pas être en mesure de lire votre film correctement. La seconde, bien qu'encore expérimentale avec MPlayer (mais qui a néanmoins de très fortes chances de fonctionner), apporte le support des menus de navigation DVD, vous permettant donc de le lire comme vous le feriez avec n'importe quel lecteur DVD du commerce, avec les avantages et inconvénients qui en découlent. Il vous est bien entendu possible de basculer d'un mode de lecture DVD à un autre au moyen du menu d'options de la GeeXboX, selon le DVD que vous êtes amener à visionner. Il vous est également possible de spécifier la méthode de lecture par défaut au moyen du générateur d'ISO de la GeeXboX. | INSTALLATION | ~~~~~~~~~~~~ Le plus simple est de démarrer la GeeXboX depuis le CD est de taper "install" au prompt de démarrage. Répondez ensuite à toutes les questions. Lisez les questions avec attention et stoppez l'installation si vous ne comprenez pas ce que vous faites. | BOOT PXE | ~~~~~~~~ Oui, la GeeXboX est capable de booter depuis le réseau sur une machine sans disque ! Pour obtenir cela il vous faudra : - un serveur DHCP - un serveur TFTP - un serveur NFS - une machine supportant le PXE :-) * Depuis un poste GNU/Linux : ------------------------- Il faut tout d'abord configurer le server DHCP pour qu'il envoie les info de boot PXE. Voilà un exemple de configuration avec isc dhcp : allow booting; allow bootp; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.128 192.168.0.192; option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; next-server 192.168.0.1; filename "/tftpboot/GEEXBOX/boot/pxelinux.0"; } L'option next-server est l'adresse du server TFTP. Ensuite il faut configurer votre serveur TFTP (tel que atftpd) pour qu'il serve le répertoire /tftpboot et copier une arborescence GEEXBOX complète dans ce répertoire. Par exemple il est possible de copier le contenu d'un CD de GeeXboX depuis un linux AVEC L'OPTION CDROM TRANSPARENT DECOMPRESSION ACTIVE !! (pour vérifier cela, il suffit de regarder si le fichier sbin/init de l'arborescence GeeXboX ne contient pas de caractères totalement incohérents). Si vous avez compilé la GeeXboX vous même a partir des sources, il est aussi possible de générer l'arborescence GEEXBOX avec make pxe. Ensuite il faut éditer le fichier /tftpboot/GEEXBOX/boot/pxelinux.cfg/default pour faire correspondre le nfsroot au bon chemin NFS vers l'arborescence GeeXboX. Enfin il reste a configurer NFS pour qu'il exporte l'arborescence GEEXBOX avec un fichier /etc/exports ressemblant à ceci : /tftpboot/GEEXBOX (ro) et un /etc/hosts.allow ressemblant à : ALL: ALL Ca devrait être bon. Reste a booter la machine PXE et a voir ce qu'il se passe. * Depuis un poste Microsoft Windows : --------------------------------- Pour démarrer en mode PXE depuis un système Microsoft Windows, il vous faudra les logiciels suivants : * Un serveur TFTP et un serveur DHCP ("tftpd32" remplira cette tâche, il est disponible à l'adresse http://tftpd32.jounin.net/). * Un serveur NFS (comme par exemple "Allegro NFS server", disponible à l'adresse http://opensource.franz.com/nfs/). * Une machine supportant le boot en mode PXE. Téléchargez et décompressez (aucune installation n'est requise) le dossier tftpd32 quelque part sur votre disque, par exemple C:\tftpd32 Copiez y une arborescence GEEXBOX complète : C:\tftpd32\GEEXBOX Lancez tftpd32 : - Sélectionnez le dossier C:\tftpd32 pour "current directory". - choisissez l'interface (carte réseau) à utiliser en haut dans "server interface". Ici dans l'exemple une carte avec l'IP 192.168.0.1 - Cliquez sur "setting" et vérifiez que "DHCP server" soit bien cochée. - Dans l'onglet "DHCP server", remplissez les champs, en suivant cet exemple : (se référer à une documentation plus approfondie sur le fonctionnement d'un serveur DHCP pour plus de détails) * IP starting pool : 192.168.0.10 * Size of pool : 10 * Boot file : ./GEEXBOX/boot/pxelinux.0 * WINS/DNS server : 192.168.0.254 * Default router : 192.168.0.254 * Mask : 255.255.255.0 * Domain name : mydomain.net - Faites "save" pour appliquer les modifications. La première partie est terminée, normalement en démarrant la machine cliente (qui doit lancer la GeeXboX), on devrait apercevoir le chargement jusqu'à l'affichage du logo. Le système se bloquera alors, car le serveur NFS n'a pas encore été configuré. Installez "Allegro NFS Server" et configurez le comme suit : - Onglet Exports : * faites un "new name" : et nommez le "/tftpboot/GEEXBOX" * dans "path", juste en dessous : selectionnez le répertoire "C:\tftp32\GEEXBOX" * dans "allowed host list", selectionnez "all". * "Read write" , et "read only user list", selectionnez "root" et "everyone" (pour avoir un log, il suffit de tout cocher dans le dernier onglet). Faites "Appliquer". N'oubliez pas de modifier le fichier C:\tftp32\GEEXBOX\boot\pxelinux.cfg\default et d'y changer l'adresse IP "192.168.0.2" en "192.168.0.1" (ou toute adresse que vous aurez choisie). Il suffit maintenant de démarrer la machine cliente pour amorçer la GeeXboX par le réseau. | COMPILATION | ~~~~~~~~~~~ Tout d'abord, regardez la partie de configuration ci-dessous. Typiquement, la compilation s'effectue simplement au moyen de : make Ou vous pouvez directement compiler et graver l'ISO via : make burn Une fois cela fait, vous pouvez regagner de l'espace disque en effaçant l'arborescence de compilation via : make clean ou en effectant un nettoyage complet, éliminant même les sources téléchargées : make distclean Il existe également des commandes plus avancées si vous désirez effectuer des modifications en profondeur au niveau de la GeeXboX : scripts/get package # télécharge le paquetage scripts/unpack package # prépare le paquetage scripts/build package # compile le paquetage scripts/install package # installe le paquetage dans $INSTALL scripts/clean package # nettoie l'arborescence du paquetage scripts/clean --full package # nettoie les sources du paquetage make exec # lance la GeeXboX dans une cellule # ATTENTION: ceci est une fonction # expérimentale. # Utilisez là à vos propres risques. Si vous avez effectué une version modifiée de la GeeXboX, vous pouvez : construire une archive réduite tar.bz2 via : make dist ou une archive complète (avec l'intégralité des sources) au moyen de : make fulldist ou construire le générateur d'ISO : make generator ou encore l'installateur : make installator ou enfin une arborescence PXE : make pxe | CONFIGURATION | ~~~~~~~~~~~~~ * Options Globales : C'est la première chose dont vous aurez à vous soucier avant d'essayer de compiler la GeeXboX. Elles sont contenues dans le fichier config/options, et devraient être suffisamment explicites. * Linux : Il s'agit d'une configuration Linux classique (packages/linux/linux.conf). Vous pouvez éditer le fichier à la main, ou via scripts/unpack linux suivi de make menuconfig -C build/linux-* (ou utiliser votre méthode préférée en lieu et place de menuconfig). Puis, vous devrez sauvegarder votre fichier build/linux-*/.config dans packages/linux/linux.conf. * Lirc : Lirc vous permet de contrôler la GeeXboX en utilisant une télécommande. En premier lieu, vous aurez à choisir le fichier correspondant à votre télécommande dans build/lirc-*/remotes (après avoir effectué scripts/unpack lirc) et l'ajouterez à packages/lirc/install. Puis, choisissez votre périphérique (par défaut, il s'agit de /dev/ttyS0 (COM1)) et le pilote lirc et mettez le tout dans un fichier nommé packages/lirc/lircd_$REMOTE. Vous pourrez ensuite choisir l'affectation des touches dans le fichier packages/lirc/lircrc_$REMOTE. Pour chaque affectation, vous aurez à chosir un bouton (choisissez leurs noms dans le fichier de définitions de la télécommande) et associez lui une action. L'action sera une de celle disponible dans MPlayer (vous pouvez trouver une liste dans le fichier html build/MPlayer-*/DOCS/documentation.html#commands). | MODIFICATION | ~~~~~~~~~~~~ La première chose dont vous aurez àvous soucier concerne le script d'initialisation. En fait, ils sont 2. Le premier est dans packages/initrd/linuxrc mais vous ne devriez pas avoir besoin de le modifier. Le second est config/init et c'est dans ce dernier que vous aurez de probables modifications à effectuer. Puis, vous pourrez être intéressés par l'ajout de nouveaux paquetages. Un paquetage n'est implement qu'un ensemble de scripts qui se doivent de suivre certaines règles. Tous les scripts se doivent d'être placés dans un répertoire dont le nom coïncide avec celui du programme que vous désirez ajouter, lui-même dans le répertoire packages. Voici une liste de scripts que vous aurez à créer : - url : simple liste d'URLS où sont disponibles les sources. - unpack : que faire après avoir décompresser les sources. Par exemples, vous pouvez modifier les fichiers de configuration. Ceci ne concerne pas l'application de patchs. - need_build : appelé lorsque le paquetage a déjà été compilé, afin de s'assurer qu'il n'aura plus besoin d'être recompilé. Il devrait supprimer le fichier .stamps/"package name"/build si le paquetage nécessite d'être reconstruit. - build : l'ensemble des étapes nécessaires pour compiler le programme. - install : l'ensemble des étapes nécessaires à l'installation du programme. Le préfixe d'installation devrait être $INSTALL. De plus, le répertoire décrivant un paquetage peut contenir de nombreux sous-répertoires additionnels : - config : c'est là que sont situés tous les fichiers de configuration. Ces derniers peuvent être, soit utilisés par le script build pour compiler le paquetage, soit par le script install pour être copiés dans le répertoire /etc de destination. - scripts : ce sous-répertoire peut contenir des scripts d'initialisation lié au paquetage courant et qui seront installés par le script install - patches : ce sous-répertoire peut contenir des patchs destinés à être appliqués aux sources du paquetage, au moment du script unpack. - sources : si des fichiers sont présents dans ce sous-répertoire, ils seront automatiquement copiés dans l'arbre de compilation du paquetage. - init.d : contient les scripts d'initialisation qui seront éxécutés au chargement du système. Vous devez avoir à l'esprit que les applications qui tournent sous le système GeeXboX doivent avoir été compilé avec la librairie uClibc. Enfin, la meilleure manière d'ajouter un paquetage est de s'inspirer de la façon dont les actuels sont faits. | LICENSE | ~~~~~~~ Tous les programmes utilisés par GeeXboX sont protégés par leurs licenses respectives. Tous ces logiciels sont libres et, pour la plupart, protégés par une licence GPL (License Publique Générale) La GeeXboX elle-même, c'est à dire tous les scripts utilisé et le système de compilation, est couvert par la licence GNU-GPL. geexbox-1.1/DOCS/README_it.txt0000644000175000017500000004150710641745504014045 0ustar benben ooooo oo o o oo o M" "Mo Mo oM" M Mo oM" M oM""Mo oM""Mo "Mo" Mo"""o oM""Mo "Mo" M """M MooooMM MooooMM oMMo M "M M M oMMo "o oM M o M o oM Mo M oM M M oM Mo "MoooM"M "MooM" "MooM" M" "M M"ooo" "MooM" M" "M | INFORMAZIONI | ~~~~~~~~~~~~ GeeXboX è una sorta di software per "divx box". Infatti, è un boot CD stand-alone che permette di vedere film o ascoltare musica. Supporta molti formati, come avi, mpeg, divx, ogm, rm, mp3, ogg, dvd, vcd e cdda. Supporta inoltre qualche telecomando IR e il TV-Out per qualche scheda grafica. Questo archivio contiene gli script che servono per creare un'immagine iso di GeeXboX. | REQUISITI | ~~~~~~~~~ Per creare una iso di GeeXboX, occorre una delle seguenti configurazioni : - un sistema GNU/Linux con mkisofs e mkzftree. - un sistema MAC OS X con mkisofs e mkzftree. - un sistema windows. Per installare GeeXboX, occorre : - un sistema GNU/Linux con syslinux. Per compilare GeeXboX, occorrono dei tools classici : - un sistema GNU/Linux funzionante. - il compilatore C gcc. - GNU make - il comando patch. - l'assembler nasm. - bzip2 e gzip. - mkfs.ext2 e mkfs.vfat - il tool di download wget (non occorre per il pacchetto competo di GeeXboX). - mkisofs e mkzftree per creare l'immagine iso. - mkzftree per comprimere i file nell'immagine iso. - cdrecord (per masterizzare l'immagine). E anche 500 MB di spazio libero su disco. | PERSONALIZZAZIONE | ~~~~~~~~~~~~~~~~~ Quando GeeXboX è installato su disco o generato, è facile da personalizzare. E' possibile aggiugnere alcuni codecs proprietari come rv9 o wmv9, semplicemente aggiugnendoli nella cartella GEEXBOX/codecs. Si possono trovare questi codecs nel pacchetto: http://www.geexbox.org/releases/geexbox-extra-codecs-nonfree.tar.gz E' possibile inoltre modificare molte opzioni. Questo è possibile modificando semplicemente qualche file di testo. * Linguaggio : E' possibile selezionare il linguaggio di menu preferito seguendo la seguente procedura: - Utenti GNU/Linux: Modificare lo script generator.sh prima di eseguirlo, cambiando la linea verso l'inizio del file: "MENU_LANG=en" con il linguaggio preferito. Esempio: se sei italiano, cambia la linea in "MENU_LANG=it". - Utenti Microsoft Windows: Quando viene eseguito, generator.exe permette di selezionare la lingua preferita tramite una lista a tendina. NB : Questa modifica non ha effetti sul linguaggio del DVD (leggere la sezione MPlayer section). Per la lista dei linguaggi disponibili sfogliare la directory "language". Se la tua lingua non è disponibile, puoi tradurre il menù nella tua lingua. Questo comporta la creazione dei file language/menu_LANG.conf e language/help_LANG.txt. * MPlayer : In questa sezione è possibile effettuare la maggior parte della configurazione e tweaking. Le opzioni sono salvate nel file packages/MPlayer/mplayer.conf. E' possibile modificare opzioni come la dimensione del font dell'OSD (subfont-text-scale). E' possibile inoltre aggiungere molte opzioni come la lingua predefinita per il DVD (es: alang=it,en). Il posto migliore per trovare tutte le opzioni, per utenti linux, è la manpage di MPlayer (man -l build/MPlayer-*/DOCS/mplayer.1). Inoltre è consigliato visitare la documentazione di MPlayer (in build/MPlayer-*/DOCS o al link http://mplayerhq.hu/DOCS/). un altro file che è possibile modificare è packages/MPlayer/menu.conf. E' possibile rimuovere gli elementi non utilizzati, oppure è possibile tradurli nella propria lingua. L'ultimo file utile per la configurazione è packages/MPlayer/build che contiene la selezione di opzioni che sono incluse in MPlayer. * uscita TV : L'abilitazione del TV-Out è possibile con l'aiuto di alcune piccole applicazioni dedicate alle varie marche di schede video. Attualmente viene utilizzato atitvout per le schede ATI, s3switch per le schede S3 e nvtv per le schede nVidia cards (e, ove possibile, schede intel i810 e 3dfx). La configurazione di questi programmi è effettuata in config/tvout. In questo file è possibile scegliere lo standard TV (pal, ntsc...) ed è inoltre possibile modificare le opzioni specifiche per nvtv. Si può definire l'aspetto (4:3 o 16:9) in questo file alla linea: TVOUT_ASPECT="4:3" Questo parametro verrà utilizzato sia per il TVOut che per i monitor. E' possibile specificare anche l'altezza/larghezza dello schermo e le frequenze orizzontale e verticale, in caso di schermi non standard, come WideScreens or videoproiettori. Questo può essere fatto modificando il file /etc/mplayer/mplayer.conf. I parametri predefiniti sono indicati di seguito (decommentare le linee relative alle frequenze se si vogliono utilizzare): screenw=800 screenh=600 #monitor-hfreq=31.5k-50k #monitor-vfreq=50-90 * Lirc : E' possibile scegliere uno dei telecomandi supportati modificando il file GEEXBOX/etc/remote. Fare attenzione a scegliere anche il corrispondente ricevitore ir nello stesso file di configurazione. Se si vuole modificare la configurazione dei tasti del proprio telecomando, modificare il file GEEXBOX/etc/lirc/lircrc_TELECOMANDO. * rete : E' possibile configuare la rete nel file GEEXBOX/etc/network. Si può scegliere l'indirizzo IP utilizzato da GeeXboX (il predefinito è di utilizzare DHCP e se non funziona, utilizzare l'ip 192.168.0.54). E' possibile inoltre specificare un login e una password che sarnno usati per connettersi con le condivisioni windows (predefinito: anonimo). E' inoltre possibile dichiarare i mount NFS in GEEXBOX/etc/nfs. * wifi : Come impostazioni predefinite, GeeXboX cerca di rilevare automaticamente le impostazioni di rete. Se sulla macchina sono installate sia una scheda di rete (NIC) e una scheda WiFi, solo quest'ultima sarà impostata. Per impostare correttamente la rete, può essere necessario modificare il file /etc/network. In questo file ci sono 4 linee riguardanti le schede wireless : * PHY_TYPE="auto" # Tipo fisico di rete (auto|ethernet|wifi) * WIFI_MODE="managed" # metodo di utilizzo Wifi (managed|ad-hoc) * WIFI_WEP="" # chiave WEP Wifi * WIFI_ESSID="any" # SSID Wifi Con queste linee è possibile configurare la gran parte delle impostazioni. E' possibile lasciare la rilevazione automatica oppure forzare l'uso della scheda ethernet o dell'adattatore WiFi. Allo stesso modo, è possibile scegliere tra il metodo managed e ad-hoc e definire la propria chiave WEP e SSID. * gateway : GeeXboX supporta l'accesso a Internet. Nel caso in cui tu abbia una connessione Internet, è possibile condividerla con il proprio multimedia box, utilizzando un router o un gateway. Per fare ciò, è necessario definire l'indirizzo IP del gateway nel file /etc/network. * GATEWAY="" # Gateway IP ("" per DHCP o nessuna connesione internet) * configuraqzione tv : GeeXboX supporta le entrate e i sintonizzatori TV. Il sistema cercherà di rilevare automaticamente la scheda e il sintonizzatore. E' possibile forzare le impostazioni e saltare i tentativi di rilevamento. Modificare il file /etc/tvcard come descritto : #TV CARD/TUNER Model (AUTO for autodetection or look at the following urls) #http://www.linuxhq.com/kernel/v2.6/2/Documentation/video4linux/CARDLIST.bttv #http://www.linuxhq.com/kernel/v2.6/2/Documentation/video4linux/CARDLIST.tuner TV_CARD=AUTO TV_TUNER=AUTO TVIN_STANDARD=pal Lasciare il parametro AUTO se si vuole mantenere il rilevazione automatica, oppure sostiruirlo con il numero del tipo di scheda e sintonizzatore in possesso, in base alle informazioni dei precedenti URL. Prestare molta attenzione: per forzare il tipo si scheda e sintonizzatore occorre conoscere l' ESATTO MODELLO del proprio hardware. Successivamente, dovrebbe essere possibile utilizzare l'input TV (Composito e S-VHS) della propria scheda TV. Allo stesso modo, sarà possibile usare il sintonizzatore per guardare la TV. Per fare ciò, è necessario specificare la regione di appartenenza e la frequenza dei canali TV che si vogliono visualizzare. Anche questa volta basta modificare il file /etc/tvcard : # TV Channels # Syntax : CHAN="Channel Frequency:Channel Title" # Example : # CHAN="29:France 2" # CHAN="K08:Canal +" # TV Channels List # Available : france, europe-east, europe-west, us-bcast, us-cable CHANLIST=france Prestare attenzione nell'usare la stessa sintassi descritta sopra, affinchè i canali TV siano presenti nel menu principale. * configurazione audio : GeeXboX supporta sia l'ourput audio analogico che digitale attraverso i connettori jack o RCA SPDIF. L'uscia predefinita è quella analogica. E' possibile cambiare tale impostaizone modificando il file /etc/audio : # Output using SPDIF (yes/no), otherwise ANALOG output SPDIF=no Ricorda che è necessario impostare l'uscita su SPDIF se si vuole collegare la scheda audio ad un amplificatore esterno per decodificare gli stream AC3/DTS (utilizzando il passthrough mode). * Scheda DXR3/Hollywood+ : Gli utenti con questo tipo di scheda di decompressione hardware NON hanno bisogno di una scheda video o audio per utilizzare GeeXboX. Per contro, è possibile utilizzare solo l'uscita TV con le schede DXR3 (niente monitor). E' necessario specificare il corretto stadard (PAL/NTSC) nel file /etc/tvout e il tipo di uscita audio da utilizzare (Analogica o SPDIF) in /etc/audio. | CREAZIONE | ~~~~~~~~~ Prima di tutto, leggere la sezione di personalizzaizone qui sopra. Una vota personalizzata, è possibile crare la iso sotto Linux, lanciando ./generator.sh o sotto windows, lanciando generator.exe | INSTALLAZIONE | ~~~~~~~~~~~~~ Inizialmente è necessario creare una partizione FAT16 con circa 16 MB di spazio libero. E' possibile installare GeeXboX sotto linux lanciando ./installator.sh E rispondendo alle domande poste dal programma. Ponete molta attenzione durante questi passaggi. Leggere due volte ogni domanda e uscire dall'installazione se non si capisce una domanda. | PXE BOOT | ~~~~~~~~ Sì, GeeXboX può avviarsi dalla rete da una stazione denza disco! Per raggiungere lo scopo è necessario: - un server DHCP - un server TFTP - un server NFS - una stazione che può utilizzare PXE :-) Configurare il server dhcp affinchè invii le informazioni di boot PXE. Ecco un esempio con isc dhcp : allow booting; allow bootp; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.128 192.168.0.192; option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; next-server 192.168.0.1; filename "/tftpboot/GEEXBOX/boot/pxelinux.0"; } L'opzione next-server è l'indirizzo del server TFTP. Configurare il server TFTP (ad esempio atftpd) affichè pubblichi la cartella /tftpboot e copiare l'intera direcroty GEEXBOX in questa cartella. Ad esempio, si può copiare il contenuto di un CD GeeXboX da un sistema linux CON "CDROM TRANSPARENT DECOMPRESSION" ABILITATA !! (per verificare questo, controllare il file sbin/init nella directory GeeXboX e verificare che non contenga sporcizia) Se è stato compilato GeeXboX dai sorgenti, è possibile anche generare la directory GEEXBOX con make pxe. Modificare il file /tftpboot/GEEXBOX/boot/pxelinux.cfg/default per impostare nfsroot al giusto percorso NFS della directory GEEXBOX. Infine impostare NFS per esportare la directory GEEXBOX tramite /etc/exports contenente una riga simile alla seguente : /tftpboot/GEEXBOX (ro) e /etc/hosts.allow contenente qualcosa come: ALL: ALL Dovrebbe funzionare. Avviare la stazione PXE e vedere quello che accade. | COMPILAZIONE | ~~~~~~~~~~~~ Prima di tutto è consigliabile controllare la sezione di configurazione subito sotto (almeno la parte generale). Dopo di ciò, compilare l'immagine iso con : make Oppure è possibile masterizzare direttamente l'immagine con : make burn Quando la compilazione è completata, è possibile liberare spazio su disco pulendo la directory di compilazione : make clean oppure facendo una pulizia completa, eliminando anche i sorgenti scaricati : make distclean Ci sono anche comandi più avanzati, se si vuole fare un po' di hack di GeeXboX: scripts/get package # scarica il pacchetto scripts/unpack package # scompatta e prepara il pacchetto scripts/build package # compila il pacchettobuild scripts/install package # installa il pacchetto con il prefisso $INSTALL scripts/clean package # pulisce la directory dei sorgenti del pacchetto make exec # lancia direttamente GeeXboX in una [prigione] # ATTENZIONE: funzione sperimentale, # usare a proprio rischio. Se avete fatto una versione modificata di GeeXboX, è possibile compilare facilmente un piccolo tar.bz2 con : make dist oppure un tar completo (contenente tutti i sorgenti) con : make fulldist oppure un geexbox generator con : make generator oppure un geexbox installator con : make installator oppure una directory per pxe con : make pxe | CONFIGURAZIONE | ~~~~~~~~~~~~~~ * Opzioni generali : Questa è la prima cosa alla quale prestare attenzione prima di provare a compilare GeeXboX. Tali opzioni sono memorizzate nel file config/options, e dovrebbero spiegarsi da sole. Si può scegliere la famiglia di CPU, il tema, e se si vogliono font truetype o no. E' possibile modificare la configurazione del masterizzatore cd per poter masterizzare direttamente l'immagine iso. * Linux : Questa è una configurazione classica di linux (packages/linux/linux.conf). E' possibile modificarla a mano, oppure usare anche scripts/unpack linux e make menuconfig -C build/linux-* (o utilizzare il metodo preferito al posto di menuconfig). Infine fare un backup di build/linux-*/.config in packages/linux/linux.conf. * Lirc : Lirc permette di controllare GeeXboX usando un telecomando. Inizialmente occorre scegliere il file che descrive il proprio telecomando in build/lirc-*/remotes (dopo aver eseguito scripts/unpack lirc) e aggiungerlo in packages/lirc/install. Fatto questo, occorre scegliere la periferica (la predefinita è /dev/ttyS0 (COM1)) e il driver lirc, inserendoli in un file chiamato packages/lirc/lircd_$TELECOMANDO. E' possibile definire i tasti nel file packages/lirc/lircrc_$TELECOMANDO. Per ogni definizione occorre selezionare un tasto (utilizzando i nomi nel file di descrizione del telecomando) e associare un'azione a tale tasto. L'azione è una delle azioni di MPlayer's (si può trovare una lista nel file html build/MPlayer-*/DOCS/documentation.html#commands). | HACKING | ~~~~~~~ La prima cosa da controllare sono gli script di inizializzazione. Infatti, ci sono due script di installazione. Il primo è in packages/initrd/linuxrc, ma non ci dovrebbe essere bisogno di modificarlo. Il secondo è in config/init ed è quello in cui è possibile aggiongere qualche personalizzazione. La cosa successiva che può interessare è la creazione di un nuovo "pacchetto". Un pacchetto è un insieme di script che seguono alcune regole. Tutti gli script devono essere memorizzati in una directory chiamata come il programma che si vuole "impacchettare", che sta nella directory packages. Di seguito la lista degli script da cerare : - url : una lista di url dove trovare i sorgenti del programma. - unpack : cosa fare dopo aver scompattato i sorgenti. Ad esempio, è possibile modificare i file di configurazione. Questo non include l'applicazione delle patch. - need_build : chiamato quando il pacchetto è già compilato, per essere sicuri che non necessita di ricompilazione. Dovrebbe eliminare il file .stamps/"nome pacchetto"/build se il pacchetto necessita di ricompilazione. - build : tutti i passaggi necessari per compilare il programma. - install : tutti i passaggi necessari per installare il programma. Il prefisso di installazione deve essere $INSTALL. Quando un file degli url è chiamato patch-nome_programma-... è applicato automaticamenteit ai sorgenti scompattati del programma. Ricordare inoltre che il software utilizzato in GeeXboX deve essere compilato con il gcc wrapper uClibc. Se si è ancora incerti, la via migliore per creare un pacchetto è guardare come sono fatti gli altri pacchetti. | LICENZA | ~~~~~~~ Tutti i programmi utilizzati da GeeXboX sono protetti dalle rispettive licenze. Sono tutti software liberi e molti di questi sono regolati dalla GNU General Public License. GeeXboX per sè, intesa come tutti gli script utilizzati nel processo di compilazione, sono regolati dalla GNU General Public License. geexbox-1.1/DOCS/README_ru.txt0000644000175000017500000010165310641745504014056 0ustar benben ooooo oo o o oo o M" "Mo Mo oM" M Mo oM" M oM""Mo oM""Mo "Mo" Mo"""o oM""Mo "Mo" M """M MooooMM MooooMM oMMo M "M M M oMMo "o oM M o M o oM Mo M oM M M oM Mo "MoooM"M "MooM" "MooM" M" "M M"ooo" "MooM" M" "M О GeeXboX. GeeXboX - Ñвоего рода "divx коробка". ФактичеÑки, Ñто незавиÑимый загрузочный CD, который позволÑет Ñмотреть фильмы и Ñлушать музыку. GeeXboX поддерживает много форматов, например, такие как: avi, mpeg, divx, ogm, rm, mp3, ogg, dvd, vcd и cdda. GeeXboX также поддерживает некоторые ir-пульты диÑтанционного ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ tv-out Ð´Ð»Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… графичеÑких карт. Этот архив Ñодержит необходимые Ñценарии Ð´Ð»Ñ Ñборки iso образа GeeXboX. ТребованиÑ. Ð”Ð»Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ð¸ iso образа GeeXboX необходимо одно из Ñледующего: - GNU/Linux ÑиÑтема Ñ mkisofs и mkzftree - MAC OS X ÑиÑтема Ñ mkisofs и mkzftree - windows ÑиÑтема Ð”Ð»Ñ ÑƒÑтановки GeeXboX, Вам потребуетÑÑ: - GNU/Linux ÑиÑтема Ñ syslinux Ð”Ð»Ñ Ñборки GeeXboX, Вам будут необходимы некоторые клаÑÑичеÑкие инÑтрументы: - Ñ€Ð°Ð±Ð¾Ñ‚Ð°ÑŽÑ‰Ð°Ñ GNU/Linux ÑиÑтема - gcc C компилÑтор - GNU make - patch - nasm assembler - bzip2 и gzip - mkfs.ext2 и mkfs.vfat - wget загрузчик (не требуетÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ набора GeeXboX) - mkisofs и mkzftree Ð´Ð»Ñ Ñборки iso образа - mkzftree Ð´Ð»Ñ ÑÐ¶Ð°Ñ‚Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² iso образа - cdrecord (Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð¶Ð¸Ð³Ð° iso образа) Так же необходимы 1.2 Гб Ñвободного меÑта на жеÑтком диÑке. ПерÑÐ¾Ð½Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ ÐšÐ¾Ð³Ð´Ð° GeeXboX уÑтановлен на жеÑткий диÑк или Ñгенерирован, его довольно легко перÑонализировать. Ð’Ñ‹ можете добавить некоторые проприетарные кодеки, такие как rv9 или wmv9, проÑто, помеÑтив их в директорию GEEXBOX/codecs. Ð’Ñ‹ можете найти Ñти кодеки в пакете на http://www.geexbox.org/releases/geexbox-extra-codecs-nonfree.tar.gz Также Ð’Ñ‹ можете изменить много опций. Ð”Ð»Ñ Ñтого проÑто отредактируйте некоторые текÑтовые файлы. Язык - можно легко выбрать предпочитаемый Вами Ñзык меню, ÑÐ»ÐµÐ´ÑƒÑ Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ð¾Ð¹ ниже процедуре: - GNU/Linux пользователи: Отредактируйте Ñкрипт generator.sh перед его выполнением и измените Ñтроку в начале: "MENU_LANG=en" на предпочитаемый Вами Ñзык. Ðапример, еÑли Ð’Ñ‹ француз, измените Ñто так "MENU_LANG=fr". - Microsoft Windows пользователи: ПоÑле запуÑка generator.exe предоÑтавлÑет комбинированный ÑпиÑок, который позволÑет выбрать, предпочитаемый Вами Ñзык. Замечание: Ñто не влиÑет на Ñзык DVD (Ñмотрите раздел MPlayer). ПожалуйÑта, проÑмотрите директорию "language", в ней ÑпиÑок доÑтупных Ñзыков. ЕÑли Ваш Ñзык не доÑтупен, Ð’Ñ‹ можете перевеÑти меню на Ваш Ñзык. Выполнить Ñто проÑто, Ñоздав language/menu_LANG.conf и language/help_LANG.txt, и добавив LANG в language/lang.conf. MPlayer: ЗдеÑÑŒ Ð’Ñ‹ можете уÑтановить большинÑтво параметров конфигурации и выполнить наÑтройки. Опции задаютÑÑ Ð² файле packages/MPlayer/mplayer.conf. Можно модифицировать такие опции, как, например, размер OSD шрифта (subfont-text-scale). Так же можно добавить много опций, таких, как предопределенный Ñзык DVD (например, alang=fr,en). Лучшее меÑто, где можно найти опиÑание - Ñто руководÑтво MPlayer Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹ Linux (man -l build/MPlayer-*/DOCS/mplayer.1). Ð’Ñ‹ так же должны ознакомитьÑÑ Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸ÐµÐ¹ MPlayer (в build/MPlayer-*/DOCS или на http://mplayerhq.hu/DOCS/). Другой файл, который Ð’Ñ‹ можете модифицировать - Ñто packages/MPlayer/menu.conf. Можно убрать чаÑти не нужные Вам, или например, перевеÑти, нужные чаÑти на Ваш Ñзык. Затем, поÑледний файл, на который Ñледует обратить внимание Ñто packages/MPlayer/build. Он Ñодержит набор опций, которые будут вÑтроены в MPlayer. tv-out: Включение tv-out доÑтигаетÑÑ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ набора маленьких программ, предназначенных Ð´Ð»Ñ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ñ… видеокарт разных брÑндов. Ð’ наÑтоÑщее времÑ, мы иÑпользуем atitvout Ð´Ð»Ñ ATI карт, s3switch Ð´Ð»Ñ S3 карт и nvtv Ð´Ð»Ñ nVidia карт (и, возможно, intel i810 и 3dfx). Эти программы конфигурируютÑÑ Ð² config/tvout. ЗдеÑÑŒ Ð’Ñ‹ можете выбрать, желаемый tv Ñтандарт (pal, ntsc...), а так же модифицировать Ñпециальные опции Ð´Ð»Ñ nvtv. # TV Output Standard (ntsc/pal/secam) TVOUT_STANDARD=pal ПожалуйÑта, заметьте, что Ð’Ñ‹ так же можете определить выходное Ñоотношение (Ñкажем 4:3 или 16:9 Ñкран) в Ñтом файле, Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€ÑƒÑ Ñтроку: TVOUT_ASPECT="4:3" Этот параметр будет иÑпользоватьÑÑ Ð¸ Ð´Ð»Ñ tv-out и Ð´Ð»Ñ Ð¾Ð±Ñ‹Ñ‡Ð½Ð¾Ð³Ð¾ (CRT/TFT) диÑплеев. Ð’Ñ‹ можете так же определить желаемые Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð²Ñ‹Ñоты/ширины Вашего диÑÐ¿Ð»ÐµÑ Ð¸ горизонтальные и вертикальные чаÑтоты Ð´Ð»Ñ Ñ‚Ð°ÐºÐ¸Ñ… Ñлучаев, как широкий Ñкран или видеопроектор. Это может быть выполнено, редактированием /etc/mplayer/mplayer.conf файла. Параметры по-умолчанию показаны ниже (пожалуйÑта, раÑкомментируйте Ñтроки, отноÑÑщиеÑÑ Ðº чаÑтоте, еÑли Ð’Ñ‹ хотите иÑпользовать их): screenw=800 screenh=600 #monitor-hfreq=31.5k-50k #monitor-vfreq=50-90 Lirc : Ð’Ñ‹ можете выбрать один из поддерживаемых пультов диÑтанционного управлениÑ, Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€ÑƒÑ Ñ„Ð°Ð¹Ð» GEEXBOX/etc/remote. Так же позаботьтеÑÑŒ о выборе ÑоответÑтвующего ir приемника в том же конфигурационном файле. ЕÑли Ð’Ñ‹ хотите изменить привÑзку клавиш Вашего пульта диÑтанционного управлениÑ, поÑмотрите в файле GEEXBOX/etc/lirc/lircrc_REMOTE. Сеть: Ð’Ñ‹ можете Ñконфигурировать Ñеть в файле GEEXBOX/etc/network. ЗдеÑÑŒ Ð’Ñ‹ можете выбрать ip адреÑ, иÑпользуемый GeeXboX (изначально иÑпользуетÑÑ DHCP и еÑли Ñто не Ñрабатывает, возвращаемÑÑ Ðº 192.168.0.54). Ð’Ñ‹ можете также определить логин и пароль, которые будут иÑпользоватьÑÑ Ð´Ð»Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ Ð´Ð¾Ñтупными реÑурÑами windows (изначально будет только Ñоединение Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾ доÑтупными реÑурÑами). Ð’Ñ‹ можете так же объÑвить монтирование некоторых NFS в GEEXBOX/etc/nfs. wifi: Изначально, GeeXboX пытаетÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки определить Ваши Ñетевые уÑтановки. ЕÑли Ð’Ñ‹ имеете обе традиционные NIC и WiFi карты только поÑледнÑÑ Ð±ÑƒÐ´ÐµÑ‚ задейÑтвована. Ð’Ñ‹ можете изменить /etc/network файл Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð’Ð°ÑˆÐ¸Ñ… Ñетевых уÑтановок. Ð’ нем 4 Ñтроки отноÑÑÑ‚ÑÑ Ðº беÑпроводным картам : - PHY_TYPE="auto" # физичеÑкий тип Ñети (auto|ethernet|wifi) - WIFI_MODE="managed" # wifi рабочий режим (managed|ad-hoc) - WIFI_WEP="" # wifi WEP ключ - WIFI_ESSID="any" # wifi SSID Эти Ñтрочки позволÑÑŽÑ‚ Вам Ñконфигурировать большинÑтво уÑтановок. Ð’Ñ‹ можете разрешить включение Ð°Ð²Ñ‚Ð¾Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ Ñвно указать иÑпользование ethernet или wifi адаптеров. Тем же путем можно выбрать между управлÑемым и ad-hoc режимом и определить Ваш WEP ключ и SSID. gateway: GeeXboX поддерживает доÑтуп к Internet. Ð’ Ñлучае, когда у Ð’Ð°Ñ ÐµÑть Ñоединение Ñ Internet, Ð’Ñ‹ можете Ñделать его доÑтупным Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Вашего мультимедиа набора, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ router или gateway. Ð”Ð»Ñ Ñтого, проÑто задайте gateway ip Ð°Ð´Ñ€ÐµÑ Ð² файле /etc/network. - GATEWAY="" # Gateway ip ("" Ð´Ð»Ñ DHCP или отÑутÑтвующего internet ÑоединениÑ) tv конфигурациÑ: GeeXboX поддерживает tv ввод и приемники. СиÑтема уÑердно ÑтараетÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки определить карту и приемник. Ð’Ñ‹ можете задать уÑтановки и отменить попытку автоопределениÑ. ПожалуйÑта, измените /etc/tvcard, как показано: #TV CARD/TUNER Model (AUTO Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ поÑмотрите по Ñледующим интернет адреÑам) #http://www.linuxhq.com/kernel/v2.6/2/Documentation/video4linux/CARDLIST.bttv #http://www.linuxhq.com/kernel/v2.6/2/Documentation/video4linux/CARDLIST.tuner TV_CARD=AUTO TV_TUNER=AUTO TVIN_STANDARD=pal ПожалуйÑта, оÑтавьте AUTO параметр, еÑли желаете задейÑтвовать автоопределение, или замените его номером Вашей карты и типом приемника, в ÑоответÑтвии Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ интернет адреÑами. ПожалуйÑта, будьте оÑторожны: в Ñлучае ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ ÐºÐ°Ñ€Ñ‚Ñ‹ и типов приемников, Ð’Ñ‹ должны знать ТОЧÐЫЕ Ð¥ÐРÐКТЕРИСТИКИ Вашего аппаратного обеÑпечениÑ. Выполнив Ñто, Ð’Ñ‹ должны быть ÑпоÑобны иÑпользовать tv входы (Composite и S-VHS) на Вашей tv карте. Тем же путем, Ð’Ñ‹ можете иÑпользовать приемник Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра tv. Ð”Ð»Ñ Ñтого, Ð’Ñ‹ должны будете задать регион принадлежноÑти и чаÑтоту tv каналов, которые Ð’Ñ‹ хотите Ñмотреть. Еще раз, проÑто отредактируйте файл /etc/tvcard: # tv каналы # ÑинтакÑ: CHAN="чаÑтота канала:название канала" # пример: # CHAN="29:France 2" # CHAN="K08:Canal +" # ÑпиÑок tv каналов # доÑтупные: france, europe-east, europe-west, us-bcast, us-cable CHANLIST=france ПожалуйÑта, будьте оÑторожны, когда редактируете каналы и проÑто иÑпользуйте такой ÑинтакÑиÑ, как указан выше, и tv каналы будут приÑутÑтвовать в оÑновном меню. аудио конфигурациÑ: GeeXboX поддерживает оба - аналоговый и цифровой аудио выходы через Ñтандартные JACK Ñоединители или через RCA SPDIF. Изначально, уÑтановлен аналоговый выход. Ð’Ñ‹ можете изменить Ñто, Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€ÑƒÑ Ñ„Ð°Ð¹Ð» /etc/audio: # Выход, иÑпользующий SPDIF (yes/no), иначе ANALOG выход SPDIF=no Помните, что Вам потребуетÑÑ ÑƒÑтановка выхода в SPDIF, еÑли Ð’Ñ‹ захотите Ñоединить Вашу звуковую карту Ñ ÐºÐ°ÐºÐ¸Ð¼-нибудь внешним уÑилителем Ð´Ð»Ñ Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ AC3/DTS потоков (иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ñквозной режим). видео обработка: Обработка Ñто программный путь Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÐµÐµ гладкого и более точного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð’Ð°ÑˆÐ¸Ñ… видео запиÑей. Это, тем не менее, задейÑтвует доÑтаточно реÑурÑов CPU Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ°Ð´Ñ€Ð¾Ð² но, как результат, они выглÑдÑÑ‚ гораздо лучше. ИÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ðµ фильтры MPlayer, GeeXboX позволÑет выполнÑть h/v разблокирование, шумоподавление и автоподÑветку Ð´Ð»Ñ ÑƒÐ»ÑƒÑ‡ÑˆÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ. Изначально, обработка отключена Ð´Ð»Ñ Ð¸Ð·Ð±ÐµÐ¶Ð°Ð½Ð¸Ñ Ð·Ð°Ð¿Ð°Ð·Ð´Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð½Ð° Ñлабых ÑиÑтемах. Ð’Ñ‹ можете включить ее проÑто Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€ÑƒÑ Ñ„Ð°Ð¹Ð» /etc/mplayer/mplayer.conf: # УÑтановка обработки (h разблокирование, v разблокирование, шумоподавление, автоподÑветка) # Поглощает CPU мощноÑть, отключено Ð´Ð»Ñ Ñлабых ÑиÑтем, раÑкомментируйте Ð´Ð»Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ #vf=pp=hb:a/vb:a/dr:a/al:a DXR3/Hollywood+ карты: ПользователÑм Ñ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ñ‹Ð¼ обеÑпечением подобного типа разжимающих карт даже ÐЕ нужно иметь видео и звуковую карту Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ GeeXboX. Так, только tvout коннектор может быть иÑпользован Ñ DXR3 картами (нет CRT диÑплеÑ). Ð’Ñ‹ можете уÑтановить требуемую нормировку образа (PAL/NTSC) в файле /etc/tvout и качеÑтво выходного аудио, которое Ð’Ñ‹ хотите иÑпользовать (Ðналоговый или SPDIF) в /etc/audio. ГенерациÑ. Во-первых, ознакомьтеÑÑŒ Ñ Ð¿ÐµÑ€Ñонализационной чаÑтью приведенной выше. Затем, в оÑновном, Ð’Ñ‹ можете Ñгенерировать iso под Linux, выполнив ./generator.sh или под windows, выполнив generator.exe Дополнительные подзаголовочные шрифты. Во-первых, убедитеÑÑŒ, что Ваш шрифт не включен в официальный GeeXboX пакет, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð³ÐµÐ½ÐµÑ€Ð°Ñ‚Ð¾Ñ€ и определÑÑ Ð’Ð°Ñˆ шрифт в вышеуказанной Ñекции. БольшинÑтво шрифтов уже включены в официальный пакет, некоторые поддерживаютÑÑ, но не включены по причине их чрезмерной величины (например, китайÑкие шрифты). ÐžÐ±Ñ‰Ð°Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ°: Ð”Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¸ новых шрифтов Ð’Ñ‹ должны извлечь ваш шрифт в шрифт директорию и добавить название шрифта в language/lang.conf - Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ FONTS. Поддержка китайÑкого: Ð”Ð»Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ ÐºÐ¸Ñ‚Ð°Ð¹Ñких шрифтов в генерируемом geexbox iso Ð’Ñ‹ должны получить любой - big5 или gb2312 шрифт из раÑпроÑтранÑемых Ñ MPlayer шрифтов: http://www1.mplayerhq.hu/MPlayer/contrib/fonts/chinesefonts/ и раÑпаковать, и Ñкопировать в директорию генератора ./font/big5 или ./font/gb2312, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¾ÐºÐ°Ð½Ñ‡Ð¸Ð²Ð°ÐµÑ‚ÑÑ Ð½Ð° `24` (размер шрифта 24). Ðапример, еÑли Ð’Ñ‹ желаете иÑпользовать 'gb2312 kai' шрифт: - GNU/Linux пользователи: wget http://www1.mplayerhq.hu/MPlayer/contrib/fonts/chinesefonts/gb2312-kai.tar.bz2 tar -jxf gb2312-kai.tar.bz2 mv gb2312-kai/gkai00mp24 ../path/to/generator/font/gb2312 - Windows пользователи: Перепишите http://www1.mplayerhq.hu/MPlayer/contrib/fonts/chinesefonts/gb2312-kai.tar.bz2 Откройте его Ñ WinZip И извлеките gb2312-kai\gkai00mp24 директорию из архива в ..\path\to\generator\font\gb2312 Поддержка корейÑкого: Ðналогично поддержке китайÑкого шрифта, только получить euc-kr шрифт Ð’Ñ‹ можете из: http://www1.mplayerhq.hu/MPlayer/contrib/fonts/korean/ Хорошим выбором будет иÑпользование dotum20.tar.gz euc-kr шрифта и раÑпаковка, и копирование в директорию генератора ./font/euc-kr путем, Ñходным Ñ Ñ€Ð°ÑÑмотренным выше. УÑтановка. Во-первых, Вам нужно Ñоздать FAT16/32 или EXT2/3 раздел Ñ, по меньшей мере, 16 Мб Ñвободного меÑта. Затем, Ð’Ñ‹ можете уÑтановить GeeXboX под Linux, выполнив ./installator.sh Затем, ответьте на вÑе вопроÑÑ‹. Будьте оÑторожны в течении Ñтого шага. Прочтите дважды каждый Ð²Ð¾Ð¿Ñ€Ð¾Ñ Ð¸ оÑтановите уÑтановку, еÑли Ð’Ñ‹ не понимаете один из вопроÑов. Ðо легчайшим путем уÑтановить GeeXboX, оÑтаетÑÑ ÐµÐ³Ð¾ загрузка Ñ CD и ответ "install" на загрузочное Ñообщение isolinux. PXE загрузка. Да, GeeXboX может загружатьÑÑ Ð¸Ð· Ñети на бездиÑковую Ñтанцию! Ð”Ð»Ñ Ð´Ð¾ÑÑ‚Ð¸Ð¶ÐµÐ½Ð¸Ñ Ñтого Вам потребуютÑÑ: - DHCP Ñервер - TFTP Ñервер - NFS Ñервер - PXE ÑовмеÑÑ‚Ð¸Ð¼Ð°Ñ ÑÑ‚Ð°Ð½Ñ†Ð¸Ñ :-) ИÑпользование GNU/Linux ÑиÑтемы: Во-первых, Ñконфигурируйте Ваш dhcp Ñервер Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸ Вашей PXE загрузочной информации. Вот пример Ñ isc dhcp: allow booting; allow bootp; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.128 192.168.0.192; option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; next-server 192.168.0.1; filename "/tftpboot/GEEXBOX/boot/pxelinux.0"; } next-server Ð¾Ð¿Ñ†Ð¸Ñ Ñто Ð°Ð´Ñ€ÐµÑ TFTP Ñервера. Затем Ñконфигурируйте Ваш TFTP Ñервер (так же, как atftpd), Ð´Ð»Ñ Ñервера Ñто /tftpboot директориÑ, и Ñкопируйте полноÑтью GEEXBOX дерево в Ñту директорию. Ðапример, Ð’Ñ‹ можете Ñкопировать Ñодержимое GeeXboX CD из linux С ВКЛЮЧЕÐИЕМ ПРОЗРÐЧÐОЙ РÐСПÐКОВКИ CDROM! (Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ Ñтого, поÑмотрите в файл sbin/init в GeeXboX дереве и проверьте, что там не ÑодержитÑÑ Ð¼ÑƒÑора) ЕÑли Ð’Ñ‹ Ñобираете GeeXboX ÑамоÑтоÑтельно из иÑходных текÑтов, Ð’Ñ‹ можете также Ñгенерировать GEEXBOX дерево Ñ make pxe. Затем Ð’Ñ‹ должны отредактировать файл /tftpboot/GEEXBOX/boot/pxelinux.cfg/default Ð´Ð»Ñ ÑƒÑтановки nfsroot в правильный NFS путь GEEXBOX дерева. Окончательно уÑтановите Ваш NFS Ð´Ð»Ñ ÑкÑÐ¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ GEEXBOX дерева Ñ /etc/exports, Ñодержащим, что-то вроде Ñтого: /tftpboot/GEEXBOX (ro) и /etc/hosts.allow Ñодержащим, что-то вроде : ALL: ALL Ð¢Ð°ÐºÐ°Ñ Ð²Ð¾Ñ‚ премудроÑть. Загрузите Вашу PXE Ñтанцию и Ñмотрите, что получилоÑÑŒ. ИÑпользование Microsoft Windows ÑиÑтемы: Ð’ Ñлучае загрузки в PXE режиме Ñ Windows хоÑта, Вам потребуетÑÑ Ñледующее программное обеÑпечение: - TFTP и DHCP Ñервер (например, "tftpd32", доÑтупный по http://tftpd32.jounin.net/) - NFS Ñервер (например, "Allegro NFS server", доÑтупный по http://opensource.franz.com/nfs/) - компьютер, поддерживающий PXE загрузочный режим Перепишите и разожмите (инÑталлÑÑ†Ð¸Ñ Ð½Ðµ требуетÑÑ) tftpd32 папку куда-нибудь на Ваш диÑк. Ð’ Ñтом примере, давайте примем, что Ñто: C:\tftpd32. Скопируйте полноÑтью GEEXBOX дерево в ту же директорию (C:\tftpd32\GEEXBOX). Старт tftpd32: - Выберите C:\tftpd32 папку Ð´Ð»Ñ "текущей директории" - Выберите Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ (Ñетевую карту) Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² "Ñервер интерфейÑ" Ð’ данном примере - Ñто 192.168.0.1 - Зайдите в "уÑтановки" и убедитеÑÑŒ, что DHCP Ñервер отмечен (включен) - Ð’ "DHCP Ñервер" закладке, заполните вÑе полÑ, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ñледующий пример: (ПожалуйÑта, ÑверьтеÑÑŒ Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð½Ð¾Ð¹ документацией о DHCP в Ñети Ð´Ð»Ñ Ð»ÑƒÑ‡ÑˆÐµÐ³Ð¾ пониманиÑ) - ip starting pool: 192.168.0.10 - size of pool: 10 - boot file: ./GEEXBOX/boot/pxelinux.0 - wins/dns server: 192.168.0.254 - sefault router: 192.168.0.254 - mask: 255.255.255.0 - domain name : mydomain.net - Кликните "save" Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹. ÐŸÐµÑ€Ð²Ð°Ñ Ñ‡Ð°Ñть выполнена, Ð’Ñ‹ можете теперь загрузить клиентÑкий компьютер (который запуÑкает GeeXboX) и проÑмотреть его загрузку до поÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð»Ð¾Ð³Ð¾Ñ‚Ð¸Ð¿Ð°. Через некоторое Ð²Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑ Ð·Ð°Ð¼Ñ€ÐµÑ‚, потому что Ваш NFS Ñервер еще не уÑтановлен. УÑтановите "Allegro NFS server" и заполните вÑе Ð¿Ð¾Ð»Ñ ÑÐ»ÐµÐ´ÑƒÑ Ñ‚Ð°ÐºÐ¸Ð¼ уÑтановкам: ЭкÑпортируемые закладки: - Добавить "новое имÑ": и вызвать его "/tftpboot/GEEXBOX" - Ð’ "путь" как выше: выберите "C:\tftp32\GEEXBOX" папку - Ð’ "допуÑкаемом host ÑпиÑке" , выберите "вÑе" - "Чтение запиÑÑŒ", и "читать только ÑпиÑок пользователей", выберите "root" и "вÑе" (еÑли Ð’Ñ‹ желаете проводить определенный учет, доÑтаточно отметить вÑе в поÑледней закладке) Применение уÑтановок. Ðе забудьте изменить файл C:\tftp32\GEEXBOX\boot\pxelinux.cfg\default и изменить ip Ð°Ð´Ñ€ÐµÑ "192.168.0.2" на "192.168.0.1" (или на один из предыдущих, уÑтановленных Вами). ДоÑтаточно запуÑтить клиентÑкий компьютер и теперь GeeXboX должен заработать прекраÑно. Сборка. Во-первых, поÑмотрите в конфигурационную Ñекцию Ñразу под, по крайней мере, главной чаÑтью. Затем, в оÑновном, Ð’Ñ‹ можете поÑтроить iso Ñ: make Или Ð’Ñ‹ можете непоÑредÑтвенно прожечь Ñтот iso Ñ: make burn ПоÑле выполнениÑ, Ð’Ñ‹ можете оÑвободить диÑковое проÑтранÑтво, путем очиÑтки Ñборочного дерева: make clean или поÑредÑтвом Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð¹ очиÑтки, даже убрав загруженные иÑходные текÑты: make distclean ЗдеÑÑŒ еÑть также улучшенные команды, еÑли Ð’Ñ‹ хотите подробнее разобратьÑÑ Ñ GeeXboX: scripts/get пакет # загрузить пакет scripts/unpack пакет # раÑпаковать и подготовить пакет scripts/build пакет # Ñобрать пакет scripts/install пакет # уÑтановить пакет Ñ $INSTALL префикÑом scripts/clean пакет # очиÑтить дерево Ñборки пакета scripts/clean --полный пакет # очиÑтить оба: Ñборку и Ð´ÐµÑ€ÐµÐ²ÑŒÑ Ð¸Ñходных текÑтов пакета make exec # запуÑтить непоÑредÑтвенно GeeXboX в ограничении # ПРЕДУПРЕЖДЕÐИЕ: Ñто оÑобо ÑкÑÐ¿ÐµÑ€Ð¸Ð¼ÐµÐ½Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ñ…Ð°Ñ€Ð°ÐºÑ‚ÐµÑ€Ð¸Ñтика # иÑпользуйте Ñто на Ваш ÑобÑтвенный риÑк ЕÑли Ð’Ñ‹ делаете подробную верÑию GeeXboX, Ð’Ñ‹ можете легко Ñобрать маленький tar.bz2 Ð´Ð»Ñ Ð½ÐµÐµ Ñ: make dist или полный tar (Ñодержащий вÑе иÑходные текÑты) Ñ: make fulldist или geexbox генератор Ñ: make generator или geexbox уÑтановщик Ñ: make installator или pxe готовое дерево Ñ: make pxe КонфигурациÑ. Глобальные опции: ÐŸÐµÑ€Ð²Ð°Ñ Ð²ÐµÑ‰ÑŒ, о которой Ð’Ñ‹ должны позаботитьÑÑ, перед попыткой Ñборки GeeXboX, находитьÑÑ Ð² файле config/options, и должна быть Ñама по Ñебе понÑтна. Linux: Это клаÑÑичеÑÐºÐ°Ñ Linux ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ (packages/linux/linux.conf). Ð’Ñ‹ можете отредактировать ее в ручную, или Ð’Ñ‹ можете так же выполнить scripts/unpack linux, а затем make menuconfig -C build/linux-* (или иÑпользовать метод предпочитаемый Вами в отличии от menuconfig). Затем Ð’Ñ‹ должны дублировать Ваш build/linux-*/.config в packages/linux/linux.conf. Lirc: Lirc позволÑет Вам контролировать GeeXboX, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð¿ÑƒÐ»ÑŒÑ‚ диÑтанционного управлениÑ. Во-первых Ð’Ñ‹ должны выбрать файл, ÑоответÑтвующий Ñпецификации Вашего диÑтанционного ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ build/lirc-*/remotes (поÑле Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ scripts/unpack lirc) и добавить его в packages/lirc/install. Затем Ð’Ñ‹ должны выбрать Ваше уÑтройÑтво (изначально Ñто /dev/ttyS0 (COM1)) и lirc драйвер и помеÑтить его в файл, называемый packages/lirc/lircd_$REMOTE. Затем Ð’Ñ‹ можете выбрать Вашу раÑкладку клавиш в файле packages/lirc/lircrc_$REMOTE. Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ раÑкладки Ð’Ñ‹ выбираете кнопку (их Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð² файле определений диÑтанционного управлениÑ) и ÑопоÑтавлÑете какое-либо дейÑтвие Ð´Ð»Ñ Ð½ÐµÐµ. Ðапример, одно из дейÑтвий Mplayer-а (Ð’Ñ‹ можете найти ÑпиÑок в html файле build/MPlayer-*/DOCS/documentation.html#commands). Разработка. ÐŸÐµÑ€Ð²Ð°Ñ Ð²ÐµÑ‰ÑŒ, на которую Ð’Ñ‹ должны обратить внимание - инициализационный Ñкрипт. ФактичеÑки еÑть два инициализационных Ñкрипта. Первый в packages/initrd/linuxrc, но Вам не нужно изменÑть его. Второй - в config/init и в нем Ð’Ñ‹ можете задать некоторые наÑтройки. Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ð²ÐµÑ‰ÑŒ, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¼Ð¾Ð¶ÐµÑ‚ заинтереÑовать Ð’Ð°Ñ Ñто Ñоздание нового "пакета". Пакет Ñто вÑего лишь группа Ñкриптов, ÑоÑтавленных в ÑоответÑтвии Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð½Ñ‹Ð¼Ð¸ правилами. Ð’Ñе Ñкрипты, раÑполагаютÑÑ Ð² директории, называемой так же, как и программа в директории пакета, которую Ð’Ñ‹ хотите Ñделать незавиÑимым "пакетом". Вот ÑпиÑок Ñкриптов, которые Ð’Ñ‹ можете Ñоздать: - url: вÑего лишь ÑпиÑок адреÑов, где Ð’Ñ‹ получаете иÑходные текÑты программы - unpack: что проиÑходит поÑле раÑпаковки иÑходных текÑтов (например, Ð’Ñ‹ можете изменить определенные конфигурационные файлы; Ñто не включает приложение патчей) - need_build: вызываетÑÑ, когда необходимо убедитьÑÑ, что уже Ñобранный пакет не нуждаетÑÑ Ð² переÑборке; удалите файл .stamps/"package name"/build, еÑли пакет нуждаетÑÑ Ð² переÑборке - build: вÑе необходимые шаги Ð´Ð»Ñ Ñборки программы - install: вÑе необходимые шаги Ð´Ð»Ñ ÑƒÑтановки; Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ ÑƒÑтановки должен быть $INSTALL Когда файлы, полученные Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ñ… адреÑов называютÑÑ patch-program_name-... они автоматичеÑки применÑÑŽÑ‚ÑÑ Ðº раÑпакованным иÑходным текÑтам программы. Помните, что программное обеÑпечение, которое выполнÑетÑÑ Ð² GeeXboX, должно быть Ñкомпилировано в uClibc gcc ÑиÑтеме. Ð’ завершении, лучший путь Ñобрать пакет - Ñто поÑмотреть, как ÑобираютÑÑ Ð´Ñ€ÑƒÐ³Ð¸Ðµ пакеты. ЛицензиÑ. Ð’Ñе программы, иÑпользуемые в GeeXboX защищены их ÑоответÑтвующими лицензиÑми. Они вÑе - Ñвободное программное обеÑпечение и большинÑтво из них защищено GNU General Public License. GeeXboX Ñам-по-Ñебе - Ñто вÑе Ñкрипты, которые иÑпользуютÑÑ Ð² Ñборочном процеÑÑе - защищен GNU General Public License.geexbox-1.1/config/0000755000175000017500000000000010641763257012366 5ustar benbengeexbox-1.1/config/file_ext0000644000175000017500000000027010641745504014102 0ustar benben3gp aac asf avi bin dat divx dvr-ms evo flac flv ifo iso m1v m2v m4a m4p m4v mka mkv mov mp2 mp3 mp4 mp4v mpc mpe mpeg mpg nsv ogg ogm qt ra rm rmvb swf ts vdr vob vro wav wma wmv y4m geexbox-1.1/config/geexbox-hdd-s001.vmdk0000644000175000017500000020000010641745504016113 0ustar benbenKDMV€"€  #'+/37;?geexbox-1.1/config/geexbox-hdd.vmdk0000644000175000017500000000050610641745504015443 0ustar benben# Disk DescriptorFile version=1 CID=1d15a299 parentCID=ffffffff createType="twoGbMaxExtentSparse" # Extent description RW 524288 SPARSE "geexbox-hdd-s001.vmdk" # The Disk Data Base #DDB ddb.virtualHWVersion = "4" ddb.geometry.cylinders = "520" ddb.geometry.heads = "16" ddb.geometry.sectors = "63" ddb.adapterType = "ide" geexbox-1.1/config/geexbox-vmx.nvram0000644000175000017500000002073010641745504015701 0ustar benbenMRVNCMOS€&€@ð4€|¬h¬ð;ÿ€| ÀÆ‘øà€,À ˆðG4Ö' ౘ#OCMOS440€&€@‚‘€üc}Dc}Ò Ô”(ü ÈÁ€v!@³Œˆþ ë 4ƒ@N›ÿÿvDÚPCMOS440vCMOS440x€h€0ƒ€‡a¡pÅýÿ_! Ò†òÈCMOStimAESCD NAPIESCD¸BBSIמELOGu¸ACFG =P@  þÿ€€ €€ @p€ üÿ ðô ŽÀ   @p €`d ða  À ø ?ПŸ @ˆ€$(,048<‚P…r¤¨¬ °€ Àþ@ àþ€   DøCøx …ð÷A`@‚› èüÿ ðÿëÀACFGq†€]`@”€v‡pP”i`€,À(ACFG9q†€:q†€;q†€``@0’š ™ €› ì › ðüÿ› ðÿóüÿ àÿ÷ÀÀACFGx­H`@– €ìkŸ€Ÿ ŸÀàÀACFG€0H`@– € jŸŸ Ÿ@`ÀACFGˆ ";`@ ”iŸ€ ÀACFGqtR`@@À /proc/splash fi } count=0 for script in /etc/init.d/*; do grep -q -e "^# runlevels:.*$1" $script && count=$(($count+1)); done pos=47000 step=$(((65535-$pos)/$count)) RET=0 for script in /etc/init.d/*; do if grep -q -e "^# runlevels:.*$1" $script; then pos=$(($pos+$step)) progress $pos /bin/sh $script S_RET=$? test $S_RET -ge $RET && RET=$S_RET fi done exit $RET geexbox-1.1/config/issue0000644000175000017500000000002310641745504013427 0ustar benbenWelcome to GeeXboX geexbox-1.1/config/list_ext0000644000175000017500000000002510641745504014134 0ustar benbenasx m3u pls ram smil geexbox-1.1/config/maps0000644000175000017500000000046710641745504013253 0ustar benben# EXTN XLate CREATOR TYPE Comment .b Raw 'UNIX' 'tbxi' "bootstrap" yaboot Raw 'UNIX' 'boot' "bootstrap" vmlinux Raw 'UNIX' 'boot' "kernel" .conf Raw 'UNIX' 'conf' "bootstrap" * Raw 'UNIX 'UNIX' "unix" geexbox-1.1/config/options0000644000175000017500000001262510641763257014012 0ustar benben# GeeXboX Version User Interface (1/2) # 1: MPlayer based OSD # 2: Freevo Media Center UI_VERSION=1 # Target system we want to cross compile for (i386/powerpc) TARGET_ARCH=i386 # The TARGET_CPU variable controls which processor should be targeted for # generated code. case $TARGET_ARCH in i386) # (AMD CPUs) opteron athlon64 athlon-fx athlon-mp athlon-xp athlon-4 # athlon-tbird athlon k8 k6-3 k6-2 k6 # (Intel CPUs) nocona prescott pentium4[m] pentium3[m] pentium-m # pentium2 pentiumpro pentium-mmx pentium # i686 i586 i486 i386 # # leave it empty to get default (i586) TARGET_CPU= ;; powerpc) # 401 403 405 405fp 440 440fp 505 601 602 603 603e ec603e 604 604e # 620 630 740 7400 7450 750 801 821 823 860 970 rios rios1 rios2 rsc rs64a # common G3 G4 G5 power power2 power3 power4 power5 powerpc powerpc64 # # leave it empty to get default (G3) TARGET_CPU= ;; esac # Target system library C (uClibc/glibc) TARGET_LIBC=uClibc # Need to point to your actual cc # If you have ccache installed, take care that LOCAL_CC don't point to it LOCAL_CC=`which gcc` # Need to point to your actual g++ # If you have ccache installed, take care that LOCAL_CXX don't point to it LOCAL_CXX=`which g++` # Support C++ in toolchain TOOLCHAIN_CXX=no # Compression method (gzip/lzma) # LZMA decrease image size but GZIP is way faster to decompress and boot. COMPRESSION_METHOD=lzma # Theme (omc) THEME=omc # Resolution (640x480, 800x600, 1024x768, 1280x1024 or 1600x1200) RESOLUTION=800x600 # Menu languages to include in the ISO (en is included by default) # (ar/bg/br/ca/cs/de/es/en/et/fi/fr/gr/he/hu/it/nl/no/pl/ro/ru/sk/sr/sv/vn) INCLUDED_LANGS="fr de es it" # Menu language (ar/bg/br/ca/cs/de/en/es/et/fi/fr/gr/he/hu/it/nl/no/pl/ro/ru/sk/sr/sv/vn) MENU_LANG=en # Subtitle charset (ar/bg/br/ca/cs/de/en/es/et/fi/fr/gr/he/hu/it/nl/no/pl/ro/ru/sk/sr/sv/vn) # Can also be set to a charset code (iso-8859-{1,2,6,7,8,9}/windows-125{0,1,3,6}/koi8-r) # when empty it defaults to $MENU_LANG SUB_CHARSET= # Keymap (qwerty/azerty/qwertz) KEYMAP=qwerty # Remote to Use (pctv/logitech/hauppauge/realmagic/creative/leadtek/ # leadtek-pvr2000/RM-S6/RX-V850/animax/askey/avermedia/packard_bell/atiusb/ # atiusb2/LG/D-10/digimatrix/mceusb/streamzap/cinergy1400/nova-s-plus/twinhan/ # tosh-vt76f/flytv-prime/Medion-X10/imonknob/ultrax) REMOTE=atiusb # Remote receiver to use (animax/askey/avermedia/atiusb/atiusb2/creative/ # hauppauge/homemade/irman/leadtek/leadtek-pvr2000/logitech/pctv/realmagic/ # digimatrix/mceusb/mceusb2/streamzap/cx88/imonknob/ultrax) RECEIVER=atiusb # Use Extra Binary Codecs - RealMedia/WindowsMedia 9 (yes/no) EXTRACODECS=no # Use Extra Binary Firmwares - WiFi/DVB cards (yes/no) EXTRAFIRMWARES=no # Use Extra Non-Free Fonts, required for Asian Font Support (yes/no) EXTRAFONTS=no # Use NdisWrapper for Windows network driver support (yes/no) NDISWRAPPER=yes # Allow use of WPA_Supplicant for WPA-PSK secured wireless networks (yes/no) WPA_SUPPLICANT=yes # Network Support (Samba shares and FTP Server) (yes/no) NETWORK=yes # Start network services ? (Anonymous Telnet and FTP server as root) (yes/no) SERVICES=no # Wireless network support (yes/no) WIFI=yes # enable olsr protocol (yes/no) OLSR=no # Auto-discovery of UPnP MediaServer devices (yes/no) UPNP=yes # Add DXR3/Hollywood+ support (EXPERIMENTAL) DXR3=yes # Add IVTV (PVR-150/250/350/550 cards) support (EXPERIMENTAL) IVTV=yes # Add LIVE555 support (forces c++ support) LIVE555=no # Support for Python (yes/no) PYTHON=no # Support for Pygame (yes/no) PYGAME=no # Support for SDL library (yes/no) SDL=no # Support for DirectFB library (yes/no) # Only useful for nVidia cards h/w acceleration. DIRECTFB=no # Support for emulators (yes/no) EMULATORS=no # Support for Freevo (yes/no) FREEVO=no # Image viewer / dia show support (yes/no) VIEW_IMG=yes # Allow addition of digimatrix-only support tools (yes/no) DIGIMATRIX=yes # Default timeout in seconds for dia show (0 to disable) VIEW_IMG_TIMEOUT=10 # LCD display support (yes/no) LCD4LINUX=yes # Enable LCD display by default (yes/no) LCD_ENABLED=no # Select the LCD display model (cf. packages/lcd4linux/config/lcd4linux.conf) # (SerDispLib / Trefon / LK204 / MI240 / CW12232 / CF631 / CF632 / CF633 / # HD44780-generic / HD44780-winamp / HD44780-kernelconcepts / SC1602D / # LCM-162 / HD44780-I2C / LCDTerm / SimpleLCD / M50530-24x8 / CT20x4 / # USBLCD / BWCT / T6963-240x64) LCD_MODEL=HD44780-winamp LCD_WIDTH=16 LCD_HEIGHT=2 # enable debuging (debugging flags and enables gdb) DEBUG=no # enable gdb (yes/no) GDB=no # enable devel tools (yes/no) DEVTOOLS=no # verbose compilation mode (yes/no) VERBOSE=yes # modify the framebuffer settings to be VMware compliant (yes/no) VMWARE=no # download new sources when url file is updated (yes/no/ask) AUTOUPDATE=ask # Burning options # device (ex: 0,0,0). See the output of cdrecord -scanbus. BURNER=/dev/hda # blank the CD-RW before burning (yes/no) BLANK=yes # you can also pass options to cdrecord : CDRECORD_OPTS= # PXE boot options DEFAULT_NFS_SERVER=192.168.0.2 DEFAULT_NFS_DIR=/tftpboot/GEEXBOX # Concurrency make level (-j option) # Try value 1 (default) to 4 on single CPU computer, or more on # multi-processor computer (like hyperthreading SMP CPU) CONCURRENCY_MAKE_LEVEL=1 # read personal options if available test -f "$HOME/.geexbox-options" && . "$HOME/.geexbox-options" . config/path geexbox-1.1/config/path0000644000175000017500000001145710641745504013250 0ustar benbenset -e if [ -z "$TARGET_CPU" ]; then case $TARGET_ARCH in i386) TARGET_CPU=i586 ;; powerpc) TARGET_CPU=G3 ;; esac fi case $TARGET_LIBC in uClibc) TARGET_NAME=$TARGET_ARCH-pc-linux-uclibc ;; glibc) case $TARGET_ARCH in i386) TARGET_NAME=$TARGET_CPU-pc-linux-gnu ;; powerpc) TARGET_NAME=$TARGET_ARCH-unknown-linux-gnu ;; esac ;; esac if [ -z "$RAMDISK_SIZE" ]; then RAMDISK_SIZE=2048 [ "$DEBUG" = yes ] && RAMDISK_SIZE=4096 [ "$TARGET_LIBC" = glibc ] && RAMDISK_SIZE=4096 fi GEEXBOX_VERSION=`cat VERSION` CONFIG=config SCRIPTS=scripts PACKAGES=packages SOURCES=sources BUILD_BASE=build BUILD=$BUILD_BASE.$TARGET_ARCH STAMPS_NOARCH=.stamps STAMPS=$BUILD/$STAMPS_NOARCH DOCS=DOCS ROOT=`pwd` TOOLCHAIN=$BUILD/toolchain SYSROOT_PREFIX=$ROOT/$TOOLCHAIN/$TARGET_NAME/sysroot LIB_PREFIX=$SYSROOT_PREFIX/usr/local TARGET_PREFIX=$ROOT/$TOOLCHAIN/bin/$TARGET_NAME- if [ "$UI_VERSION" = 2 ]; then DXR3=no PYTHON=yes PYGAME=yes SDL=yes FREEVO=yes VIEW_IMG=no fi [ "$LIVE555" = yes ] && TOOLCHAIN_CXX=yes [ "$DEBUG" = yes ] && GDB=yes [ "$FREEVO" = yes ] && PYGAME=yes && TOOLCHAIN_CXX=yes [ "$PYGAME" = yes ] && PYTHON=yes && SDL=yes [ "$EMULATORS" = yes ] && SDL=yes && TOOLCHAIN_CXX=yes [ "$TARGET_ARCH" = powerpc ] && DIRECTFB=yes TOOLCHAIN_LANGUAGES=c [ "$TOOLCHAIN_CXX" = yes ] && TOOLCHAIN_LANGUAGES=${TOOLCHAIN_LANGUAGES},c++ TARGET_CC=${TARGET_PREFIX}gcc TARGET_CXX=${TARGET_PREFIX}g++ TARGET_LD=${TARGET_PREFIX}ld TARGET_AS=${TARGET_PREFIX}as TARGET_AR=${TARGET_PREFIX}ar TARGET_NM=${TARGET_PREFIX}nm TARGET_RANLIB=${TARGET_PREFIX}ranlib TARGET_OBJCOPY=${TARGET_PREFIX}objcopy TARGET_STRIP=${TARGET_PREFIX}strip TARGET_CPPFLAGS= TARGET_CFLAGS="-Os -Wall -pipe -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE" TARGET_CXXFLAGS="-Os -Wall -pipe -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE" TARGET_LDFLAGS= if [ "$DEBUG" = yes ]; then TARGET_CFLAGS="$TARGET_CFLAGS -g3" TARGET_CXXFLAGS="$TARGET_CXXFLAGS -g3" TARGET_STRIP=touch else TARGET_CFLAGS="$TARGET_CFLAGS -s -fomit-frame-pointer" TARGET_CXXFLAGS="$TARGET_CXXFLAGS -s -fomit-frame-pointer" TARGET_LDFLAGS="$TARGET_LDFLAGS -s" fi HOST_CC=$ROOT/$TOOLCHAIN/bin/host-gcc HOST_CXX=$ROOT/$TOOLCHAIN/bin/host-g++ HOST_LD=ld HOST_AS=as HOST_AR=ar HOST_NM=nm HOST_RANLIB=ranlib HOST_OBJCOPY=objcopy HOST_STRIP=strip HOST_CPPFLAGS="" HOST_CFLAGS="-O2 -Wall -pipe" HOST_LDFLAGS="" export CCACHE_DIR=$ROOT/$BUILD/.ccache export MAKEFLAGS=-j$CONCURRENCY_MAKE_LEVEL export HAVE_PKG_CONFIG=no export ac_cv_path_PKG_CONFIG=no if [ -z "$PATH" -o "$PATH" = "${PATH#$ROOT/$TOOLCHAIN/bin:}" ]; then export PATH="$ROOT/$TOOLCHAIN/bin:$PATH" fi setup_toolchain() { if [ "$1" = "--optimize" ]; then OPTIMIZE=yes shift fi if [ "$1" = target ]; then export CC=$TARGET_CC export CXX=$TARGET_CXX export LD=$TARGET_LD export AS=$TARGET_AS export AR=$TARGET_AR export NM=$TARGET_NM export RANLIB=$TARGET_RANLIB export OBJCOPY=$TARGET_OBJCOPY export STRIP=$TARGET_STRIP export CPPFLAGS="$TARGET_CPPFLAGS" export CFLAGS="$TARGET_CFLAGS" export CXXFLAGS="$TARGET_CXXFLAGS" export LDFLAGS="$TARGET_LDFLAGS" if [ "$OPTIMIZE" = yes ]; then case $TARGET_ARCH in i386) CFLAGS="$CFLAGS -march=$TARGET_CPU" CXXFLAGS="$CXXFLAGS -march=$TARGET_CPU" ;; powerpc) CFLAGS="$CFLAGS -maltivec" CXXFLAGS="$CXXFLAGS -maltivec" ;; esac fi elif [ "$1" = host ]; then export CC=$HOST_CC export CXX=$HOST_CXX export LD=$HOST_LD export AS=$HOST_AS export AR=$HOST_AR export NM=$HOST_NM export RANLIB=$HOST_RANLIB export OBJCOPY=$HOST_OBJCOPY export STRIP=$HOST_STRIP export CPPFLAGS="$HOST_CPPFLAGS" export CFLAGS="$HOST_CFLAGS" export CXXFLAGS="$HOST_CXXFLAGS" export LDFLAGS="$HOST_LDFLAGS" fi } setup_toolchain target SILENT_OUT=3 VERBOSE_OUT=4 if [ "$VERBOSE" = yes ]; then exec 3>/dev/null exec 4>&2 else exec 3>&2 exec 4>/dev/null fi INDENT_SIZE=4 GEEXBOX_SRCS=http://www.geexbox.org/src/$GEEXBOX_VERSION [ "$GEEXBOX_VERSION" = devel ] && GEEXBOX_VERSION=$GEEXBOX_VERSION-`date +%Y%m%d` [ -n "$GEEXBOX_VERSION_EXTRA" ] && GEEXBOX_VERSION=$GEEXBOX_VERSION-$GEEXBOX_VERSION_EXTRA ISO=geexbox-$GEEXBOX_VERSION-$MENU_LANG.$TARGET_ARCH.iso GENERATOR_NAME=geexbox-generator-$GEEXBOX_VERSION.$TARGET_ARCH INSTALLATOR_NAME=geexbox-installator-$GEEXBOX_VERSION.$TARGET_ARCH PXE_NAME=geexbox-pxe/GEEXBOX.$TARGET_ARCH VMX_NAME=geexbox-vmx HOST_NAME_CACHE=$BUILD/configtools/host_name if [ -f $HOST_NAME_CACHE ]; then HOST_NAME=`cat $HOST_NAME_CACHE` elif [ -x $BUILD/configtools/config.guess ]; then HOST_NAME=`$BUILD/configtools/config.guess` fi kernel_path() { ls -d $ROOT/$BUILD/linux* } INCLUDED_LANGS="en $MENU_LANG $INCLUDED_LANGS" geexbox-1.1/config/sort0000644000175000017500000000002310641745504013266 0ustar benbenisolinux.bin 10000 geexbox-1.1/config/subs_ext0000644000175000017500000000007010641745504014135 0ustar benbenass dks idx mpl pjs psb scr srt ssa stl sub tts vsf zeg geexbox-1.1/scripts/0000755000175000017500000000000010641745505012604 5ustar benbengeexbox-1.1/scripts/build0000755000175000017500000000211110641745505013624 0ustar benben#!/bin/sh . config/options if [ -z "$1" ]; then echo "usage: $0 package_name" exit 1 fi if [ -f $PACKAGES/$1/arch ]; then grep -q "$TARGET_ARCH" "$PACKAGES/$1/arch" || exit 0 fi unset INSTALL mkdir -p $STAMPS/$1 STAMP=$STAMPS/$1/build $SCRIPTS/unpack $1 if [ -f $STAMP -a -f $PACKAGES/$1/need_build ]; then $PACKAGES/$1/need_build $@ fi if [ -f $STAMP -a $PACKAGES/$1/build -nt $STAMP ]; then rm -f $STAMP fi if [ ! -f $STAMP ]; then rm -f $STAMP printf "%${INDENT}c BUILD $1\n" >&$SILENT_OUT export INDENT=$((${INDENT:-1}+$INDENT_SIZE)) if [ -f $PACKAGES/$1/build ]; then $PACKAGES/$1/build $@ >&$VERBOSE_OUT elif [ -f $BUILD/$1*/Makefile ]; then $SCRIPTS/build toolchain make -C $BUILD/$1* >&$VERBOSE_OUT elif [ "$1" != "${1#theme-}" ]; then $SCRIPTS/build-theme $@ >&$VERBOSE_OUT elif [ -f $BUILD/$1*/$1.c ]; then $SCRIPTS/build toolchain make -C $BUILD/$1* $1 >&$VERBOSE_OUT fi . $CONFIG/options for i in `sed -n "s/^\([^#].*\)=.*$/\1/p" $CONFIG/options`; do eval val=\$$i echo "STAMP_$i=\"$val\"" >> $STAMP done fi geexbox-1.1/scripts/build-theme0000755000175000017500000000046210641745505014733 0ustar benben#!/bin/sh . config/options $SCRIPTS/build bootsplash cd $BUILD/$1* . ./config [ -z "$RESOLUTIONS" ] && RESOLUTIONS=800x600 for r in $RESOLUTIONS; do $ROOT/$BUILD/bootsplash*/Utilities/splash -s -f bootsplash-$r.cfg > bootsplash-$r.dat done rm -f bootsplash-*.cfg bootsplash-*.jpg bootsplash-*.jpeg geexbox-1.1/scripts/burn0000755000175000017500000000032310641745505013476 0ustar benben#!/bin/sh . config/options $SCRIPTS/checkdeps burn [ ! -f $ISO ] && $SCRIPTS/iso if [ "$BLANK" = "yes" ]; then CDRECORD_OPTS="blank=fast $CDRECORD_OPTS" fi cdrecord dev=$BURNER $CDRECORD_OPTS -eject $ISO geexbox-1.1/scripts/checkdeps0000755000175000017500000000576410641745505014477 0ustar benben#!/bin/sh . config/options deps= deps_pkg= files= files_pkg= case $1 in get) deps="wget" deps_pkg="wget" ;; build) deps="gcc g++ sed patch touch nasm tar bzip2 gzip perl flex cp" deps_pkg="gcc g++ sed patch fileutils nasm tar bzip2 gzip perl flex coreutils" files="/usr/include/stdio.h /usr/include/readline/readline.h" files_pkg="libc6-dev libreadline5-dev" ;; burn) deps="cdrecord" deps_pkg="cdrecord" ;; iso) deps="mkisofs mkzftree" if [ -f /etc/debian_version -a -n "`which apt-get 2>/dev/null`" ]; then deps_pkg="mkisofs mkisofs" else deps_pkg="mkisofs zisofs-tools" fi ;; vmx) if [ ! `which vmplayer` ]; then echo "Your system doesn't seem to have VMplayer installed" echo "It is mandatory to play a VMware virtual machine." exit 1 fi ;; qemu) if [ ! `which qemu` ]; then echo "Your system doesn't seem to have QEMU installed" exit 1 fi ;; esac getarg() { eval echo \${$(($1+2))} } i=0 while dep=`getarg $i $deps` && [ -n "$dep" ]; do [ -z "`which $dep 2>/dev/null`" ] && need="$need $dep" && need_pkg="$need_pkg `getarg $i $deps_pkg`" i=$(($i+1)) done i=0 while file=`getarg $i $files` && [ -n "$file" ]; do [ ! -f $file ] && need="$need $file" && need_pkg="$need_pkg `getarg $i $files_pkg`" i=$(($i+1)) done if [ -n "$need" ]; then echo "**** Your system lacks the following tools needed to $1 GeeXboX ****" echo $need if [ -f /etc/debian_version -a -n "`which apt-get 2>/dev/null`" ]; then echo "**** You seem to use a debian system ****" if [ $UID -ne 0 ]; then echo "**** I could install those packages but you need to be root for this ****" exit 1 else read -p "would you like to apt-get install the needed tools ? (y/n) " ans [ "$ans" = "y" ] && apt-get install $need_pkg fi elif [ -f /etc/mandrake-release -a -n "`which urpmi 2>/dev/null`" ]; then echo "**** You seem to use a mandrake system ****" if [ $UID -ne 0 ]; then echo "**** I could install those packages but you need to be root for this ****" exit 1 else read -p "would you like to urpmi the needed tools ? (y/n) " ans [ "$ans" = "y" ] && urpmi $need_pkg fi else echo "********" exit 1 fi fi need="" need_pkg="" i=0 while dep=`getarg $i $deps` && [ -n "$dep" ]; do [ -z "`which $dep 2>/dev/null`" ] && need="$need $dep" && need_pkg="$need_pkg `getarg $i $deps_pkg`" i=$(($i+1)) done i=0 while file=`getarg $i $files` && [ -n "$file" ]; do [ ! -f $file ] && need="$need $file" && need_pkg="$need_pkg `getarg $i $files_pkg`" i=$(($i+1)) done if [ -n "$need" ]; then if [ "$need" = " mkzftree" ]; then echo "**** mkzftree was not installed correctly." echo "**** It is not included in debian woody." echo "**** You will need for example a sarge version of mkisofs." else echo "**** The following packages were not installed correctly ****" echo $need_pkg echo "********" fi exit 1 fi geexbox-1.1/scripts/clean0000755000175000017500000000151410641745505013615 0ustar benben#!/bin/sh . config/options clean () { echo " CLEAN $1" >&$SILENT_OUT if [ "$CLEAN_SOURCES" = true ]; then if [ -f $PACKAGES/$1/url ]; then for i in `ls $SOURCES/$1 2>/dev/null`; do grep -q $i $PACKAGES/$1/url || rm -f $SOURCES/$1/$i done fi return fi if [ "$FULL" = true ]; then rm -rf $BUILD_BASE*/$STAMPS_NOARCH/$1* rm -rf $BUILD_BASE*/$1* rm -rf $STAMPS_NOARCH/$1 rm -rf $SOURCES/$1 else rm -rf $BUILD/$1* rm -f $STAMPS/$1/unpack rm -f $STAMPS/$1/build fi } if [ "$1" = "--full" ]; then FULL=true shift elif [ "$1" = "--sources" ]; then CLEAN_SOURCES=true shift fi if [ -z "$1" ]; then for i in $PACKAGES/*; do clean ${i#$PACKAGES/}; done rm -rf $BUILD/iso rm -rf $BUILD/ziso [ "$FULL" = true ] && rm -rf $CCACHE_DIR else clean $1 fi exit 0 geexbox-1.1/scripts/dist0000755000175000017500000000205610641745505013500 0ustar benben#!/bin/sh . config/options NODIST="extra-codecs-nonfree extra-firmwares-nonfree extra-fonts-nonfree" GEEXDIR=geexbox-$GEEXBOX_VERSION [ "$1" = full ] && $SCRIPTS/get mkdir $GEEXDIR ln -s ../AUTHORS $GEEXDIR/AUTHORS ln -s ../README $GEEXDIR/README ln -s ../COPYING $GEEXDIR/COPYING ln -s ../VERSION $GEEXDIR/VERSION ln -s ../ChangeLog $GEEXDIR/ChangeLog ln -s ../Makefile $GEEXDIR/Makefile ln -s ../DOCS $GEEXDIR/DOCS ln -s ../$CONFIG $GEEXDIR/$CONFIG ln -s ../$SCRIPTS $GEEXDIR/$SCRIPTS ln -s ../$PACKAGES $GEEXDIR/$PACKAGES if [ "$1" = full ]; then $SCRIPTS/clean --sources mkdir -p $GEEXDIR/$SOURCES for i in $SOURCES/*; do DIST=yes for j in $NODIST; do [ ${i##*/} = $j ] && DIST=no break done if [ $DIST = yes ]; then ln -s ../../$i $GEEXDIR/$i mkdir -p $GEEXDIR/$STAMPS_NOARCH/${i##*/} touch $GEEXDIR/$STAMPS_NOARCH/${i##*/}/get fi done tar chf $GEEXDIR-full.tar --exclude .hg --exclude .hgignore $GEEXDIR else tar chjf $GEEXDIR-lite.tar.bz2 --exclude .hg --exclude .hgignore $GEEXDIR fi rm -rf $GEEXDIR geexbox-1.1/scripts/exec0000755000175000017500000000475710641745505013473 0ustar benben#!/bin/sh . config/options ROOT=execroot mkdir -p $ROOT/dev/snd mkdir -p $ROOT/dev/input mkdir -p $ROOT/lib mkdir -p $ROOT/bin mkdir -p $ROOT/sbin mkdir -p $ROOT/proc mkdir -p $ROOT/mnt mkdir -p $ROOT/usr/sbin mkdir -p $ROOT/var/run mkdir -p $ROOT/var/log mkdir -p $ROOT/var/lock mkdir -p $ROOT/tmp [ $BUILD/iso/GEEXBOX/bin.tar.lzma ] && lzma d $BUILD/iso/GEEXBOX/bin.tar.lzma -so | tar xf - -C $ROOT [ $BUILD/iso/GEEXBOX/bin.tar.gz ] && tar xzf $BUILD/iso/GEEXBOX/bin.tar.gz -C $ROOT cp -r $BUILD/iso/GEEXBOX/sbin $ROOT cp -r $BUILD/iso/GEEXBOX/etc $ROOT cp -r $BUILD/iso/GEEXBOX/usr $ROOT cp -r $BUILD/iso/GEEXBOX/codecs $ROOT cp -r $BUILD/iso/GEEXBOX/firmwares $ROOT cp $BUILD/uClibc*/lib/* $ROOT/lib ln -s libc.so.0 $ROOT/lib/libc.so.6 cp $BUILD/busybox*/busybox $ROOT/bin cp config/init $ROOT/sbin ln -s busybox $ROOT/bin/sh touch $ROOT/etc/fstab touch $ROOT/EXEC cp $ROOT/etc/mplayer/menu_`cat $ROOT/etc/lang`.conf $ROOT/etc/mplayer/menu.conf sed -i 's%ok=\"quit 166\"/>%ok=\"quit 166\"/> %' $ROOT/etc/mplayer/menu.conf IFS=' ' for i in `cat ./packages/initrd/dev`; do mknod $ROOT`echo "$i" | cut -f3` `echo "$i" | cut -c1` `echo "$i" | cut -f2 | cut -f1 -d,` `echo "$i" | cut -f2 | cut -f2 -d,` done for i in `mount -l | grep -E "/dev/(hd|scd)" | cut -d' ' -f1,3,6`; do IFS=' ' i=($i) DEV=${i[0]##*/} if [ "$DEV" = "none" ]; then DEV=`echo "${i[2]}" | sed 's%.*dev=\(.*\)[,\)].*%\1%'` DEV=${DEV##*/} fi mkdir $ROOT/mnt/$DEV mount --bind ${i[1]} $ROOT/mnt/$DEV echo $DEV | grep scd >/dev/null 2>&1 if [ $? -eq 0 ]; then test ! -e $ROOT/dev/cdrom && ln -s /dev/$DEV $ROOT/dev/cdrom test ! -e $ROOT/dev/dvd && ln -s /dev/$DEV $ROOT/dev/dvd fi done for DEV in /dev/scd*; do DEV=${DEV##*/} if [ ! -d $ROOT/mnt/$DEV ]; then mkdir $ROOT/mnt/$DEV mount -t supermount -o dev=/dev/$DEV none $ROOT/mnt/$DEV >/dev/null 2>&1 if [ $? -eq 0 ]; then test ! -e $ROOT/dev/cdrom && ln -s /dev/$DEV $ROOT/dev/cdrom test ! -e $ROOT/dev/dvd && ln -s /dev/$DEV $ROOT/dev/dvd else rmdir $ROOT/mnt/$DEV fi fi done chroot $ROOT /sbin/init killall -9 mplayer >/dev/null 2>&1 killall -9 lircd >/dev/null 2>&1 [ -f $ROOT/log ] && cp $ROOT/log . for i in $ROOT/mnt/share/*; do test -d $i && umount $i >/dev/null 2>&1 rmdir $i done for i in $ROOT/mnt/*; do test -d $i && umount $i >/dev/null 2>&1 rmdir $i done for i in $ROOT/*; do if [ "$i" = "$ROOT/mnt" ]; then rmdir $i else rm -rf $i fi done rmdir $ROOT geexbox-1.1/scripts/extract0000755000175000017500000000172110641745505014205 0ustar benben#!/bin/sh . config/options if [ -z "$3" ]; then echo "usage: $0 package_name file_pattern target_dir" exit 1 fi [ ! -d "$SOURCES/$1" -o ! -f $PACKAGES/$1/url -o ! -d "$3" ] && exit 1 for s in `sed 's%.*/\(.*\)\$%\1%' $PACKAGES/$1/url`; do case $s in $2) f="$SOURCES/$1/$s" if [ ! -f $f ]; then echo "error: File $s doesn't exists in package $1 sources directory" echo "have you called scripts/extract before scripts/get ?" exit 1 fi case $s in *.tar) tar xf $f -C $3 ;; *.tar.bz2 | *.tbz) tar xjf $f -C $3 ;; *.tar.gz | *.tgz) tar xzf $f -C $3 ;; *.diff | *.patch) cat $f | patch -d $3 -p1 ;; *.diff.bz2 | *.patch.bz2 | patch-*.bz2) bzcat $f | patch -d $3 -p1 ;; *.diff.gz | *.patch.gz | patch-*.gz) zcat $f | patch -d $3 -p1 ;; *) cp -pPR $f $3 ;; esac ;; esac done geexbox-1.1/scripts/fixconfigtools0000755000175000017500000000072710641745505015575 0ustar benben#!/bin/sh . config/options # Avoid infinite loop [ "$*" = "$BUILD/configtools" ] && exit 0 $SCRIPTS/build configtools for i in $@; do [ -f "$i/config.guess" ] && cp -f $BUILD/configtools/config.guess $i [ -f "$i/config.sub" ] && cp -f $BUILD/configtools/config.sub $i [ -f "$i/configure.guess" ] && cp -f $BUILD/configtools/config.guess $i/configure.guess [ -f "$i/configure.sub" ] && cp -f $BUILD/configtools/config.sub $i/configure.sub done exit 0 geexbox-1.1/scripts/generator0000755000175000017500000000117710641745505014526 0ustar benben#!/bin/sh . config/options $SCRIPTS/checkdeps build export INSTALL=$GENERATOR_NAME/iso/GEEXBOX rm -rf $GENERATOR_NAME $SCRIPTS/gentree generator full export INSTALL=$GENERATOR_NAME $SCRIPTS/install generator generator mkdir -p $GENERATOR_NAME/$DOCS cp -r $DOCS/* $GENERATOR_NAME/$DOCS/ cp $CONFIG/sort $GENERATOR_NAME/sort cp $CONFIG/maps $GENERATOR_NAME/maps cp AUTHORS $GENERATOR_NAME/AUTHORS cp COPYING $GENERATOR_NAME/COPYING echo $GEEXBOX_VERSION-custom > $GENERATOR_NAME/VERSION cat $PACKAGES/*/config/packages.ini > $GENERATOR_NAME/packages.ini tar cf - $GENERATOR_NAME | gzip -f > $GENERATOR_NAME.tar.gz rm -rf $GENERATOR_NAME geexbox-1.1/scripts/gentree0000755000175000017500000000470010641745505014164 0ustar benben#!/bin/sh . config/options if [ "$2" != boot ]; then mkdir -p $INSTALL/sbin mkdir -p $INSTALL/etc/init.d mkdir -p $INSTALL/codecs mkdir -p $INSTALL/firmwares mkdir -p $INSTALL/etc/ndiswrapper cp $CONFIG/init $INSTALL/sbin cp $CONFIG/file_ext $INSTALL/etc cp $CONFIG/list_ext $INSTALL/etc cp $CONFIG/subs_ext $INSTALL/etc for P in $PACKAGES/*; do [ -f $P/arch ] && grep -vq $TARGET_ARCH $P/arch && continue [ -d $P/init.d ] && cp $P/init.d/* $INSTALL/etc/init.d/ done $SCRIPTS/install linux modules $1 $SCRIPTS/install alsa $1 $SCRIPTS/install tvout $1 $SCRIPTS/install pciutils $1 [ "$SDL" = yes ] && $SCRIPTS/install SDL $1 $SCRIPTS/install MPlayer $1 $SCRIPTS/install installator $1 $SCRIPTS/install i18n $1 [ "$UI_VERSION" = 1 ] && $SCRIPTS/install webgui $1 $SCRIPTS/install sleeptimer $1 $SCRIPTS/install theme $1 $SCRIPTS/install powernowd $1 [ "$LCD4LINUX" = yes ] && $SCRIPTS/install lcd4linux $1 [ "$DEVTOOLS" = yes ] && $SCRIPTS/install strace $1 [ "$NETWORK" = yes ] && $SCRIPTS/install network $1 [ "$OLSR" = yes ] && $SCRIPTS/install olsrd $1 [ "$DXR3" = yes ] && $SCRIPTS/install em8300 $1 [ "$IVTV" = yes ] && $SCRIPTS/install ivtv $1 [ "$PYTHON" = yes ] && $SCRIPTS/install Python $1 [ "$FREEVO" = yes ] && $SCRIPTS/install freevo $1 [ "$EMULATORS" = yes ] && $SCRIPTS/install emulators $1 [ "$VIEW_IMG" = yes ] && $SCRIPTS/install fbi $1 [ "$GDB" = yes ] && $SCRIPTS/install gdb $1 [ "$EXTRACODECS" = yes ] && $SCRIPTS/install extra-codecs-nonfree $1 [ "$EXTRAFIRMWARES" = yes ] && $SCRIPTS/install extra-firmwares-nonfree $1 [ "$DIGIMATRIX" = yes ] && $SCRIPTS/install digitools $1 [ "$DIRECTFB" = yes ] && $SCRIPTS/install DirectFB $1 [ "$DEBUG" = yes ] && echo -n "" >$INSTALL/etc/debug VER=`ls $INSTALL/lib/modules` $BUILD/module-init-tool*/depmod -b $INSTALL -v $VER > /dev/null for i in `ls $INSTALL/lib/modules/*/modules.* | grep -v modules.dep`; do rm -f $i done if [ "$COMPRESSION_METHOD" = lzma ]; then tar cf - -C $INSTALL lib usr/bin usr/lib | lzma e $INSTALL/bin.tar.lzma -si -a2 else tar cf $INSTALL/bin.tar -C $INSTALL lib usr/bin usr/lib gzip -9 $INSTALL/bin.tar fi rm -rf $INSTALL/lib $INSTALL/usr/bin $INSTALL/usr/lib echo "$GEEXBOX_VERSION" > $INSTALL/etc/version fi if [ "$2" = boot -o "$2" = full ]; then $SCRIPTS/install linux image $1 $SCRIPTS/install initrd $1 $SCRIPTS/install syslinux $1 $SCRIPTS/install yaboot $1 fi geexbox-1.1/scripts/get0000755000175000017500000000243610641745505013316 0ustar benben#!/bin/sh . config/options NOGET="" if [ -z "$1" ]; then for i in $PACKAGES/*; do GET=yes for j in $NOGET; do [ ${i##*/} = $j ] && GET=no break done if [ $GET = yes ]; then $SCRIPTS/get ${i#$PACKAGES/} || echo "" fi done exit 0 fi mkdir -p $STAMPS_NOARCH/$1 STAMP=$STAMPS_NOARCH/$1/get if [ -f $PACKAGES/$1/url ]; then if [ -f $STAMP ]; then [ ! $STAMP -ot $PACKAGES/$1/url -o $AUTOUPDATE = no ] && exit 0 if [ $AUTOUPDATE = ask ]; then echo "Package $1 is not up to date." echo -n "Do you want to download an up to date version ? (y/n) " read UPDATE [ "$UPDATE" = y ] || exit 0 fi fi $SCRIPTS/checkdeps get rm -f $STAMP printf "%${INDENT}c GET $1\n" >&$SILENT_OUT export INDENT=$((${INDENT:-1}+$INDENT_SIZE)) [ "$VERBOSE" != yes ] && WGET_OPT=-q mkdir -p $SOURCES/$1 for i in `sed s%GEEXBOX_SRCS%$GEEXBOX_SRCS% $PACKAGES/$1/url`; do NBWGET=1 until wget --passive-ftp -c $WGET_OPT -P $SOURCES/$1 $i; do NBWGET=$(($NBWGET+1)) if [ $NBWGET -gt 10 ]; then echo -e "\nCant't get $1 sources : $i\n Try later !!" exit 1 fi done done cp -p $PACKAGES/$1/url $STAMP rm -f $BUILD_BASE*/$STAMPS_NOARCH/$1/unpack rm -f $BUILD_BASE*/$STAMPS_NOARCH/$1/build fi geexbox-1.1/scripts/install0000755000175000017500000000070410641745505014201 0ustar benben#!/bin/sh . config/options if [ -z "$1" ]; then echo "usage: $0 package_name" exit 1 fi if [ -f $PACKAGES/$1/arch ]; then grep -q "$TARGET_ARCH" "$PACKAGES/$1/arch" || exit 0 fi $SCRIPTS/build $@ printf "%${INDENT}c INSTALL $1\n" >&$SILENT_OUT export INDENT=$((${INDENT:-1}+$INDENT_SIZE)) if [ -f $PACKAGES/$1/install ]; then $PACKAGES/$1/install $@ >&$VERBOSE_OUT else mkdir -p $INSTALL/usr/bin cp $BUILD/$1*/$1 $INSTALL/usr/bin fi geexbox-1.1/scripts/installator0000755000175000017500000000114210641745505015064 0ustar benben#!/bin/sh . config/options $SCRIPTS/checkdeps build export INSTALL=$INSTALLATOR_NAME/disk/GEEXBOX rm -rf $INSTALLATOR_NAME $SCRIPTS/gentree installator export INSTALL=$INSTALLATOR_NAME/disk $SCRIPTS/gentree installator boot cp $PACKAGES/installator/scripts/installator.sh $INSTALLATOR_NAME mkdir -p $INSTALLATOR_NAME/$DOCS cp -r $DOCS/* $INSTALLATOR_NAME/$DOCS/ cp AUTHORS $INSTALLATOR_NAME/AUTHORS cp COPYING $INSTALLATOR_NAME/COPYING cp VERSION $INSTALLATOR_NAME/VERSION sed -i s/.*busybox.*// $INSTALLATOR_NAME/installator.sh tar czf $INSTALLATOR_NAME.tar.gz $INSTALLATOR_NAME rm -rf $INSTALLATOR_NAME geexbox-1.1/scripts/iso0000755000175000017500000000205710641745505013330 0ustar benben#!/bin/sh . config/options $SCRIPTS/checkdeps build $SCRIPTS/checkdeps iso export INSTALL=$BUILD/iso/GEEXBOX rm -rf $BUILD/iso $SCRIPTS/gentree iso rm -rf $BUILD/ziso mkdir -p $BUILD/ziso mkzftree $INSTALL $BUILD/ziso/GEEXBOX export INSTALL=$BUILD/ziso/GEEXBOX $SCRIPTS/gentree iso boot case $TARGET_ARCH in i386) MKISOFS_ARCH="-no-emul-boot \ -boot-info-table \ -boot-load-size 4 \ -b GEEXBOX/boot/isolinux.bin \ -c GEEXBOX/boot/boot.catalog" ;; powerpc) MKISOFS_ARCH="-hfs \ -part \ -no-desktop \ -map $CONFIG/maps \ -hfs-volid GEEXBOX \ -hfs-bless $BUILD/ziso/GEEXBOX/boot" ;; esac mkisofs -quiet -no-pad -V GEEXBOX -volset GEEXBOX \ -publisher "The GeeXboX team (www.geexbox.org)" \ -p "The GeeXboX team (www.geexbox.org)" \ -A "MKISOFS ISO 9660/HFS FILESYSTEM BUILDER" \ -z -D -r -J -sort $CONFIG/sort $MKISOFS_ARCH \ $BUILD/ziso > $ISO geexbox-1.1/scripts/pxe0000755000175000017500000000022110641745505013321 0ustar benben#!/bin/sh . config/options $SCRIPTS/checkdeps build export INSTALL=$PXE_NAME rm -rf $PXE_NAME $SCRIPTS/gentree pxe full chmod -R +r $PXE_NAME geexbox-1.1/scripts/qemu0000755000175000017500000000011610641745505013477 0ustar benben#!/bin/sh . config/options $SCRIPTS/checkdeps qemu qemu -boot d -cdrom $ISO geexbox-1.1/scripts/sum0000755000175000017500000000034410641745505013337 0ustar benben#!/bin/sh . config/options $1 geexbox-$GEEXBOX_VERSION-*.iso \ geexbox-generator-$GEEXBOX_VERSION*.tar.gz \ geexbox-$GEEXBOX_VERSION-lite.tar.bz2 \ geexbox-$GEEXBOX_VERSION-full.tar \ > geexbox-$GEEXBOX_VERSION.$1 geexbox-1.1/scripts/unpack0000755000175000017500000000237410641745505014021 0ustar benben#!/bin/sh . config/options if [ -z "$1" ]; then echo "usage: $0 package_name" exit 1 fi $SCRIPTS/get $1 mkdir -p $BUILD [ ! -d $SOURCES/$1 -a ! -d $PACKAGES/$1/sources ] && exit 0 mkdir -p $STAMPS/$1 STAMP=$STAMPS/$1/unpack [ -f $STAMP -a -f $PACKAGES/$1/need_unpack ] && $PACKAGES/$1/need_unpack $@ for patch in $PACKAGES/$1/patches/*; do if [ $patch -nt $STAMP ]; then rm -f $STAMP break fi done [ -f $STAMP ] && exit 0 printf "%${INDENT}c UNPACK $1\n" >&$SILENT_OUT export INDENT=$((${INDENT:-1}+$INDENT_SIZE)) rm -rf $BUILD/$1* if [ -f $PACKAGES/$1/url ]; then $SCRIPTS/extract $1 "$1*.tar.bz2" $BUILD $SCRIPTS/extract $1 "$1*.tar.gz" $BUILD $SCRIPTS/extract $1 "$1*.tgz" $BUILD fi if [ -d $PACKAGES/$1/sources ]; then [ ! -d $BUILD/$1* ] && mkdir -p $BUILD/$1 cp -PRf $PACKAGES/$1/sources/* $BUILD/$1*/ fi for i in $PACKAGES/$1/patches/*; do if [ -f $i ]; then echo "## Applying patch: $i" cat $i | patch -d $BUILD/$1* -p1 >&$VERBOSE_OUT fi done $SCRIPTS/fixconfigtools $BUILD/$1* [ -f $PACKAGES/$1/unpack ] && $PACKAGES/$1/unpack $@ >&$VERBOSE_OUT rm -f $STAMPS/$1/build . $CONFIG/options for i in `sed -n "s/^\([^#].*\)=.*$/\1/p" $CONFIG/options`; do eval val=\$$i echo "STAMP_$i=\"$val"\" >> $STAMP done geexbox-1.1/scripts/vmx0000755000175000017500000000073110641745505013345 0ustar benben#!/bin/sh . config/options if [ "$1" = build ]; then $SCRIPTS/checkdeps build make iso rm -rf $VMX_NAME mkdir -p $VMX_NAME ln -sf $ROOT/$ISO $VMX_NAME cp $CONFIG/geexbox-vmx.vmx $VMX_NAME cp $CONFIG/geexbox-vmx.nvram $VMX_NAME cp $CONFIG/geexbox-hdd* $VMX_NAME sed -i "s%ide1:0.fileName.*%ide1:0.fileName = \"$ROOT/$VMX_NAME/$ISO\"%" $VMX_NAME/geexbox-vmx.vmx elif [ "$1" = play ]; then $SCRIPTS/checkdeps vmx vmplayer $VMX_NAME/geexbox-vmx.vmx fi geexbox-1.1/packages/0000755000175000017500000000000010641745505012673 5ustar benbengeexbox-1.1/packages/DirectFB/0000755000175000017500000000000010641745504014314 5ustar benbengeexbox-1.1/packages/DirectFB/build0000755000175000017500000000225010641745504015340 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain cd $BUILD/$1* ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=$LIB_PREFIX \ --with-sysroot=/usr \ --enable-shared \ --disable-static \ --disable-osx \ --disable-x11 \ --disable-extra-warnings \ --disable-profiling \ --disable-debug \ --disable-debug-support \ --disable-trace \ --disable-text \ --disable-gettid \ --disable-network \ --disable-multi \ --disable-voodoo \ --disable-unique \ --disable-mmx \ --disable-sse \ --enable-fbdev \ --disable-sdl \ --disable-vnc \ --disable-sysfs \ --disable-jpeg \ --disable-zlib \ --disable-png \ --disable-gif \ --disable-freetype \ --disable-video4linux \ --disable-video4linux2 \ --with-gfxdrivers=nvidia \ --with-inputdrivers=none \ --without-tools make make install geexbox-1.1/packages/DirectFB/install0000755000175000017500000000111110641745504015702 0ustar benben#!/bin/sh . config/options DFB_DIR=$INSTALL/usr/lib/directfb mkdir -p $INSTALL/usr/lib cp -PR $BUILD/$1*/src/.libs/libdirectfb*.so* $INSTALL/usr/lib cp -PR $BUILD/$1*/lib/direct/.libs/libdirect*.so* $INSTALL/usr/lib cp -PR $BUILD/$1*/lib/fusion/.libs/libfusion*.so* $INSTALL/usr/lib mkdir -p $DFB_DIR/gfxdrivers cp $BUILD/$1*/gfxdrivers/nvidia/.libs/libdirectfb_nvidia.so $DFB_DIR/gfxdrivers mkdir -p $DFB_DIR/systems cp $BUILD/$1*/systems/fbdev/.libs/libdirectfb_fbdev.so $DFB_DIR/systems mkdir -p $DFB_DIR/wm cp $BUILD/$1*/wm/default/.libs/libdirectfbwm_default.so $DFB_DIR/wm geexbox-1.1/packages/DirectFB/patches/0000755000175000017500000000000010641745504015743 5ustar benbengeexbox-1.1/packages/DirectFB/patches/10_include.diff0000644000175000017500000000101010641745504020510 0ustar benbendiff -Naur DirectFB-1.0.0-rc2.orig/lib/direct/ppcasm_memcpy_cachable.S DirectFB-1.0.0-rc2/lib/direct/ppcasm_memcpy_cachable.S --- DirectFB-1.0.0-rc2.orig/lib/direct/ppcasm_memcpy_cachable.S 2006-10-29 16:49:02.000000000 +0100 +++ DirectFB-1.0.0-rc2/lib/direct/ppcasm_memcpy_cachable.S 2006-12-17 15:39:59.000000000 +0100 @@ -11,8 +11,6 @@ #define __ASSEMBLY__ -#include - #if defined(CONFIG_8xx) || defined(CONFIG_403GCX) #define L1_CACHE_LINE_SIZE 16 #define LG_L1_CACHE_LINE_SIZE 4 geexbox-1.1/packages/DirectFB/patches/20_types.diff0000644000175000017500000000102410641745504020237 0ustar benbendiff -Naur DirectFB-1.0.0-rc3.orig/inputdrivers/linux_input/linux_input.c DirectFB-1.0.0-rc3/inputdrivers/linux_input/linux_input.c --- DirectFB-1.0.0-rc3.orig/inputdrivers/linux_input/linux_input.c 2007-02-01 22:55:29.000000000 +0100 +++ DirectFB-1.0.0-rc3/inputdrivers/linux_input/linux_input.c 2007-02-01 22:56:41.000000000 +0100 @@ -50,6 +50,7 @@ #define BTN_TOOL_TRIPLETAP 0x14e #endif +#include #include #ifndef KEY_OK /* Linux kernel 2.5.42+ defines additional keys in linux/input.h */ geexbox-1.1/packages/DirectFB/unpack0000755000175000017500000000040210641745504015517 0ustar benben#!/bin/sh . config/options DFB=`ls -d $BUILD/$1*` for i in `find $DFB -name Makefile.*`; do sed -i -e 's%RUNTIME_SYSROOT}@MODULEDIR@%RUNTIME_SYSROOT}/lib/directfb%' $i \ -e 's%RUNTIME_SYSROOT}@DATADIR@%RUNTIME_SYSROOT}/share/directfb%' $i done geexbox-1.1/packages/DirectFB/url0000644000175000017500000000007110641745504015037 0ustar benbenhttp://directfb.org/downloads/Core/DirectFB-1.0.0.tar.gz geexbox-1.1/packages/GLib/0000755000175000017500000000000010641745504013507 5ustar benbengeexbox-1.1/packages/GLib/build0000755000175000017500000000144410641745504014537 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain $SCRIPTS/build libiconv HOST_BUILD="`ls -d $ROOT/$BUILD/$1*`/host-build" cd $BUILD/$1* mkdir -p host-build setup_toolchain host ./configure --prefix=$HOST_BUILD make make install setup_toolchain target ICONV_DIR=`ls -d $ROOT/$BUILD/libiconv*/objdir` export CFLAGS="-I$ICONV_DIR/include $CFLAGS" export LDFLAGS="-L$ICONV_DIR/lib $LDFLAGS" export PATH="$HOST_BUILD/bin:$PATH" ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=$LIB_PREFIX \ --enable-shared \ --disable-static \ --with-libiconv=gnu \ --enable-largefiles \ --enable-debug=no \ --disable-man \ --disable-rebuilds \ --disable-gtk-doc make make install geexbox-1.1/packages/GLib/install0000755000175000017500000000015410641745504015103 0ustar benben#!/bin/sh . config/options mkdir -p $INSTALL/usr/lib cp -PR $BUILD/$1*/glib/.libs/*.so* $INSTALL/usr/lib/ geexbox-1.1/packages/GLib/patches/0000755000175000017500000000000010641745504015136 5ustar benbengeexbox-1.1/packages/GLib/patches/10_no_pkg_config.diff0000644000175000017500000000164110641745504021074 0ustar benbendiff -Naur glib-2.12.4.orig/configure glib-2.12.4/configure --- glib-2.12.4.orig/configure 2006-11-23 23:20:52.000000000 +0100 +++ glib-2.12.4/configure 2006-11-23 23:21:15.000000000 +0100 @@ -4824,20 +4824,6 @@ echo "${ECHO_T}no" >&6 fi -if test x$PKG_CONFIG = xno ; then - { { echo "$as_me:$LINENO: error: *** pkg-config not found. See http://www.freedesktop.org/software/pkgconfig/" >&5 -echo "$as_me: error: *** pkg-config not found. See http://www.freedesktop.org/software/pkgconfig/" >&2;} - { (exit 1); exit 1; }; } -fi - -if $PKG_CONFIG --atleast-pkgconfig-version 0.14 ; then - : -else - { { echo "$as_me:$LINENO: error: *** pkg-config too old; version 0.14 or better required." >&5 -echo "$as_me: error: *** pkg-config too old; version 0.14 or better required." >&2;} - { (exit 1); exit 1; }; } -fi - if test "x$enable_debug" = "xyes"; then if test x$cflags_set != xset ; then case " $CFLAGS " in geexbox-1.1/packages/GLib/patches/20_cross_compile.diff0000644000175000017500000000325110641745504021133 0ustar benbendiff -Naur glib-2.12.4.orig/configure glib-2.12.4/configure --- glib-2.12.4.orig/configure 2006-11-23 23:20:52.000000000 +0100 +++ glib-2.12.4/configure 2006-11-23 23:21:15.000000000 +0100 @@ -27609,7 +27595,7 @@ echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test "$cross_compiling" = yes; then + if test "$cross_compiling" = dummy; then { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling See \`config.log' for more details." >&5 echo "$as_me: error: cannot run test program while cross compiling @@ -30441,7 +30427,7 @@ if test "${glib_cv_monotonic_clock+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test "$cross_compiling" = yes; then + if test "$cross_compiling" = dummy; then { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling See \`config.log' for more details." >&5 echo "$as_me: error: cannot run test program while cross compiling @@ -33223,7 +33209,7 @@ echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test "$cross_compiling" = yes; then + if test "$cross_compiling" = dummy; then { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling See \`config.log' for more details." >&5 echo "$as_me: error: cannot run test program while cross compiling @@ -34382,7 +34368,7 @@ if test "${ac_cv_func_posix_getpwuid_r+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test "$cross_compiling" = yes; then + if test "$cross_compiling" = dummy; then { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling See \`config.log' for more details." >&5 echo "$as_me: error: cannot run test program while cross compiling geexbox-1.1/packages/GLib/patches/30_uclibc.diff0000644000175000017500000000113610641745504017534 0ustar benben--- glib-2.12.4.orig/glib/gnulib/vasnprintf.c 2006-11-29 17:52:03.000000000 +0100 +++ glib-2.12.4/glib/gnulib/vasnprintf.c 2006-11-29 17:52:07.000000000 +0100 @@ -50,6 +50,8 @@ # define freea(p) free (p) #endif +#undef HAVE_WCHAR_T + #ifndef HAVE_LONG_LONG_FORMAT static int print_long_long (char *buf, --- glib-2.12.4.orig/glib/gtimer.c 2006-11-29 17:53:11.000000000 +0100 +++ glib-2.12.4/glib/gtimer.c 2006-11-29 17:53:17.000000000 +0100 @@ -56,6 +56,9 @@ #define USE_CLOCK_GETTIME 1 #endif +#define USE_CLOCK_GETTIME 0 +#define HAVE_CLOCK_GETTIME 0 + struct _GTimer { #ifdef G_OS_WIN32 geexbox-1.1/packages/GLib/url0000644000175000017500000000004110641745504014227 0ustar benbenGEEXBOX_SRCS/GLib-2.12.4.tar.bz2 geexbox-1.1/packages/MPlayer/0000755000175000017500000000000010641745504014243 5ustar benbengeexbox-1.1/packages/MPlayer/build0000755000175000017500000001400010641745504015263 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain $SCRIPTS/build lirc $SCRIPTS/build cdparanoia $SCRIPTS/build zlib $SCRIPTS/build alsa $SCRIPTS/build freetype $SCRIPTS/build fribidi $SCRIPTS/build iconv-base $SCRIPTS/build libdvdnav setup_toolchain --optimize target set_option() { OPT="$1" CFG_LIST="$2" PKG="$3" [ "$OPT" = yes ] && CFG=enable || CFG=disable for CFG_NAME in $CFG_LIST; do EXTRA_CONFIG="$EXTRA_CONFIG --$CFG-$CFG_NAME" done [ $CFG = enable -a -n "$PKG" ] && $SCRIPTS/build $PKG return 0 } EXTRA_LIBDIR="$LIB_PREFIX/lib" EXTRA_INCDIR="$LIB_PREFIX/include" set_option "$DXR3" "dxr3 ossaudio" "em8300" set_option "$IVTV" "ivtv pvr" "ivtv" set_option "$SDL" "sdl" "SDL" set_option "$DIRECTFB" "directfb" "DirectFB" set_option "$LIVE555" "live" "live" set_option "$FREEVO" "png" "libpng" if [ "$DIRECTFB" = yes ]; then EXTRA_INCDIR="$EXTRA_INCDIR -I$LIB_PREFIX/include/directfb" EXTRA_LIBDIR="$EXTRA_LIBDIR -L`ls -d $LIB_PREFIX/lib/directfb*`" fi [ "$LIVE555" = yes ] && EXTRA_CONFIG="$EXTRA_CONFIG --with-livelibdir=$LIB_PREFIX/live" if [ "$TARGET_ARCH" = i386 ]; then $SCRIPTS/build vesautils ARCH_CONFIG="--enable-win32dll \ --enable-real \ --realcodecsdir=/codecs \ --win32codecsdir=/codecs \ --disable-fbdev \ --enable-vesa" VIDIX_DRV="cyberblade mach64 mga nvidia pm2 pm3 radeon rage128 unichrome" else ARCH_CONFIG="--disable-win32dll \ --disable-real \ --enable-fbdev \ --disable-vesa" VIDIX_DRV="mach64 radeon rage128" fi if [ "$DEBUG" = yes ]; then DEBUG_CONFIG="--disable-decoder=h264 \ --disable-decoder=svq3 \ --disable-parser=h264" fi CFLAGS="$CFLAGS -ffast-math -DFIXED_POINT -D__USE_EXTERN_INLINES" cd $BUILD/$1* ./configure --prefix=/usr \ --confdir=/etc/mplayer \ --with-extralibdir="$EXTRA_LIBDIR" \ --with-extraincdir="$EXTRA_INCDIR" \ --enable-radio \ --enable-radio-v4l2 \ $ARCH_CONFIG \ $EXTRA_CONFIG \ --disable-mencoder \ --disable-gui \ --enable-largefiles \ --disable-linux-devfs \ --disable-termcap \ --disable-langinfo \ --enable-lirc \ --disable-lircc \ --enable-joystick \ --disable-xf86keysym \ --enable-tv \ --disable-tv-v4l1 \ --enable-tv-v4l2 \ --disable-tv-bsdbt848 \ --enable-rtc \ --enable-network \ --disable-winsock2 \ --disable-smb \ --disable-dvdread \ --enable-dvdnav \ --with-dvdnav-config="$LIB_PREFIX/bin/dvdnav-config" \ --enable-cdparanoia \ --enable-freetype \ --with-freetype-config="$LIB_PREFIX/bin/freetype-config" \ --disable-fontconfig \ --enable-fribidi \ --with-fribidi-config="$LIB_PREFIX/bin/fribidi-config" \ --enable-unrarlib \ --enable-menu \ --disable-sortsub \ --disable-enca \ --disable-macosx \ --disable-inet6 \ --disable-gethostbyname2 \ --disable-ftp \ --disable-vstream \ --disable-gif \ --disable-jpeg \ --disable-libcdio \ --disable-liblzo \ --disable-qtx \ --disable-xanim \ --disable-xvid \ --disable-x264 \ --disable-demuxer=matroska \ --disable-libavcodec_so \ --disable-libavformat_so \ --disable-libpostproc_so \ --disable-speex \ --disable-tremor-internal \ --disable-tremor-low \ --disable-tremor-external \ --disable-libvorbis \ --disable-theora \ --disable-faad-external \ --enable-faad-internal \ --disable-faac \ --disable-ladspa \ --disable-libdv \ --disable-mad \ --disable-toolame \ --disable-xmms \ --enable-mp3lib \ --enable-liba52 \ --disable-libmpeg2 \ --disable-musepack \ --enable-vidix-internal \ --with-vidix-drivers="$VIDIX_DRV" \ --disable-vidix-external \ --disable-gl \ --disable-dga \ --disable-svga \ --disable-aa \ --disable-caca \ --disable-ggi \ --disable-ggiwmh \ --disable-directx \ --disable-dxr2 \ --disable-dvb \ --enable-dvbhead \ --disable-mga \ --disable-xmga \ --disable-xv \ --disable-xvmc \ --disable-vm \ --disable-xinerama \ --disable-x11 \ --disable-mlib \ --disable-3dfx \ --disable-tdfxfb \ --disable-zr \ --disable-bl \ --disable-tdfxvid \ --disable-tga \ --disable-pnm \ --disable-md5sum \ --disable-arts \ --disable-esd \ --disable-polyp \ --disable-jack \ --disable-openal \ --enable-alsa \ --disable-sgiaudio \ --disable-sunaudio \ --disable-nas \ --disable-win32waveout \ --disable-select \ --enable-runtime-cpudetection \ --enable-cross-compile \ --target="$TARGET_ARCH-linux" \ --as=$AS \ --cc=$CC \ --host-cc=$HOST_CC \ --language=en \ --disable-shm \ --disable-dynamic-plugins \ $DEBUG_CONFIG sed -i s/-lnsl// config.mak sed -i 's/.*HAVE_LRINTF.*/#define HAVE_LRINTF 1/' config.h sed -i 's/.*HAVE_ROUND.*/#undef HAVE_ROUND/' config.h [ "$DEBUG" = yes ] && sed -i 's/.*MP_DEBUG.*/#define MP_DEBUG 1/' config.h make geexbox-1.1/packages/MPlayer/config/0000755000175000017500000000000010641745504015510 5ustar benbengeexbox-1.1/packages/MPlayer/config/dvd0000644000175000017500000000010110641745504016200 0ustar benben# Configure system to active the DVD navigation menu. DVDNAV=no geexbox-1.1/packages/MPlayer/config/input.conf0000644000175000017500000000216710641745504017524 0ustar benben## ## GeeXboX MPlayer input control file ## ## Playback p pause SPACE pause f pt_step -1 g pt_step 1 h tv_step_channel 1 l tv_step_channel -1 n tv_step_norm b tv_step_chanlist ## Seeking RIGHT seek +10 LEFT seek -10 DOWN seek -60 UP seek +60 PGUP seek 600 PGDWN seek -600 ## Audio properties - audio_delay 0.100 + audio_delay -0.100 / volume -1 * volume 1 c mute e switch_audio ## Subtitle properties z sub_delay -0.1 x sub_delay +0.1 r sub_pos -1 t sub_pos +1 w sub_select ## DVD Menu Navigation 8 dvdnav 1 # DVDNav UP 2 dvdnav 2 # DVDNav DOWN 4 dvdnav 3 # DVDNav LEFT 6 dvdnav 4 # DVDNav RIGHT 0 dvdnav 5 # DVDNav MENU ENTER dvdnav 6 # DVDNav SELECT ## Miscelaneous a quit q quit ESC quit k halt o osd m menu toggle ; menu toggle s run /usr/bin/tvswitch y play_dvd #i record ## Controls 1 contrast -1 3 contrast 1 7 brightness -1 9 brightness 1 INS hue -1 DEL hue 1 HOME saturation -1 END saturation 1 ## Joystick JOY_RIGHT seek 10 JOY_LEFT seek -10 JOY_UP seek 60 JOY_DOWN seek -60 JOY_BTN1 menu hide JOY_BTN2 pause JOY_BTN3 osd JOY_BTN4 mute JOY_BTN5 volume -1 JOY_BTN6 volume 1 geexbox-1.1/packages/MPlayer/config/menu.conf0000644000175000017500000002342010641745504017324 0ustar benben #WELCOME_CONSOLE# geexbox-1.1/packages/MPlayer/config/mplayer.conf0000644000175000017500000000134010641745504020026 0ustar benbenvo=cvidix,vesa mixer-channel=Master really-quiet=yes framedrop=yes vsync=yes fs=yes zoom=yes menu=yes menu-startup=yes menu-chroot=/mnt double=yes fixed-vo=yes nocolorkey=yes cache=4096 cache-min=2 idx=yes lircconf=/etc/lircrc sub-fuzziness=1 #monitor-hfreq=31.5k-50k #monitor-vfreq=50-90 input=file=/var/mp_control menu-flip-hebrew=1 menu-keepdir=1 bg-lcdbanner="GeeXboX Open Media Center" info-fifo=/tmp/mp_streaminfo # Set Post Processing (h deblock, v deblock, dering, auto luminance) # Consumes CPU power, disabled for low configs, uncomment to enable it. #vf=pp=hb:a/vb:a/dr:a/al:a # Forces RTSP client's port (usefull for FreeboxTV users in router mode) # Do _NOT_ uncomment the line without LIVE555 support #rtsp-port = 31337 geexbox-1.1/packages/MPlayer/config/radio0000644000175000017500000000027010641745504016530 0ustar benben# # Radio Options RADIO=no # # Radio Channels # Syntax : CHAN="Channel Frequency:Channel Title" # Example: #CHAN="91.5:CBC Radio 1" #CHAN="106.1:CHEZ" #CHAN="94.9:CIMF Rock Detente" geexbox-1.1/packages/MPlayer/init.d/0000755000175000017500000000000010641745504015430 5ustar benbengeexbox-1.1/packages/MPlayer/init.d/68_mp-fonts0000755000175000017500000000366010641745504017443 0ustar benben#!/bin/sh # # put the right font in the right place # # runlevels: geexbox, debug echo "### Setting up fonts ###" . /etc/lang.conf . /etc/lang.funcs readfirstword() { head -n 1 $1 | sed 's/^\([[:graph:]]*\).*$/\1/' } # set menu and help files according to language setting MENU_LANG=`sed -n "s/.*lang=\([^ ]*\).*/\1/p" /proc/cmdline` if test -n $MENU_LANG; then . /etc/mplayer/en.lang # default language file, always present [ -f /etc/mplayer/${MENU_LANG}.lang ] && . /etc/mplayer/${MENU_LANG}.lang TAGS=`grep "#.*#" /etc/mplayer/menu.conf | sed 's%.*#\(.*\)#.*%\1%'` for i in $TAGS; do v=`eval echo \\\$$i` sed -i "s%#${i}#%$v%" /etc/mplayer/menu.conf; done cp -f /usr/share/mplayer/help_en.txt /usr/share/mplayer/help.txt [ -f /usr/share/mplayer/help_$MENU_LANG.txt ] && cp -f /usr/share/mplayer/help_$MENU_LANG.txt /usr/share/mplayer/help.txt MENU_CHARSET=`lang2charset $MENU_LANG` [ -z "$MENU_CHARSET" ] && exit 1 MENU_FONT=`lang2font "$MENU_LANG" menu` if [ -f /etc/theme.conf -a -f /usr/share/fonts/themefont.ttf ]; then . /etc/theme.conf [ -z "$FONT_CHARSETS" ] && FONT_CHARSETS="iso-8859-1" for i in $FONT_CHARSETS; do [ "$i" = "$MENU_CHARSET" ] && MENU_FONT="themefont.ttf" && break done fi MENU_FONT="/usr/share/fonts/$MENU_FONT" [ ! -f "$MENU_FONT" ] && exit 1 mp_set_option font "$MENU_FONT" fi # set subtitles font according to subfont setting if test -f /etc/subfont; then SUB_CHARSET=`readfirstword /etc/subfont` SUB_CHARSET=`lang2charset "$SUB_CHARSET"` [ -z "$SUB_CHARSET" ] && exit 1 SUB_FONT=`lang2font "$SUB_CHARSET" sub` SUB_FONT="/usr/share/fonts/$SUB_FONT" [ ! -f "$SUB_FONT" ] && exit 1 mp_set_option subfont "$SUB_FONT" mp_set_option subcp "$SUB_CHARSET" fribidi_mp_set_option "$SUB_CHARSET" fi # set font settings according to theme if test -f /etc/theme.conf; then . /etc/theme.conf mp_set_option subfont-text-scale "$FONT_SIZE" fi exit 0 geexbox-1.1/packages/MPlayer/init.d/70_mp-menu0000755000175000017500000000252410641745504017245 0ustar benben#!/bin/sh # # configure MPlayer's menu # # runlevels: geexbox, debug echo "### Configuring MPlayer's menu ###" # remove CD from menu if no cd drive is available test -e /dev/cdrom || sed -i 's/.*play_vcd.*//' /etc/mplayer/menu.conf test -e /dev/cdrom || sed -i 's/.*play_cdda.*//' /etc/mplayer/menu.conf # remove DVD from the menu if no dvd drive is available test -e /dev/dvd || sed -i 's/.*play_dvd.*//' /etc/mplayer/menu.conf # disable image file display if fbi is not present or fb not initialized test -x /usr/bin/fbi -a -e /dev/fb0 || ( echo -n "" > /etc/img_ext; sed -i 's/.*set_menu view_img_timeout.*//' /etc/mplayer/menu.conf ) # build a single file extensions filter cat /etc/file_ext > /etc/extensions cat /etc/list_ext >> /etc/extensions cat /etc/img_ext >> /etc/extensions # add partitions space informations in menu for i in `mount | sed -n 's%/dev/\(disk[0-9]*\(part[0-9]*\)*\).*%\1%p'`; do MENU_DF="$MENU_DF " done # do the same for cdrom drives for i in `ls /dev/cdrom* | sed -n 's%/dev/\(cdrom[0-9]\).*%\1%p'`; do MENU_DF="$MENU_DF " done [ -n "$MENU_DF" ] && sed -i "s%property=\"MAC\"/>%property=\"MAC\"/> $MENU_DF%" /etc/mplayer/menu.conf # do not load geexbox OSD menu at movie playback if running through Freevo if [ -f /usr/bin/freevo ]; then mp_set_option menu-startup "no" fi exit 0 geexbox-1.1/packages/MPlayer/init.d/72_mp-audio0000755000175000017500000000415410641745504017405 0ustar benben#!/bin/sh # # configure MPlayer's audio settings # # runlevels: geexbox, debug echo "### Configuring MPlayer's audio settings ###" # include audio configuration file . /etc/audio echo $ALSA_CARD | grep -q ".." || ALSA_CARD="0$ALSA_CARD" case $SOUNDCARD_MODE in SPDIF) ALSA_REAL_MODE=IEC958 ALSA_INTERFACE=plughw ;; analog) ALSA_REAL_MODE=DAC ALSA_INTERFACE=hw ;; esac ALSA_DEVICE=`sed -n "s/^$ALSA_CARD-\(..\): .*$ALSA_REAL_MODE.*/\1/p" /proc/asound/pcm | tail -n 1` [ -z "$ALSA_DEVICE" ] && ALSA_DEVICE=`grep -iv Modem /proc/asound/pcm | sed -n "s/^$ALSA_CARD-\(..\): .*playback.*/\1/p" | tail -n 1` [ -z "$ALSA_DEVICE" ] && ALSA_DEVICE=`sed -n "s/^$ALSA_CARD-\(..\): .*playback.*/\1/p" /proc/asound/pcm | tail -n 1` [ -n "$ALSA_DEVICE" ] && AO_DEVICE=":device=$ALSA_INTERFACE=$ALSA_CARD.$ALSA_DEVICE" # set alsa as audio output isn't forced already. mp_set_option ao "alsa$AO_DEVICE" if [ -f /usr/bin/freevo ]; then freevo_set_option MPLAYER_AO_DEV "alsa$AO_DEVICE" fi # enable hardware AC3 output via S/PDIF if audio codec isn't forced already. if [ "$SOUNDCARD_MODE" = SPDIF ]; then if [ "$AC3_DECODER" = ac3 ]; then mp_set_option ac "hwac3," elif [ "$AC3_DECODER" = dts ]; then mp_set_option ac "hwdts," elif [ "$AC3_DECODER" = ac3dts ]; then mp_set_option afm "hwac3" fi fi # don't use Master mixer channel when not available if [ -z "`amixer -c $ALSA_CARD simple | grep "'Master'"`" ]; then sed -i 's/mixer-channel=Master//' /etc/mplayer/mplayer.conf fi # set number of playback channels if isn't forced already. mp_set_option channels "$CHANNELS" # set DVD default language echo "alang=`sed 's/.*lang=\([^ ]*\).*/\1/p' /proc/cmdline | head -n 1`,en" >> /etc/mplayer/mplayer.conf # Set suitable background movie when playing audio-only. for i in background-audio.avi background.avi; do if [ -f /usr/share/mplayer/$i ]; then mp_set_option bgvideo "/usr/share/mplayer/$i" break fi done # set softvol for VIA 8235 rev80 and SiS SI7012 rev16 cards if grep -q -e '0401: 1106:3059 (rev 80)' -e '0401: 13f6:0111 (rev 16)' /tmp/pci; then mp_set_option softvol "yes" fi exit 0 geexbox-1.1/packages/MPlayer/init.d/74_mp-video0000755000175000017500000000362610641745504017417 0ustar benben#!/bin/sh # # configure MPlayer's video settings # # runlevels: geexbox, debug echo "### Configuring MPlayer's video settings ###" # include tvout configuration file . /etc/tvout # set mplayer resolution when using offb if [ -e /dev/fb0 ]; then RES=`/usr/sbin/fbset | sed -n 's/mode "\(.*\)-.*"/\1/p'` RESX=`echo $RES | cut -f1 -dx` RESY=`echo $RES | cut -f2 -dx` mp_set_option screenw "$RESX" mp_set_option screenh "$RESY" else mp_set_option screenw 800 mp_set_option screenh 600 fi # set double to no for nvidia, sis and Kyro cards and VMWare for i in '0300: 10de:' '0300: 1039:' '0300: 104a:0010' '0300: 15ad:'; do if grep -q "$i" /tmp/pci; then # except if we want to try nvidia vidix if [ "$i" = '0300: 10de:' -a ! -f /etc/mplayer/no_nvidia_vidix ]; then mp_set_option vf "format=yuy2" concat # nvidia card on powerpc elif [ "$i" = '0300: 10de:' -a "`cat /etc/arch`" = powerpc ]; then mp_set_option vo "directfb:noinput" if [ -f /usr/bin/freevo ]; then freevo_set_option MPLAYER_VO_DEV "directfb:noinput" fi else mp_set_option vo "vesa" if [ -f /usr/bin/freevo ]; then freevo_set_option MPLAYER_VO_DEV "vesa" fi mp_set_option double "no" mp_set_option vf "expand=-1:-1:-1:-1:1" concat fi fi done # Force -vo vesa for some ATI Mobility Radeons if grep -q '0300: 1002:4c59' /tmp/pci; then mp_set_option vo "vesa" if [ -f /usr/bin/freevo ]; then freevo_set_option MPLAYER_VO_DEV "vesa" fi fi # do not use VESA Direct Graphic Access on Intel i855, i865, i910, # i915 and i945 cards if grep -q -e '0300: 8086:3582' -e '0300: 8086:2572' -e '0300: 8086:2592' -e '0300: 8086:2582' -e '0300: 8086:27a2' /tmp/pci; then mp_set_option vo "vesa:nodga" if [ -f /usr/bin/freevo ]; then freevo_set_option MPLAYER_VO_DEV "vesa:nodga" fi fi # set the tvout aspect mp_set_option monitoraspect "$TVOUT_ASPECT" exit 0 geexbox-1.1/packages/MPlayer/init.d/75_mp-tvcard0000755000175000017500000000555110641745504017574 0ustar benben#!/bin/sh # # configure MPlayer's v4l2 settings # # runlevels: geexbox, debug echo "### Configuring MPlayer's v4l2 support ###" if [ -f /var/tvcard -a -c /dev/video0 ]; then . /etc/tvcard . /var/tvcard # configure mplayer v4l2 driver if [ -n "$TV_WIDTH" -a -n "$TV_HEIGHT" ]; then TV_OPTIONS=":width=$TV_WIDTH:height=$TV_HEIGHT" fi if [ -n "$TV_BRIGHTNESS" ]; then TV_OPTIONS="$TV_OPTIONS:brightness=$TV_BRIGHTNESS" fi if [ -n "$TV_CONTRAST" ]; then TV_OPTIONS="$TV_OPTIONS:contrast=$TV_CONTRAST" fi if [ -n "$TV_HUE" ]; then TV_OPTIONS="$TV_OPTIONS:hue=$TV_HUE" fi if [ -n "$TV_SATURATION" ]; then TV_OPTIONS="$TV_OPTIONS:saturation=$TV_SATURATION" fi if [ `grep -c ^CHAN /etc/tvcard` -gt 0 ]; then for CHAN in `sed -n 's/^CHAN="\(.*\):\(.*\)"/\1-\2/p' /etc/tvcard | sed 'y/ /_/' `; do mp_set_option tv=channels "$CHAN" concat done else sed "s/.*set_menu tv_chan.*//" /etc/mplayer/menu.conf fi echo "tv=driver=v4l2:norm=$TVIN_STANDARD:chanlist=$CHANLIST$TV_OPTIONS" >> /etc/mplayer/mplayer.conf IFS=' ' # set mplayer TV channels list echo "" >> /etc/mplayer/menu.conf for CHNAME in `sed -n 's/^tv=channels=//p' /etc/mplayer/mplayer.conf | sed -e 's/,/\n/g' -e 's/_/ /g' | sed 's/\(.*\)-\(.*\)/\2/'`; do echo "" >> /etc/mplayer/menu.conf done echo "" >> /etc/mplayer/menu.conf else # remove tv options from menu sed -i 's/.*ok="set_menu tv_settings".*//' /etc/mplayer/menu.conf sed -i 's/.*ok="set_menu tv_norm".*//' /etc/mplayer/menu.conf fi [ -f /var/digimatrix ] && sed -i 's/set_menu radio_settings/set_menu digimatrix_radio/' /etc/mplayer/menu.conf [ -f /etc/radio ] && . /etc/radio if [ "$RADIO" = yes ]; then # set mplayer menu radio stations list if [ `grep -c ^CHAN /etc/radio` -gt 0 ]; then for CHAN in `sed -n 's/^CHAN="\(.*\):\(.*\)"/\1-\2/p' /etc/radio | sed 'y/ /_/' `; do mp_set_option radio=channels "$CHAN" concat done else sed "s/.*set_menu radio_chan.*//" /etc/mplayer/menu.conf sed -i 's/^radio=.*//' /etc/mplayer/menu.conf fi # set mplayer Radio channels list n=0 echo "" >> /etc/mplayer/menu.conf for CHNAME in `sed -n 's/^radio=channels=//p' /etc/mplayer/mplayer.conf | sed -e 's/,/\n/g' -e 's/_/ /g' | sed 's/\(.*\)-\(.*\)/\2/'`; do echo "" >> /etc/mplayer/menu.conf done echo "" >> /etc/mplayer/menu.conf else # no supported radio card specified sed -i 's/.*ok="set_menu radio.*//' /etc/mplayer/menu.conf sed -i 's/^radio=.*//' /etc/mplayer/menu.conf fi exit 0 geexbox-1.1/packages/MPlayer/init.d/76_mp-dvbcard0000755000175000017500000000143710641745504017716 0ustar benben#!/bin/sh # # configure MPlayer's DVB settings # # runlevels: geexbox, debug CHANNELS_CONF=/etc/mplayer/channels.conf echo "### Configuring MPlayer's DVB support ###" if [ -f /var/dvbcard ]; then . /var/dvbcard # build DVB channels configuration file if [ ! -f $CHANNELS_CONF ]; then if [ -f /etc/dvb.conf ]; then dvbscan -x 0 /etc/dvb.conf > $CHANNELS_CONF if [ -s $CHANNELS_CONF ]; then # remove non-coherent detected channels grep -v "^\[.*\]:" $CHANNELS_CONF > /tmp/channels.conf mv /tmp/channels.conf $CHANNELS_CONF fi fi fi fi # no DVB card or no configured channels if [ ! -f /var/dvbcard -o ! -s $CHANNELS_CONF ]; then # remove DVB options from menu sed -i 's/.*ok="set_menu dvb_sel".*//' /etc/mplayer/menu.conf fi exit 0 geexbox-1.1/packages/MPlayer/init.d/77_mp-dxr30000755000175000017500000000166410641745504017174 0ustar benben#!/bin/sh # # configure DXR3/Hollywood+ cards for MPlayer # # runlevels: geexbox, debug # include audio configuration file . /etc/audio # include tvout configuration file . /etc/tvout # set ao, vo and vf for DXR3/Hollywood+ cards and upload microcode. if [ -e /var/use_dxr3 ]; then echo "### Configuring DXR3/Hollywood+ cards for MPlayer ###" mp_set_option vo "dxr3:sync:norm=0" mp_set_option ao "oss:/dev/em8300_ma-0" mp_set_option vf "expand=-1:-1:-1:-1:1" concat sed -i "s%play_dvd.*%quit 167\"/>%" /etc/mplayer/menu.conf em8300setup -p -a -o >/dev/null 2>&1 # TVOut standard (default is PAL) if [ "$TVOUT_STANDARD" = "ntsc" ]; then em8300setup -n >/dev/null 2>&1 fi # set display to WideScreen format (default is 4:3) if [ "$TVOUT_ASPECT" = "16:9" ]; then em8300setup -w >/dev/null 2>&1 fi # use SPDIF output ? if [ "$SOUNDCARD_MODE" = SPDIF ]; then em8300setup -d >/dev/null 2>&1 fi fi exit 0 geexbox-1.1/packages/MPlayer/init.d/78_mp-pvr0000755000175000017500000000113510641745504017115 0ustar benben#!/bin/sh # # configure PVR (mostly IVTV based) cards for MPlayer # # runlevels: geexbox, debug # set pvr arguments for PVR cards. if [ -e /var/use_pvr ]; then echo "### Configuring PVR cards for MPlayer ###" # include PVR configuration file . /etc/pvr mp_set_option pvr "aspect=$PVR_ASPECT:arate=$PVR_AUDIO_RATE:alayer=$PVR_AUDIO_LAYER:abitrate=$PVR_AUDIO_BITRATE:amode=$PVR_AUDIO_MODE:vbitrate=$PVR_VIDEO_BITRATE:vmode=$PVR_VIDEO_MODE:vpeak=$PVR_VIDEO_PEAK_BITRATE:fmt=$PVR_VIDEO_FORMAT" else # remove pvr from menu sed -i 's%.*ok="loadfile pvr://".*%%' /etc/mplayer/menu.conf fi exit 0 geexbox-1.1/packages/MPlayer/init.d/79_mp-utils0000755000175000017500000000074010641745504017450 0ustar benben#!/bin/sh # # start MPlayer's utilities # # runlevels: geexbox, debug echo "### Starting MPlayer's utilities ###" # create the mplayer control pipe for external programs mkfifo /var/mp_control # start the autolaunching script . /etc/autoplay [ $AUTOPLAY == "yes" ] && echo -n "" > /var/autoplay /usr/bin/autoplay 8 > /var/mp_control & # proceed to dvdnav setting . /etc/dvd [ $DVDNAV == "yes" ] && echo -n "" > /var/dvdnav # start the file copy daemon /usr/bin/cpd & exit 0 geexbox-1.1/packages/MPlayer/init.d/82_mplayer0000755000175000017500000000273610641745504017350 0ustar benben#!/bin/sh # # configure and launch mplayer # # runlevels: geexbox, debug # do not start if Freevo is present if test -x /usr/bin/freevo; then exit 0 fi echo "### Starting MPlayer ###" # still display mplayer output while in debug mode grep -q debugging /proc/cmdline && mp_set_option really-quiet no # disable console blanking and cursor blinking for a proper MPlayer start echo -e "\033[?25l\033[9;0]" # disable kernel messages to avoid MPlayer screen corruption echo 0 > /proc/sys/kernel/printk # default directory echo -n /mnt/ > /tmp/mp_current_path # tty used for the video display and commands input TTY=4 RET=0 # start mplayer with gdb when built with debugging options if test -f /etc/debug; then echo "r /usr/share/mplayer/background.avi -loop 0" > /gdb_cmd gdb -x /gdb_cmd /usr/bin/mplayer else echo "0" > /tmp/mp_result # disable fbdev cursor echo -e "\033[9;0]\033[?25l\033[?1;;c" >/dev/tty$TTY chvt $TTY ( # start mplayer or fbi and keep them launched while true; do if [ -n "`pidof lircd`" ]; then irpty /etc/lircrc -- mp_wrapper else mp_wrapper fi test `cat /tmp/mp_result` -eq 165 -a -x /usr/bin/fbi && fbi_wrapper test `cat /tmp/mp_result` -eq 166 && return 0 test `cat /tmp/mp_result` -eq 167 && mplayer dvd://1 > /dev/null 2>&1 test `cat /tmp/mp_result` -eq 168 && return 64 test `cat /tmp/mp_result` -eq 169 && (chvt 1; /bin/sh < /dev/tty1; chvt $TTY) done ) $INSTALL/etc/mplayer/no_nvidia_vidix You can enable nvidia vidix driver simply by removing this file. Vidix should give you better performance especially with low-end hardware. This feature is not very well tested. That's why it is not enabled by default. And that's also why you should help us, testing this feature and reporting your results if you own nvidia hardware. EOF mkdir -p $INSTALL/codecs cp $BUILD/$1*/etc/codecs.conf $INSTALL/etc/mplayer if [ "$2" != generator ]; then if [ "$FREEVO" = no ]; then cp $BUILD/theme-$THEME/background.avi $INSTALL/usr/share/mplayer [ -f $BUILD/theme-$THEME/background-audio.avi ] && cp $BUILD/theme-$THEME/background-audio.avi $INSTALL/usr/share/mplayer fi fi exit 0 geexbox-1.1/packages/MPlayer/need_build0000755000175000017500000000056510641745504016271 0ustar benben#!/bin/sh . config/options STAMP=$STAMPS/$1/build . $STAMP [ "$DEBUG" != "$STAMP_DEBUG" \ -o "$DXR3" != "$STAMP_DXR3" \ -o "$IVTV" != "$STAMP_IVTV" \ -o "$SDL" != "$STAMP_SDL" \ -o "$DIRECTFB" != "$STAMP_DIRECTFB" \ -o "$LIVE555" != "$STAMP_LIVE555" \ -o "$FREEVO" != "$STAMP_FREEVO" \ -o "$TARGET_ARCH" != "$STAMP_TARGET_ARCH" \ ] && rm -f $STAMP exit 0 geexbox-1.1/packages/MPlayer/patches/0000755000175000017500000000000010641760673015676 5ustar benbengeexbox-1.1/packages/MPlayer/patches/000_use-lrint-for-ints.diff0000644000175000017500000000512510641745504022567 0ustar benben* use lrint() whenever the left-value is integer this allows the compliation to use lrint() inlined math macros without this patch, gcc 4.1.0 optimize rint() calls into lrint() but, we dont have function of lrint(), just inlined math macro. use lrintf() whenever the argument is float for the same reason. diff -r 51494c531769 libavcodec/snow.c --- a/libavcodec/snow.c Sun Apr 30 16:52:40 2006 +0200 +++ b/libavcodec/snow.c Sun Apr 30 16:54:28 2006 +0200 @@ -3850,7 +3850,7 @@ } static int qscale2qlog(int qscale){ - return rint(QROOT*log(qscale / (float)FF_QP2LAMBDA)/log(2)) + return lrint(QROOT*log(qscale / (float)FF_QP2LAMBDA)/log(2)) + 61*QROOT/8; //<64 >60 } diff -r 51494c531769 libmpcodecs/vf_hue.c --- a/libmpcodecs/vf_hue.c Sun Apr 30 16:52:40 2006 +0200 +++ b/libmpcodecs/vf_hue.c Sun Apr 30 16:54:28 2006 +0200 @@ -31,8 +31,8 @@ static void process_C(uint8_t *udst, uin int w, int h, float hue, float sat) { int i; - const int s= rint(sin(hue) * (1<<16) * sat); - const int c= rint(cos(hue) * (1<<16) * sat); + const int s= lrint(sin(hue) * (1<<16) * sat); + const int c= lrint(cos(hue) * (1<<16) * sat); while (h--) { for (i = 0; iitem,"hue")) { - eq->value = rint(vf->priv->hue *100 / M_PI); + eq->value = lrint(vf->priv->hue *100 / M_PI); return CONTROL_TRUE; }else if (!strcmp(eq->item,"saturation")) { - eq->value = rint(vf->priv->saturation*100 - 100); + eq->value = lrintf(vf->priv->saturation*100 - 100); return CONTROL_TRUE; } break; diff -r 51494c531769 libvo/vo_dxr3.c --- a/libvo/vo_dxr3.c Sun Apr 30 16:52:40 2006 +0200 +++ b/libvo/vo_dxr3.c Sun Apr 30 16:54:28 2006 +0200 @@ -1307,7 +1307,7 @@ static int col_interp(float x, struct co y = 255; if(y < 0) y = 0; - return rint(y); + return lrintf(y); } static int overlay_set_keycolor(overlay_t *o, int color) { diff -r 51494c531769 libavcodec/mpegaudiodec.c --- a/libavcodec/mpegaudiodec.c 2006-12-10 04:02:54.000000000 +0100 +++ b/libavcodec/mpegaudiodec.c 2006-12-10 04:03:17.000000000 +0100 @@ -402,9 +402,9 @@ for(i=0; i<512*16; i++){ int exponent= (i>>4); double f= pow(i&15, 4.0 / 3.0) * pow(2, (exponent-400)*0.25 + FRAC_BITS + 5); - expval_table[exponent][i&15]= llrint(f); + expval_table[exponent][i&15]= lrint(f); if((i&15)==1) - exp_table[exponent]= llrint(f); + exp_table[exponent]= lrint(f); } for(i=0;i<7;i++) { geexbox-1.1/packages/MPlayer/patches/005_nopcidb.diff0000644000175000017500000000503310641745504020527 0ustar benbendiff -r c34020f29f4a libdha/pci_db2c.awk --- a/vidix/pci_db2c.awk Sun Apr 30 16:54:29 2006 +0200 +++ b/vidix/pci_db2c.awk Sun Apr 30 16:54:30 2006 +0200 @@ -45,9 +45,6 @@ BEGIN { print_name_struct(name_h_file); print "#include ">name_file print "#include \"pci_names.h\"">name_file - print "#include \"pci_dev_ids.c\"">name_file - print "">name_file - print "static struct vendor_id_s vendor_ids[] = {">name_file first_pass=1; init_name_db(); while(getline vendor_file; if(length(svend_name) < 9) printf("\t") >vendor_file; printf("0x%s /*%s*/\n",field[2], name_field) >vendor_file; - printf("{ 0x%s, \"%s\", dev_lst_%s },\n",field[2], name_field, field[2]) >name_file; printf("/* Vendor: %s: %s */\n", field[2], name_field) > ids_file if(first_pass == 1) { first_pass=0; } else { print "{ 0xFFFF, NULL }\n};" >dev_ids_file; } @@ -103,7 +99,6 @@ BEGIN { print "#endif/*PCI_IDS_INCLUDED*/">ids_file print "">name_h_file print "#endif/*PCI_NAMES_INCLUDED*/">name_h_file - print "};">name_file print "{ 0xFFFF, NULL }" >dev_ids_file; print "};">dev_ids_file print_func_bodies(name_file); @@ -157,30 +143,11 @@ function print_func_bodies(out_file) print "">out_file print "const char *pci_vendor_name(unsigned short id)" >out_file print "{" >out_file - print " unsigned i;" >out_file - print " for(i=0;iout_file - print " {" >out_file - print "\tif(vendor_ids[i].id == id) return vendor_ids[i].name;" >out_file - print " }" >out_file print " return NULL;" >out_file print "}">out_file print "" >out_file print "const char *pci_device_name(unsigned short vendor_id, unsigned short device_id)" >out_file print "{" >out_file - print " unsigned i, j;" >out_file - print " for(i=0;iout_file - print " {" >out_file - print "\tif(vendor_ids[i].id == vendor_id)" >out_file - print "\t{" >out_file - print "\t j=0;" >out_file - print "\t while(vendor_ids[i].dev_list[j].id != 0xFFFF)" >out_file - print "\t {">out_file - print "\t\tif(vendor_ids[i].dev_list[j].id == device_id) return vendor_ids[i].dev_list[j].name;">out_file - print "\t\tj++;">out_file - print "\t };">out_file - print "\t break;" >out_file - print "\t}" >out_file - print " }" >out_file print " return NULL;">out_file print "}">out_file return geexbox-1.1/packages/MPlayer/patches/010_getpath.diff0000644000175000017500000000114510641745504020541 0ustar benbendiff -r 839719c3cc68 get_path.c --- a/get_path.c Sun Apr 30 16:54:30 2006 +0200 +++ b/get_path.c Sun Apr 30 16:54:30 2006 +0200 @@ -24,7 +24,7 @@ char *get_path(char *filename){ #if defined(__MINGW32__) static char *config_dir = "/mplayer"; #else - static char *config_dir = "/.mplayer"; + static char *config_dir = "/mplayer"; #endif int len; #ifdef MACOSX_BUNDLE @@ -51,6 +51,7 @@ char *get_path(char *filename){ #else return NULL; #endif + homedir = "/etc"; len = strlen(homedir) + strlen(config_dir) + 1; if (filename == NULL) { if ((buff = (char *) malloc(len)) == NULL) geexbox-1.1/packages/MPlayer/patches/065_disable-vo.diff0000644000175000017500000000130010641745504021135 0ustar benbendiff -r 974208590746 libvo/Makefile --- a/libvo/Makefile Sun Apr 30 16:54:29 2006 +0200 +++ b/libvo/Makefile Sun Apr 30 16:54:29 2006 +0200 @@ -9,7 +14,6 @@ SRCS=aclib.c \ video_out.c \ vo_mpegpes.c \ vo_null.c \ - vo_yuv4mpeg.c \ $(VO_SRCS) \ SRCS_MPLAYER-$(VIDIX) += vosub_vidix.c diff -r 974208590746 libvo/video_out.c --- a/libvo/video_out.c Sun Apr 30 16:54:29 2006 +0200 +++ b/libvo/video_out.c Sun Apr 30 16:54:29 2006 +0200 @@ -249,7 +238,6 @@ vo_functions_t* video_out_drivers[] = &video_out_xvmc, #endif &video_out_mpegpes, - &video_out_yuv4mpeg, #ifdef HAVE_PNG &video_out_png, #endif geexbox-1.1/packages/MPlayer/patches/100_alsa-chunk-size.diff0000644000175000017500000000170110641745504022101 0ustar benbendiff -r 0ad70995f3b9 libao2/ao_alsa.c --- a/libao2/ao_alsa.c Sun Apr 30 16:54:28 2006 +0200 +++ b/libao2/ao_alsa.c Sun Apr 30 16:54:28 2006 +0200 @@ -615,11 +615,15 @@ static int init(int rate_hz, int channel if ((err = snd_pcm_hw_params_set_period_size_near(alsa_handler, alsa_hwparams, &chunk_size, NULL)) < 0) { - mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_UnableToSetPeriodSize, - chunk_size, snd_strerror(err)); + chunk_size = 512 + 1024 - chunk_size; + if ((err = snd_pcm_hw_params_set_period_size(alsa_handler, alsa_hwparams, + chunk_size, 0)) < 0) { + mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_UnableToSetPeriodSize, + chunk_size, snd_strerror(err)); + } return 0; } - else { + if (err >= 0) { mp_msg(MSGT_AO,MSGL_V,"alsa-init: chunksize set to %li\n", chunk_size); } if ((err = snd_pcm_hw_params_set_periods_near(alsa_handler, alsa_hwparams, geexbox-1.1/packages/MPlayer/patches/105_mixer-control-always-on.diff0000644000175000017500000000241410641745504023624 0ustar benben* Allows control of the audio mixer even for media with no audio content (e.g. background.avi or tv:// with immediatemode=1) --- old/command.c 2006-05-27 02:33:57.000000000 +0800 +++ new/command.c 2006-05-27 02:34:09.000000000 +0800 @@ -314,8 +314,10 @@ MPContext * mpctx) { +#if 0 if (!mpctx->sh_audio) return M_PROPERTY_UNAVAILABLE; +#endif switch (action) { case M_PROPERTY_GET: @@ -370,8 +370,10 @@ MPContext * mpctx) { +#if 0 if (!mpctx->sh_audio) return M_PROPERTY_UNAVAILABLE; +#endif switch (action) { case M_PROPERTY_SET: --- old/mplayer.c 2006-05-27 02:33:57.000000000 +0800 +++ new/mplayer.c 2006-05-27 02:34:09.000000000 +0800 @@ -1535,6 +1535,20 @@ mpctx->mixer.audio_out = mpctx->audio_out; mpctx->mixer.volstep = volstep; } +else if (!strncmp (filename, "dvd", 3) || strcasestr (filename, ".ifo")) { + mpctx->audio_out=NULL; +} +else{ +#if WORDS_BIGENDIAN + if(mpctx->audio_out=init_best_audio_out(audio_driver_list,0,11025,2,AF_FORMAT_S16_BE,0)){ +#else + if(mpctx->audio_out=init_best_audio_out(audio_driver_list,0,11025,2,AF_FORMAT_S16_LE,0)){ +#endif + inited_flags|=INITED_AO; + mpctx->mixer.audio_out = mpctx->audio_out; + mpctx->mixer.volstep = volstep; + } +} } geexbox-1.1/packages/MPlayer/patches/155_additional-filters.diff0000644000175000017500000000623410641745504022701 0ustar benbendiff -r 9fdb997b3020 configure --- a/configure Sun Apr 30 16:54:28 2006 +0200 +++ b/configure Sun Apr 30 16:54:29 2006 +0200 @@ -638,6 +638,7 @@ _inet6=auto _inet6=auto _gethostbyname2=auto _ftp=yes +_additional_filters=yes _musepack=auto _vstream=auto _pthreads=auto @@ -1108,6 +1108,8 @@ for ac_option do --disable-sighandler) _sighandler=no ;; --enable-win32dll) _win32dll=yes ;; --disable-win32dll) _win32dll=no ;; + --enable-additional-filters) _additional_filters=yes ;; + --disable-additional-filters) _additional_filters=no ;; --enable-sse) _sse=yes ;; --disable-sse) _sse=no ;; @@ -6998,6 +6998,11 @@ fi fi echores "$_gethostbyname2" +if test "$_additional_filters" = yes ; then + _def_additional_filters='#define USE_ADDITIONAL_FILTERS 1' +else + _def_additional_filters='#undef USE_ADDITIONAL_FILTERS' +fi # --------------- GUI specific tests begin ------------------- echocheck "GUI" @@ -7646,6 +7646,7 @@ CONFIG_LIBAVFORMAT_SO = $_libavformat_so LIBPOSTPROC = $_libpostproc LIBPOSTPROC_A = $_libpostproc_a LIBPOSTPROC_SO = $_libpostproc_so +ADDITIONAL_FILTERS = $_additional_filters ZORAN = $_zr LIBLZO = $_liblzo LIBDV = $_libdv @@ -8044,6 +8044,9 @@ int setenv(const char *name, const char $_def_win32dll #define WIN32_PATH "$_win32codecsdir" +/* Additionnal filters support */ +$_def_additional_filters + /* Mac OS X specific features */ $_def_macosx $_def_macosx_finder_support diff -r 9fdb997b3020 libmpcodecs/Makefile --- a/libmpcodecs/Makefile Sun Apr 30 16:54:28 2006 +0200 +++ b/libmpcodecs/Makefile Sun Apr 30 16:54:29 2006 +0200 @@ -29,12 +29,18 @@ VIDEO_SRCS=dec_video.c \ vd_raw.c \ vd_sgi.c \ vf.c \ - pullup.c \ + vf_crop.c \ + vf_expand.c \ + vf_format.c \ + vf_scale.c \ + vf_vo.c \ + +ifeq ($(ADDITIONAL_FILTERS),yes) +SRCS_COMMON +=pullup.c \ vf_1bpp.c \ vf_2xsai.c \ vf_blackframe.c \ vf_boxblur.c \ - vf_crop.c \ vf_cropdetect.c \ vf_decimate.c \ vf_delogo.c \ @@ -47,12 +47,10 @@ VFILTER_SRCS=vf.c \ vf_dvbscale.c \ vf_eq2.c \ vf_eq.c \ - vf_expand.c \ vf_field.c \ vf_fil.c \ vf_filmdint.c \ vf_flip.c \ - vf_format.c \ vf_framestep.c \ vf_halfpack.c \ vf_harddup.c \ @@ -76,7 +76,6 @@ VFILTER_SRCS=vf.c \ vf_rgbtest.c \ vf_rotate.c \ vf_sab.c \ - vf_scale.c \ vf_smartblur.c \ vf_softpulldown.c \ vf_softskip.c \ @@ -87,11 +87,12 @@ VFILTER_SRCS=vf.c \ vf_tile.c \ vf_tinterlace.c \ vf_unsharp.c \ - vf_vo.c \ vf_yadif.c \ vf_yuvcsp.c \ vf_yuy2.c \ vf_yvu9.c \ + +endif # These filters use private headers and do not work with shared libavcodec. SRCS_COMMON-$(LIBAVCODEC_A) += vf_fspp.c \ geexbox-1.1/packages/MPlayer/patches/165_conf.diff0000644000175000017500000000074110641745504020046 0ustar benbendiff -r 33007f27d435 playtree.c --- a/playtree.c Sun Apr 30 16:54:30 2006 +0200 +++ b/playtree.c Sun Apr 30 16:54:31 2006 +0200 @@ -710,8 +710,9 @@ play_tree_iter_up_step(play_tree_iter_t* iter->tree = iter->tree->parent; // Pop subtree params - if(iter->config) { + if(iter->config && iter->entry_pushed > 0) { m_config_pop(iter->config); + iter->entry_pushed = 0; if(iter->mode == PLAY_TREE_ITER_RND) iter->tree->flags |= PLAY_TREE_RND_PLAYED; } geexbox-1.1/packages/MPlayer/patches/180_mpegts-alang-subs.diff0000644000175000017500000000136210641745504022447 0ustar benben* fix sound/subs issue while playing MPEG-TS streams (broken aid/sid due to the use of alang param) : tested with DVB, RTSP Freebox and TS file. diff -r 2006b012d73e libmpdemux/demux_ts.c --- a/libmpdemux/demux_ts.c Sun Apr 30 16:54:44 2006 +0200 +++ b/libmpdemux/demux_ts.c Sun Apr 30 16:54:45 2006 +0200 @@ -978,20 +978,8 @@ static demuxer_t *demux_open_ts(demuxer_ params.prog = ts_prog; params.probe = ts_probe; - if(dvdsub_lang != NULL) - { - strncpy(params.slang, dvdsub_lang, 3); - params.slang[3] = 0; - } - else memset(params.slang, 0, 4); - if(audio_lang != NULL) - { - strncpy(params.alang, audio_lang, 3); - params.alang[3] = 0; - } - else memset(params.alang, 0, 4); start_pos = ts_detect_streams(demuxer, ¶ms); geexbox-1.1/packages/MPlayer/patches/185_slave-set-option.diff0000644000175000017500000000306110641745504022332 0ustar benbenDesigned to allow setting of parameters via slave option or menu. diff -r 1abf56096b14 input/input.c --- a/input/input.c Sun Apr 30 16:54:45 2006 +0200 +++ b/input/input.c Sun Apr 30 16:54:45 2006 +0200 @@ -86,6 +86,7 @@ static mp_cmd_t mp_cmds[] = { { MP_CMD_GET_TIME_POS, "get_time_pos", 0, { {-1,{0}} } }, { MP_CMD_GET_TIME_LENGTH, "get_time_length", 0, { {-1,{0}} } }, { MP_CMD_SWITCH_AUDIO, "switch_audio", 0, { { MP_CMD_ARG_INT,{-1} }, {-1,{0}} } }, + { MP_CMD_SET_OPTION, "set_option", 2, { { MP_CMD_ARG_STRING, {0}}, { MP_CMD_ARG_STRING, {0}}, {-1,{0}} } }, #ifdef USE_TV { MP_CMD_TV_STEP_CHANNEL, "tv_step_channel", 1, { { MP_CMD_ARG_INT ,{0}}, {-1,{0}} }}, { MP_CMD_TV_STEP_NORM, "tv_step_norm",0, { {-1,{0}} } }, --- a/input/input.h 2007-06-02 12:54:50.000000000 +0800 +++ b/input/input.h 2007-06-02 12:52:53.000000000 +0800 @@ -93,6 +93,7 @@ #define MP_CMD_STEP_PROPERTY 91 #define MP_CMD_RADIO_STEP_FREQ 92 #define MP_CMD_TV_STEP_FREQ 93 +#define MP_CMD_SET_OPTION 94 #define MP_CMD_GUI_EVENTS 5000 #define MP_CMD_GUI_LOADFILE 5001 --- a/command.c 2007-06-02 12:54:50.000000000 +0800 +++ b/command.c 2007-06-02 12:51:39.000000000 +0800 @@ -1810,6 +1809,11 @@ exit_player_with_rc(MSGTR_Exit_quit, (cmd->nargs > 0) ? cmd->args[0].v.i : 0); + case MP_CMD_SET_OPTION: { + extern struct m_config* mconfig; + m_config_set_option(mconfig, cmd->args[0].v.s, cmd->args[1].v.s); + } break; + case MP_CMD_PLAY_TREE_STEP:{ int n = cmd->args[0].v.i == 0 ? 1 : cmd->args[0].v.i; int force = cmd->args[1].v.i; geexbox-1.1/packages/MPlayer/patches/200_lirc.diff0000644000175000017500000000053310641745504020037 0ustar benbendiff -r d9fa6eb37505 input/input.c --- a/input/input.c Sun Apr 30 16:54:31 2006 +0200 +++ b/input/input.c Sun Apr 30 16:54:31 2006 +0200 @@ -1174,8 +1174,6 @@ mp_input_read_cmds(int time) { continue; mp_msg(MSGT_INPUT,MSGL_ERR,MSGTR_INPUT_INPUT_ErrSelect,strerror(errno)); } - if(!got_cmd) - return NULL; } break; } geexbox-1.1/packages/MPlayer/patches/205_joystick.diff0000644000175000017500000000733310641745504020757 0ustar benbendiff -r e9742d85360a input/joystick.c --- a/input/joystick.c Sun Apr 30 16:54:31 2006 +0200 +++ b/input/joystick.c Sun Apr 30 16:54:32 2006 +0200 @@ -30,6 +30,9 @@ int axis[256]; int btns = 0; + +// Callback to allow the menu filter to grab the incoming joystick event +void (*mp_input_joy_cb)(int code) = NULL; int mp_input_joystick_init(char* dev) { int fd,l=0; @@ -123,7 +126,14 @@ int mp_input_joystick_read(int fd) { btns &= ~(1 << ev.number); btns |= (ev.value << ev.number); if(ev.value == 1) - return ((JOY_BTN0+ev.number) | MP_KEY_DOWN); + { + if (mp_input_joy_cb) + { + mp_input_joy_cb (JOY_BTN0+ev.number); + return MP_INPUT_NOTHING; + } + return ((JOY_BTN0+ev.number) | MP_KEY_DOWN); + } else return (JOY_BTN0+ev.number); } else if(ev.type & JS_EVENT_AXIS) { @@ -136,6 +140,11 @@ int mp_input_joystick_read(int fd) { } else if(ev.value <= JOY_AXIS_DELTA && ev.value >= -JOY_AXIS_DELTA && axis[ev.number] != 0) { int r = axis[ev.number] == 1 ? JOY_AXIS0_PLUS+(2*ev.number) : JOY_AXIS0_MINUS+(2*ev.number); axis[ev.number] = 0; + if (mp_input_joy_cb) + { + mp_input_joy_cb (r); + return MP_INPUT_NOTHING; + } return r; } else return MP_INPUT_NOTHING; diff -r e9742d85360a input/joystick.h --- a/input/joystick.h Sun Apr 30 16:54:31 2006 +0200 +++ b/input/joystick.h Sun Apr 30 16:54:32 2006 +0200 @@ -37,3 +37,5 @@ int mp_input_joystick_init(char* dev); int mp_input_joystick_read(int fd); +// Set this to grab all incoming key codes +extern void (*mp_input_joy_cb)(int code); diff -r e9742d85360a libmenu/menu.c --- a/libmenu/menu.c Sun Apr 30 16:54:31 2006 +0200 +++ b/libmenu/menu.c Sun Apr 30 16:54:32 2006 +0200 @@ -21,6 +21,9 @@ #include "m_option.h" #include "m_struct.h" #include "menu.h" + +#include "input/input.h" +#include "input/joystick.h" extern menu_info_t menu_info_cmdlist; extern menu_info_t menu_info_pt; @@ -184,21 +184,27 @@ void menu_dflt_read_key(menu_t* menu,int void menu_dflt_read_key(menu_t* menu,int cmd) { switch(cmd) { case KEY_UP: + case JOY_AXIS1_MINUS: menu->read_cmd(menu,MENU_CMD_UP); break; case KEY_DOWN: + case JOY_AXIS1_PLUS: menu->read_cmd(menu,MENU_CMD_DOWN); break; case KEY_LEFT: + case JOY_AXIS0_MINUS: menu->read_cmd(menu,MENU_CMD_LEFT); break; case KEY_ESC: + case JOY_BTN1: menu->read_cmd(menu,MENU_CMD_CANCEL); break; case KEY_RIGHT: + case JOY_AXIS0_PLUS: menu->read_cmd(menu,MENU_CMD_RIGHT); break; case KEY_ENTER: + case JOY_BTN0: menu->read_cmd(menu,MENU_CMD_OK); break; } diff -r e9742d85360a libmenu/vf_menu.c --- a/libmenu/vf_menu.c Sun Apr 30 16:54:31 2006 +0200 +++ b/libmenu/vf_menu.c Sun Apr 30 16:54:32 2006 +0200 @@ -21,6 +21,7 @@ #include "libvo/video_out.h" #include "libvo/font_load.h" #include "input/input.h" +#include "input/joystick.h" #include "m_struct.h" #include "menu.h" #include "access_mpcontext.h" @@ -220,6 +221,14 @@ static int put_image(struct vf_instance_ if(mp_input_key_cb && !vf->priv->current->show) mp_input_key_cb = NULL; +#ifdef HAVE_JOYSTICK + // Grab // Ungrab the joy inputs + if(!mp_input_joy_cb && vf->priv->current->show) + mp_input_joy_cb = key_cb; + if(mp_input_joy_cb && !vf->priv->current->show) + mp_input_joy_cb = NULL; +#endif + if(mpi->flags&MP_IMGFLAG_DIRECT) dmpi = mpi->priv; else { @@ -233,6 +242,10 @@ static int put_image(struct vf_instance_ } else { if(mp_input_key_cb) mp_input_key_cb = NULL; +#ifdef HAVE_JOYSTICK + if(mp_input_joy_cb) + mp_input_joy_cb = NULL; +#endif if(mpi->flags&MP_IMGFLAG_DIRECT) dmpi = mpi->priv; geexbox-1.1/packages/MPlayer/patches/250_bgvideo.diff0000644000175000017500000001212010641745504020525 0ustar benbendiff -r 3f43ce128995 cfg-mplayer.h --- a/cfg-mplayer.h Sun Apr 30 16:54:32 2006 +0200 +++ b/cfg-mplayer.h Sun Apr 30 17:12:13 2006 +0200 @@ -354,6 +354,8 @@ m_option_t mplayer_opts[]={ {"guiwid", &guiWinID, CONF_TYPE_INT, 0, 0, 0, NULL}, #endif + {"bgvideo", &bg_video, CONF_TYPE_STRING, 0, 0, 0, NULL}, + {"noloop", &loop_times, CONF_TYPE_FLAG, 0, 0, -1, NULL}, {"loop", &loop_times, CONF_TYPE_INT, CONF_RANGE, -1, 10000, NULL}, {"playlist", NULL, CONF_TYPE_STRING, 0, 0, 0, NULL}, diff -r 3f43ce128995 mp_core.h --- a/mp_core.h 2007-05-01 02:23:10.000000000 +0200 +++ b/mp_core.h 2007-05-01 02:23:12.000000000 +0200 @@ -54,6 +54,7 @@ stream_t *stream; demuxer_t *demuxer; + demuxer_t *bg_demuxer; sh_audio_t *sh_audio; sh_video_t *sh_video; demux_stream_t *d_audio; diff -r 3f43ce128995 mplayer.c --- a/mplayer.c Sun Apr 30 16:54:32 2006 +0200 +++ b/mplayer.c Sun Apr 30 17:12:13 2006 +0200 @@ -278,6 +278,8 @@ static char* spudec_ifo=NULL; char* filename=NULL; //"MI2-Trailer.avi"; int forced_subs_only=0; int file_filter=1; + +static char* bg_video = NULL; // cache2: int stream_cache_size=-1; @@ -416,7 +416,8 @@ case META_VIDEO_BITRATE: case META_VIDEO_RESOLUTION: { - if (!mpctx->sh_video) + if (!mpctx->sh_video || (mpctx->bg_demuxer && mpctx->bg_demuxer->video && mpctx->bg_demuxer->video->sh + && mpctx->sh_video == mpctx->bg_demuxer->video->sh)) return 0; break; } @@ -604,6 +604,13 @@ static void uninit_player(unsigned int m free_demuxer(mpctx->demuxer); } mpctx->demuxer=NULL; + current_module="free_bg_demuxer"; + if(mpctx->bg_demuxer) { + stream_t* bg_s = mpctx->bg_demuxer->stream; + free_demuxer(mpctx->bg_demuxer); + mpctx->bg_demuxer = NULL; + free_stream(bg_s); + } } // kill the cache process: @@ -1424,6 +1424,8 @@ static void update_osd_msg(void) { int percentage = -1; char percentage_text[10]; int pts = demuxer_get_current_time(mpctx->demuxer); + if (mpctx->bg_demuxer) + pts = playing_audio_pts(mpctx->sh_audio, mpctx->d_audio, mpctx->audio_out); if (mpctx->osd_show_percentage) percentage = demuxer_get_percent_pos(mpctx->demuxer); @@ -1624,10 +1624,17 @@ if(!sh_video) { current_module = "video_read_frame"; in_size = ds_get_packet_pts(d_video, &start, &pts); if (in_size < 0) { + if(mpctx->bg_demuxer) { + if(!demux_seek(mpctx->bg_demuxer,0,0,1)) + hit_eof = 1; + else + continue; + } else { // try to extract last frames in case of decoder lag in_size = 0; pts = 1e300; hit_eof = 1; + } } if (in_size > max_framesize) max_framesize = in_size; @@ -1699,6 +1699,13 @@ if(time_frame>0.001 && !(vo_flags&256)){ current_module="av_sync"; if(mpctx->sh_audio){ + if(mpctx->bg_demuxer) { + if(!quiet) mp_msg(MSGT_AVSYNC,MSGL_STATUS,"A:%6.1f %4.1f%% %d%% \r" + ,mpctx->delay - mpctx->audio_out->get_delay() + ,(mpctx->delay>0.5)?100.0*audio_time_usage/(double)mpctx->delay:0 + ,cache_fill_status + ); + } else { double a_pts, v_pts; if (autosync) @@ -1750,6 +1750,7 @@ if(time_frame>0.001 && !(vo_flags&256)){ print_status(a_pts - audio_delay, AV_delay, c_total); } + } } else { // No audio: @@ -3077,6 +3077,34 @@ sh_audio=d_audio->sh; mpctx->sh_audio=mpctx->d_audio->sh; mpctx->sh_video=mpctx->d_video->sh; +while(mpctx->sh_audio && !mpctx->sh_video && bg_video) { + int bg_file_format = 0; + stream_t* bg_s; + mp_msg(MSGT_CPLAYER,MSGL_INFO, "Open bgvideo: %s\n",bg_video); + bg_s = open_stream(bg_video,NULL,&bg_file_format); + if(!bg_s) { + mp_msg(MSGT_CPLAYER,MSGL_ERR, "Couldn't open the stream for back ground video: %s\n",bg_video); + break; + } + mpctx->bg_demuxer = demux_open(bg_s,bg_file_format,-2,video_id,dvdsub_id,bg_video); + if(!mpctx->bg_demuxer) { + mp_msg(MSGT_DEMUXER,MSGL_ERR,"Failed to open background video\n"); + free_stream(bg_s); + break; + } + if(!mpctx->bg_demuxer->video && !mpctx->bg_demuxer->video->sh) { + mp_msg(MSGT_DEMUXER,MSGL_ERR,"The background video don't have a video stream\n"); + free_demuxer(mpctx->bg_demuxer); + mpctx->bg_demuxer = NULL; + free_stream(bg_s); + break; + } + mpctx->d_video = mpctx->bg_demuxer->video; + mpctx->sh_video = mpctx->d_video->sh; + mp_msg(MSGT_DEMUXER,MSGL_INFO,"Background video should work ;)\n"); + break; +} + if(mpctx->sh_video){ current_module="video_read_properties"; @@ -3372,6 +3372,7 @@ while(sh_audio){ if (!mpctx->sh_video) mpctx->eof = PT_NEXT_ENTRY; +if(mpctx->bg_demuxer && mpctx->d_audio->eof) mpctx->eof=1; if(!mpctx->sh_video) { // handle audio-only case: @@ -3905,6 +3905,11 @@ mpctx->eof = 1; goto goto_next_file; } if (frame_time < 0) + if(mpctx->bg_demuxer) { + if(!demux_seek(mpctx->bg_demuxer,0,0,1)) + mpctx->eof = PT_NEXT_ENTRY; + } + else mpctx->eof = 1; else { // might return with !eof && !blit_frame if !correct_pts geexbox-1.1/packages/MPlayer/patches/300_dvd-longest.diff0000644000175000017500000001663410641745504021346 0ustar benbendiff -r d93e7bab77c4 help/help_mp-en.h --- a/help/help_mp-en.h Sun Apr 30 16:54:33 2006 +0200 +++ b/help/help_mp-en.h Sun Apr 30 16:54:34 2006 +0200 @@ -562,6 +562,11 @@ static char help_text[]= #define MSGTR_DVDsubtitleChannel "Selected DVD subtitle channel: %d language: %c%c\n" #define MSGTR_DVDsubtitleLanguage "subtitle ( sid ): %d language: %s\n" #define MSGTR_DVDnumSubtitles "number of subtitles on disk: %d\n" +#define MSGTR_DVDlookLongest "Looking for longest track ...\n" +#define MSGTR_DVDinfo001 "Title: %02d, Length: %02x:%02x:%02x (%5d seconds) " +#define MSGTR_DVDinfo002 "Chapters: %02d, Cells: %02d, " +#define MSGTR_DVDinfo003 "Audio streams: %02d, Subpictures: %02d\n" +#define MSGTR_DVDtrackSelected "Selected track %d (%d seconds) ...\n" // muxer.c, muxer_*.c: #define MSGTR_TooManyStreams "Too many streams!" diff -r d93e7bab77c4 stream/stream_dvd.c --- a/stream/stream_dvd.c Sun Apr 30 16:54:33 2006 +0200 +++ b/stream/stream_dvd.c Sun Apr 30 16:54:34 2006 +0200 @@ -160,6 +160,106 @@ static struct m_struct_st stream_opts = &stream_priv_dflts, stream_opts_fields }; + +int dvd_title_info(dvd_reader_t *dvd, ifo_handle_t *ifo_zero, int mask) +{ + int nr; + int i; + ifo_handle_t **t_ifo; + int rt = 0; + int mt; + + // Print some info ... + if (mask & 0x0001) { + mp_msg(MSGT_OPEN, MSGL_INFO, MSGTR_DVDlookLongest); + // printf("Looking for longest track ...\n"); + } + + //* Alloc space for all info in the dvd + nr = ifo_zero->vts_atrt->nr_of_vtss; + t_ifo = malloc((nr + 1) * sizeof(ifo_handle_t *)); + + // * Read all info + for(i = 1; i <= nr; i++) { + t_ifo[i] = ifoOpen(dvd, i); + } + + // Navigate all titles + nr = ifo_zero->tt_srpt->nr_of_srpts; + for(i = 0; i < nr; i++) { + // Load information for the title + if (t_ifo[ifo_zero->tt_srpt->title[i].title_set_nr]->vtsi_mat) { + vtsi_mat_t *vtsi_mat; + pgcit_t *vts_pgcit; + int vts_ttn; + int title_set_nr; + pgc_t *pgc; + dvd_time_t *dvd_time; + int ct; + + vtsi_mat = t_ifo[ifo_zero->tt_srpt->title[i].title_set_nr]->vtsi_mat; + vts_pgcit = t_ifo[ifo_zero->tt_srpt->title[i].title_set_nr]->vts_pgcit; + vts_ttn = ifo_zero->tt_srpt->title[i].vts_ttn; + title_set_nr = ifo_zero->tt_srpt->title[i].title_set_nr; + pgc = vts_pgcit->pgci_srp[t_ifo[title_set_nr]->vts_ptt_srpt->title[vts_ttn - 1].ptt[0].pgcn - 1].pgc; + dvd_time = &pgc->playback_time; + + ct = dvd_time->hour * 3600 + dvd_time->minute * 60 + dvd_time->second; + + if (mask & 0x0002) { + // Print required info + mp_msg(MSGT_OPEN, MSGL_INFO, MSGTR_DVDinfo001, + i+1, + dvd_time->hour, + dvd_time->minute, + dvd_time->second, + ct); + mp_msg(MSGT_OPEN, MSGL_INFO, MSGTR_DVDinfo002, + ifo_zero->tt_srpt->title[i].nr_of_ptts, + pgc->nr_of_cells); + mp_msg(MSGT_OPEN, MSGL_INFO, MSGTR_DVDinfo003, + vtsi_mat->nr_of_vts_audio_streams, + vtsi_mat->nr_of_vts_subp_streams); + } + + if (mask & 0x0001) { + // Look for the longest track + if (i == 0) { + // First pass + rt = 1; + mt = ct; + } + else { + // Check + if (ct > mt) { + rt = i + 1; + mt = ct; + } + } + } + } + } + + if (mask & 0x0001) { + // Show what happened + // printf("Selected track %d (%d seconds) ...\n", + mp_msg(MSGT_OPEN, MSGL_INFO, MSGTR_DVDtrackSelected, + rt, + mt); + } + + // Close all ifo + nr = ifo_zero->vts_atrt->nr_of_vtss; + for(i = 1; i <= nr; i++) { + ifoClose(t_ifo[i]); + } + + // Free temp memory + free(t_ifo); + + // Return track or 0 to stop + return( rt ); +} int dvd_parse_chapter_range(m_option_t *conf, const char *range) { const char *s; @@ -873,6 +873,17 @@ static int open_s(stream_t *stream,int m mp_msg(MSGT_IDENTIFY, MSGL_V, "\n"); } } + + if (dvd_title < 0) { + dvd_title = dvd_title_info(dvd, vmg_file, -dvd_title); + if (dvd_title <= 0) { + // Close & exit, no msg. + ifoClose( vmg_file ); + DVDClose( dvd ); + return NULL; + } + } + /** * Make sure our title number is valid. */ diff -r d93e7bab77c4 parser-mpcmd.c --- a/parser-mpcmd.c Sun Apr 30 16:54:33 2006 +0200 +++ b/parser-mpcmd.c Sun Apr 30 16:54:34 2006 +0200 @@ -59,6 +59,43 @@ static inline void add_entry(play_tree_t else play_tree_append_entry(*last_entryp,entry); *last_entryp = entry; +} + +static char *get_opt_str(char **arg, char *dst, unsigned dst_size) +{ + char *t; + + t = *arg; + if (*t == '\0') { + return( NULL); + } + else { + char *e; + unsigned l; + + e = strchr(t, ':'); + if (e != NULL) { + l = e - t; + } + else { + l = strlen(t); + } + if (l < dst_size) { + strncpy(dst, t, l); + dst[l] = '\0'; + t += l; + if (*t == ':') { + ++t; + } + } + else { + // Out of size -> error + strcpy(dst, "*"); + t += strlen(t); + } + *arg = t; + } + return( dst ); } /// Setup the \ref Config from command line arguments and build a playtree. @@ -245,8 +245,37 @@ m_config_parse_mp_command_line(m_config_ mp_msg(MSGT_CFGPARSER, MSGL_ERR, MSGTR_InvalidPlayEntry, argv[i]); } - } else { // dvd:// or dvd://x entry - play_tree_add_file(entry,argv[i]); + } else { // dvd:// or dvd://x or dvd://longest:list entry + char *pc; + + pc = argv[i]+6; + if (*pc >= 'a' && *pc <= 'z') { + // may be option (passed as -nn to open_stream(...) + + char t_opt[80 + 1]; + char *opt_str; + int op = 0; + + while ((opt_str = get_opt_str(&pc, t_opt, sizeof(t_opt))) != NULL) { + if (strcmp(opt_str, "longest") == 0) { + op |= 0x0001; + } + else if (strcmp(opt_str, "list") == 0) { + op |= 0x0002; + } + else { + // Error -> bail out + mp_msg(MSGT_CFGPARSER, MSGL_ERR, "dvd:// unknow option: [%s]\n", opt_str); + + goto err_out; + } + } + snprintf(entbuf, 9, "dvd://%d", -op); + play_tree_add_file(entry, entbuf); + } + else { + play_tree_add_file(entry,argv[i]); + } } } else { play_tree_add_file(entry,argv[i]); geexbox-1.1/packages/MPlayer/patches/305_vcd-dvd-cdda-play.diff0000644000175000017500000001507110641745504022302 0ustar benbendiff -r eea2414bb57d input/input.c --- a/input/input.c Sun Apr 30 16:54:34 2006 +0200 +++ b/input/input.c Sun Apr 30 16:54:34 2006 +0200 @@ -123,6 +123,15 @@ static mp_cmd_t mp_cmds[] = { { MP_CMD_SUB_FORCED_ONLY, "forced_subs_only", 0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } }, #ifdef HAS_DVBIN_SUPPORT { MP_CMD_DVB_SET_CHANNEL, "dvb_set_channel", 2, { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}}}}, +#endif +#ifdef HAVE_VCD + { MP_CMD_VCD_PLAY, "play_vcd", 0, { {MP_CMD_ARG_STRING, {0}}, {-1,{0}} } }, +#endif +#ifdef USE_DVDREAD + { MP_CMD_DVD_PLAY, "play_dvd", 0, { {MP_CMD_ARG_STRING, {0}}, {-1,{0}} } }, +#endif +#ifdef HAVE_CDDA + { MP_CMD_CDDA_PLAY, "play_cdda", 0, { {MP_CMD_ARG_STRING, {0}}, {-1,{0}} } }, #endif { MP_CMD_SWITCH_RATIO, "switch_ratio", 0, { {MP_CMD_ARG_FLOAT,{0}}, {-1,{0}} } }, { MP_CMD_VO_FULLSCREEN, "vo_fullscreen", 0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } }, diff -r eea2414bb57d input/input.h --- a/input/input.h Sun Apr 30 16:54:34 2006 +0200 +++ b/input/input.h Sun Apr 30 16:54:34 2006 +0200 @@ -96,6 +96,10 @@ #define MP_CMD_SET_OPTION 94 +#define MP_CMD_VCD_PLAY 95 +#define MP_CMD_DVD_PLAY 96 +#define MP_CMD_CDDA_PLAY 97 + #define MP_CMD_GUI_EVENTS 5000 #define MP_CMD_GUI_LOADFILE 5001 #define MP_CMD_GUI_LOADSUBTITLE 5002 diff -r eea2414bb57d libmpdemux/cdda.c --- a/stream/stream_cdda.c Sun Apr 30 16:54:34 2006 +0200 +++ b/stream/stream_cdda.c Sun Apr 30 16:54:34 2006 +0200 @@ -283,6 +283,34 @@ static void cdparanoia_callback(long int #endif } +int get_cdda_tracks_num(char* dev) { + cdrom_drive* cdd = NULL; + int nb_tracks; + +#if defined(__NetBSD__) + cdd = cdda_identify_scsi(dev,dev,0,NULL); +#else + cdd = cdda_identify(dev,0,NULL); +#endif + + if(!cdd) { + mp_msg(MSGT_OPEN,MSGL_ERR,"Can't open cdda device\n"); + return -1; + } + + if(cdda_open(cdd)) { + mp_msg(MSGT_OPEN,MSGL_ERR,"Can't open disc\n"); + cdda_close(cdd); + return -1; + } + + cdda_verbose_set(cdd, CDDA_MESSAGE_FORGETIT, CDDA_MESSAGE_FORGETIT); + + nb_tracks = cdda_tracks(cdd); + cdda_close(cdd); + return nb_tracks; +} + static int fill_buffer(stream_t* s, char* buffer, int max_len) { cdda_priv* p = (cdda_priv*)s->priv; cd_track_t *cd_track; diff -Naur MPlayer-r23418.orig/command.c MPlayer-r23418/command.c --- MPlayer-r23418.orig/command.c 2007-05-30 19:10:09.000000000 +0200 +++ MPlayer-r23418/command.c 2007-05-30 19:22:38.000000000 +0200 @@ -2,6 +2,7 @@ #include #include #include +#include #include "config.h" #include "input/input.h" @@ -1809,6 +1810,117 @@ exit_player_with_rc(MSGTR_Exit_quit, (cmd->nargs > 0) ? cmd->args[0].v.i : 0); +#ifdef HAVE_VCD + case MP_CMD_VCD_PLAY : { + char buf[10]; + play_tree_t *vcd, *tracks; + stream_t *s; + int i, m; + + if ((s = open_stream ("vcd://", NULL, &i)) == NULL) + break; + for (m=2; m<100; m++) + if (vcd_seek_to_track (s->priv, m) < 0) + break; + free_stream (s); + + tracks = play_tree_new(); + sprintf(buf, "vcd://%d", i = m > 2 ? 2 : 1); + play_tree_add_file(tracks, buf); + for (i++; iplaytree_iter, 0, 1) != PLAY_TREE_ITER_END); + play_tree_free_list(mpctx->playtree->child, 1); + play_tree_set_child(mpctx->playtree, tracks); + play_tree_iter_step(mpctx->playtree_iter, 0, 0); + mpctx->eof = PT_NEXT_SRC; + } break; +#endif +#ifdef USE_DVDREAD + case MP_CMD_DVD_PLAY : { + struct stat st; + + if (stat ("/var/dvdnav", &st) == 0) + { + mp_cmd_t* c = mp_input_parse_cmd ("loadfile dvdnav://"); + if (c) { +#ifdef HAVE_MENU + mp_input_queue_cmd (mp_input_parse_cmd ("menu hide")); +#endif + mp_input_queue_cmd (c); + } + break; + } + else + { + char buf[10]; + play_tree_t *dvd, *tracks; + stream_t *s; + int nb_tracks, i; + + if ((s = open_stream("dvd://", NULL, &i)) == NULL) + break; + + tracks = play_tree_new(); + play_tree_add_file(tracks, "dvd://1"); + + nb_tracks = ((dvd_priv_t *) s->priv)->vmg_file->tt_srpt->nr_of_srpts; + for (i=2; i<=nb_tracks; i++) + { + dvd = play_tree_new(); + sprintf(buf, "dvd://%d", i); + play_tree_add_file(dvd, buf); + play_tree_append_entry(tracks, dvd); + } + i = dvd_title_info(((dvd_priv_t *) s->priv)->dvd, + ((dvd_priv_t *) s->priv)->vmg_file, 0x0001); + free_stream (s); + + while(play_tree_iter_up_step(mpctx->playtree_iter, 0, 1) != PLAY_TREE_ITER_END); + play_tree_free_list(mpctx->playtree->child, 1); + play_tree_set_child(mpctx->playtree, tracks); + play_tree_iter_down_step(mpctx->playtree_iter, 0, 0); + play_tree_iter_step(mpctx->playtree_iter, i-1, 0); + mpctx->eof = PT_NEXT_SRC; + } + } break; +#endif +#ifdef HAVE_CDDA + case MP_CMD_CDDA_PLAY : { + int get_cdda_tracks_num(char* dev); + char buf[11]; + play_tree_t *cdda, *tracks; + int nb_tracks, i; + + nb_tracks = get_cdda_tracks_num (cdrom_device ? cdrom_device : DEFAULT_CDROM_DEVICE); + if (nb_tracks <= 0) + break; + + tracks = play_tree_new(); + play_tree_add_file(tracks, "cdda://1"); + + for (i=2; i<=nb_tracks; i++) + { + cdda = play_tree_new(); + sprintf(buf, "cdda://%d", i); + play_tree_add_file(cdda, buf); + play_tree_append_entry(tracks, cdda); + } + + while(play_tree_iter_up_step(mpctx->playtree_iter, 0, 1) != PLAY_TREE_ITER_END); + play_tree_free_list(mpctx->playtree->child, 1); + play_tree_set_child(mpctx->playtree, tracks); + play_tree_iter_step(mpctx->playtree_iter, 0, 0); + mpctx->eof = PT_NEXT_SRC; + } break; +#endif + case MP_CMD_PLAY_TREE_STEP:{ int n = cmd->args[0].v.i; int force = cmd->args[1].v.i; geexbox-1.1/packages/MPlayer/patches/310_dvdvcd-trayunlock.diff0000644000175000017500000000173510641745504022560 0ustar benbendiff -r 7d7fcdab76a3 libmpdemux/stream_vcd.c --- a/stream/stream_vcd.c Sun Apr 30 16:54:34 2006 +0200 +++ b/stream/stream_vcd.c Sun Apr 30 16:54:34 2006 +0200 @@ -119,6 +119,9 @@ static int open_s(stream_t *stream,int m m_struct_free(&stream_opts,opts); return STREAM_ERROR; } +#ifdef __linux__ + ioctl(f, CDROM_LOCKDOOR, 0); +#endif vcd = vcd_read_toc(f); if(!vcd) { diff -r 7d7fcdab76a3 libmpdvdkit2/device.c --- a/libdvdcss/device.c Sun Apr 30 16:54:34 2006 +0200 +++ b/libdvdcss/device.c Sun Apr 30 16:54:34 2006 +0200 @@ -65,6 +65,11 @@ # include #endif +#ifdef __linux__ +#include +#include +#endif + #include "dvdcss/dvdcss.h" #include "common.h" @@ -415,6 +415,9 @@ static int libc_open ( dvdcss_t dvdcss, print_error( dvdcss, "failed to open device" ); return -1; } +#ifdef __linux__ + ioctl(dvdcss->i_fd, CDROM_LOCKDOOR, 0); +#endif dvdcss->i_pos = 0; geexbox-1.1/packages/MPlayer/patches/315_dvd-play-ifo.diff0000644000175000017500000000130710641745504021410 0ustar benbendiff -r 8eab14a155a8 stream/stream.c --- a/stream/stream.c Sun Apr 30 16:54:35 2006 +0200 +++ b/stream/stream.c Sun Apr 30 16:54:35 2006 +0200 @@ -204,6 +204,21 @@ stream_t* open_stream_full(char* filenam int i,j,l,r; stream_info_t* sinfo; stream_t* s; + char *ext = NULL; + + ext = strrchr (filename, '.'); + if (ext && !strcasecmp (ext + 1, "ifo")) + { + extern char *dvd_device; + struct stat st; + dvd_device = dirname (strdup (filename)); + dvd_title = -1; /* play longest track */ + + if (stat ("/var/dvdnav", &st) == 0) + filename = "dvdnav://"; + else + filename = "dvd://"; + } for(i = 0 ; auto_open_streams[i] ; i++) { sinfo = auto_open_streams[i]; geexbox-1.1/packages/MPlayer/patches/320_vcd-cdda-separated-devices.diff0000644000175000017500000000564610641745504024156 0ustar benbendiff -Naur MPlayer-r23418.orig/cfg-common.h MPlayer-r23418/cfg-common.h --- MPlayer-r23418.orig/cfg-common.h 2007-05-30 19:30:33.000000000 +0200 +++ MPlayer-r23418/cfg-common.h 2007-05-30 19:31:23.000000000 +0200 @@ -26,7 +26,8 @@ #endif {"vcd", "-vcd N has been removed, use vcd://N instead.\n", CONF_TYPE_PRINT, CONF_NOCFG ,0,0, NULL}, {"cuefile", "-cuefile has been removed, use cue://filename:N where N is the track number.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL}, - {"cdrom-device", &cdrom_device, CONF_TYPE_STRING, 0, 0, 0, NULL}, + {"vcd-device", &vcd_device, CONF_TYPE_STRING, 0, 0, 0, NULL}, + {"cdda-device", &cdda_device, CONF_TYPE_STRING, 0, 0, 0, NULL}, #ifdef USE_DVDREAD {"dvd-device", &dvd_device, CONF_TYPE_STRING, 0, 0, 0, NULL}, {"dvd-speed", &dvd_speed, CONF_TYPE_INT, 0, 0, 0, NULL}, @@ -538,7 +539,7 @@ extern int vivo_param_width; extern int vivo_param_height; extern int vivo_param_vformat; -extern char *dvd_device, *cdrom_device; +extern char *dvd_device, *vcd_device, *cdda_device; m_option_t vivoopts_conf[]={ {"version", &vivo_param_version, CONF_TYPE_INT, 0, 0, 0, NULL}, diff -Naur MPlayer-r23418.orig/command.c MPlayer-r23418/command.c --- MPlayer-r23418.orig/command.c 2007-05-30 19:30:33.000000000 +0200 +++ MPlayer-r23418/command.c 2007-05-30 19:33:22.000000000 +0200 @@ -1897,8 +1897,9 @@ char buf[11]; play_tree_t *cdda, *tracks; int nb_tracks, i; - - nb_tracks = get_cdda_tracks_num (cdrom_device ? cdrom_device : DEFAULT_CDROM_DEVICE); + + extern char *cdda_device; + nb_tracks = get_cdda_tracks_num (cdda_device ? cdda_device : DEFAULT_CDROM_DEVICE); if (nb_tracks <= 0) break; diff -Naur MPlayer-r23418.orig/stream/stream_cdda.c MPlayer-r23418/stream/stream_cdda.c --- MPlayer-r23418.orig/stream/stream_cdda.c 2007-05-30 19:30:33.000000000 +0200 +++ MPlayer-r23418/stream/stream_cdda.c 2007-05-30 19:32:07.000000000 +0200 @@ -20,7 +20,7 @@ #endif -extern char *cdrom_device; +char *cdda_device; static struct cdda_params { int speed; @@ -118,8 +118,8 @@ } if(!p->device) { - if (cdrom_device) - p->device = strdup(cdrom_device); + if (cdda_device) + p->device = strdup(cdda_device); else p->device = strdup(DEFAULT_CDROM_DEVICE); } diff -Naur MPlayer-r23418.orig/stream/stream_vcd.c MPlayer-r23418/stream/stream_vcd.c --- MPlayer-r23418.orig/stream/stream_vcd.c 2007-05-30 19:30:33.000000000 +0200 +++ MPlayer-r23418/stream/stream_vcd.c 2007-05-30 19:32:32.000000000 +0200 @@ -34,7 +34,7 @@ #include "libmpdemux/demuxer.h" -extern char *cdrom_device; +char *vcd_device; static struct stream_priv_s { int track; @@ -99,8 +99,8 @@ } if (!p->device) { - if(cdrom_device) - p->device = strdup(cdrom_device); + if(vcd_device) + p->device = strdup(vcd_device); else p->device = strdup(DEFAULT_CDROM_DEVICE); } geexbox-1.1/packages/MPlayer/patches/515_menu-chapsel.diff0000644000175000017500000002314710641745504021506 0ustar benbendiff -Naur MPlayer-r23358.orig/access_mpcontext.h MPlayer-r23358/access_mpcontext.h --- MPlayer-r23358.orig/access_mpcontext.h 2007-05-25 17:57:54.000000000 +0200 +++ MPlayer-r23358/access_mpcontext.h 2007-05-25 18:05:47.000000000 +0200 @@ -1,4 +1,6 @@ struct MPContext; +void *mpctx_get_demuxer(struct MPContext *mpctx); +void *mpctx_get_stream(struct MPContext *mpctx); void *mpctx_get_video_out(struct MPContext *mpctx); void *mpctx_get_audio_out(struct MPContext *mpctx); void *mpctx_get_playtree_iter(struct MPContext *mpctx); diff -Naur MPlayer-r23358.orig/libmenu/Makefile MPlayer-r23358/libmenu/Makefile --- MPlayer-r23358.orig/libmenu/Makefile 2007-05-25 17:57:54.000000000 +0200 +++ MPlayer-r23358/libmenu/Makefile 2007-05-25 17:58:31.000000000 +0200 @@ -8,6 +8,7 @@ menu_pt.c \ menu_list.c \ menu_filesel.c \ + menu_chapsel.c \ menu_txt.c \ menu_console.c \ menu_param.c \ diff -Naur MPlayer-r23358.orig/libmenu/menu.c MPlayer-r23358/libmenu/menu.c --- MPlayer-r23358.orig/libmenu/menu.c 2007-05-25 17:57:54.000000000 +0200 +++ MPlayer-r23358/libmenu/menu.c 2007-05-25 17:59:03.000000000 +0200 @@ -29,6 +29,7 @@ extern menu_info_t menu_info_cmdlist; extern menu_info_t menu_info_pt; extern menu_info_t menu_info_filesel; +extern menu_info_t menu_info_chapsel; extern menu_info_t menu_info_txt; extern menu_info_t menu_info_console; extern menu_info_t menu_info_pref; @@ -41,6 +42,7 @@ &menu_info_pt, &menu_info_cmdlist, &menu_info_filesel, + &menu_info_chapsel, &menu_info_txt, &menu_info_console, #ifdef HAS_DVBIN_SUPPORT diff -Naur MPlayer-r23358.orig/libmenu/menu_chapsel.c MPlayer-r23358/libmenu/menu_chapsel.c --- MPlayer-r23358.orig/libmenu/menu_chapsel.c 1970-01-01 01:00:00.000000000 +0100 +++ MPlayer-r23358/libmenu/menu_chapsel.c 2007-05-25 18:09:05.000000000 +0200 @@ -0,0 +1,164 @@ +#include +#include +#include + +#include "config.h" + +#include "m_struct.h" +#include "m_option.h" +#include "input/input.h" + +#include "stream/stream.h" +#include "libmpdemux/demuxer.h" +#include "libvo/video_out.h" +#include "libvo/sub.h" +#include "spudec.h" +#include "mplayer.h" +#include "access_mpcontext.h" + +#include "libmpcodecs/img_format.h" +#include "libmpcodecs/mp_image.h" + +#include "menu.h" +#include "menu_list.h" + +struct list_entry_s { + struct list_entry p; + int cid; +}; + +struct menu_priv_s { + menu_list_priv_t p; + char* title; + int auto_close; +}; + +static struct menu_priv_s cfg_dflt = { + MENU_LIST_PRIV_DFLT, + "Select chapter", + 0 +}; + +#define ST_OFF(m) M_ST_OFF(struct menu_priv_s,m) + +static m_option_t cfg_fields[] = { + MENU_LIST_PRIV_FIELDS, + { "title", ST_OFF (title), CONF_TYPE_STRING, 0, 0, 0, NULL }, + { "auto-close", ST_OFF (auto_close), CONF_TYPE_FLAG, 0, 0, 1, NULL }, + { NULL, NULL, NULL, 0, 0, 0, NULL } +}; + +static int +fill_menu (menu_t* menu) +{ + list_entry_t* e; + int cid; + demuxer_t* demuxer = mpctx_get_demuxer(menu->ctx); + stream_t* stream = mpctx_get_stream(menu->ctx); + + if ((demuxer && stream->type == STREAMTYPE_DVD) + || (demuxer && demuxer->type == DEMUXER_TYPE_MATROSKA + && mkv_chapter_num > 0)) + { + menu_list_init (menu); + + if (stream->type == STREAMTYPE_DVD) + { + for (cid = 1; cid < dvd_total_chapter + 1; cid++) + { + char *chap = malloc (3); + if ((e = calloc (1, sizeof (list_entry_t))) != NULL) + { + sprintf (chap, "%d", cid); + e->p.next = NULL; + e->p.txt = strdup (chap); + e->cid = cid; + menu_list_add_entry (menu, e); + } + free (chap); + } + } + else if (demuxer->type == DEMUXER_TYPE_MATROSKA) + { + for (cid = 1; cid < mkv_chapter_num + 1; cid++) + { + if ((e = calloc (1, sizeof (list_entry_t))) != NULL) + { + e->p.next = NULL; + if (mkv_chapter_string[cid]) + e->p.txt = strdup (mkv_chapter_string[cid]); + else + { + e->p.txt = malloc (4); + sprintf (e->p.txt, "%-3d", cid); + } + e->cid = cid; + menu_list_add_entry (menu, e); + } + } + } + } + else + menu_list_read_cmd (menu, MENU_CMD_CANCEL); + + return 1; +} + +static void +read_cmd (menu_t* menu, int cmd) +{ + demuxer_t* demuxer = mpctx_get_demuxer (menu->ctx); + stream_t* stream = mpctx_get_stream (menu->ctx); + + switch (cmd) + { + case MENU_CMD_RIGHT: + case MENU_CMD_OK: + if (stream->type == STREAMTYPE_DVD) + stream_seek (stream, + (off_t) dvd_chapter_pos[menu->priv->p.current->cid] * 2048); + else if (demuxer->type == DEMUXER_TYPE_MATROSKA) + demux_seek (demuxer, + mkv_chapter_start[menu->priv->p.current->cid]/1000.0,0,1); + + if (menu->priv->auto_close) + mp_input_queue_cmd (mp_input_parse_cmd ("menu hide")); + break; + default: + menu_list_read_cmd (menu, cmd); + } +} + +static void +close_cs (menu_t* menu) +{ + menu_list_uninit (menu, NULL); +} + +static int +open_cs (menu_t* menu, char* args) +{ + args = NULL; + + menu->draw = menu_list_draw; + menu->read_cmd = read_cmd; + menu->read_key = menu_dflt_read_key; + menu->close = close_cs; + menu->priv->p.title = menu->priv->title; + + return fill_menu (menu); +} + +const menu_info_t menu_info_chapsel = { + "Chapter selector menu", + "chapsel", + "Benjamin Zores", + "", + { + "chapsel_cfg", + sizeof(struct menu_priv_s), + &cfg_dflt, + cfg_fields + }, + open_cs +}; diff -Naur MPlayer-r23358.orig/libmpdemux/demuxer.h MPlayer-r23358/libmpdemux/demuxer.h --- MPlayer-r23358.orig/libmpdemux/demuxer.h 2007-05-25 17:57:54.000000000 +0200 +++ MPlayer-r23358/libmpdemux/demuxer.h 2007-05-25 18:01:42.000000000 +0200 @@ -361,6 +361,10 @@ extern int extension_parsing; +extern int mkv_chapter_num; +extern uint64_t mkv_chapter_start[99]; +extern char* mkv_chapter_string[99]; + int demux_info_add(demuxer_t *demuxer, const char *opt, const char *param); char* demux_info_get(demuxer_t *demuxer, char *opt); int demux_info_print(demuxer_t *demuxer); diff -Naur MPlayer-r23358.orig/libmpdemux/demux_mkv.c MPlayer-r23358/libmpdemux/demux_mkv.c --- MPlayer-r23358.orig/libmpdemux/demux_mkv.c 2007-05-25 17:57:54.000000000 +0200 +++ MPlayer-r23358/libmpdemux/demux_mkv.c 2007-05-25 18:00:07.000000000 +0200 @@ -261,6 +261,9 @@ uint32_t fourcc3; /* fourcc */ } real_audio_v5_props_t; +uint64_t mkv_chapter_start[99]; +int mkv_chapter_num; +char* mkv_chapter_string[99]; /* for e.g. "-slang ger" */ extern char *dvdsub_lang; @@ -1473,7 +1476,10 @@ (int) ((end / 60 / 1000) % 60), (int) ((end / 1000) % 60), (int) (end % 1000), name); - + mkv_chapter_num = demuxer->num_chapters; + mkv_chapter_start[mkv_chapter_num] = start; + mkv_chapter_string[mkv_chapter_num] = strdup(name); + free(name); break; } diff -Naur MPlayer-r23358.orig/mplayer.c MPlayer-r23358/mplayer.c --- MPlayer-r23358.orig/mplayer.c 2007-05-25 17:57:54.000000000 +0200 +++ MPlayer-r23358/mplayer.c 2007-05-25 18:05:08.000000000 +0200 @@ -426,6 +426,16 @@ #define mp_basename2(s) (strrchr(s,'/')==NULL?(char*)s:(strrchr(s,'/')+1)) +void *mpctx_get_demuxer(MPContext *mpctx) +{ + return mpctx->demuxer; +} + +void *mpctx_get_stream(MPContext *mpctx) +{ + return mpctx->stream; +} + void *mpctx_get_video_out(MPContext *mpctx) { return mpctx->video_out; diff -Naur MPlayer-r23358.orig/stream/stream_dvd.c MPlayer-r23358/stream/stream_dvd.c --- MPlayer-r23358.orig/stream/stream_dvd.c 2007-05-25 17:57:54.000000000 +0200 +++ MPlayer-r23358/stream/stream_dvd.c 2007-05-25 18:03:47.000000000 +0200 @@ -44,6 +44,8 @@ extern char* dvd_device; int dvd_angle=1; int dvd_speed=0; /* 0 => don't touch speed */ +int dvd_total_chapter=0; +int dvd_chapter_pos[99]; static void dvd_set_speed(char *device, unsigned speed) { @@ -1001,6 +1003,7 @@ * Make sure the chapter number is valid for this title. */ mp_msg(MSGT_OPEN,MSGL_STATUS, MSGTR_DVDnumChapters, tt_srpt->title[dvd_title].nr_of_ptts); + dvd_total_chapter = tt_srpt->title[dvd_title].nr_of_ptts; if(dvd_chapter<1 || dvd_chapter>tt_srpt->title[dvd_title].nr_of_ptts) { mp_msg(MSGT_OPEN,MSGL_ERR, MSGTR_DVDinvalidChapter, dvd_chapter); ifoClose( vmg_file ); @@ -1219,6 +1222,12 @@ d->cell_times_table[k] = dvdtimetomsec(&d->cur_pgc->cell_playback[k].playback_time); list_chapters(d->cur_pgc); + { + int chap; + for (chap = 0; chap < dvd_total_chapter; chap++) + dvd_chapter_pos[chap+1] = d->cur_pgc->cell_playback[chap].first_sector; + } + // ... (unimplemented) // return NULL; stream->type = STREAMTYPE_DVD; diff -Naur MPlayer-r23358.orig/stream/stream.h MPlayer-r23358/stream/stream.h --- MPlayer-r23358.orig/stream/stream.h 2007-05-25 17:57:54.000000000 +0200 +++ MPlayer-r23358/stream/stream.h 2007-05-25 18:02:12.000000000 +0200 @@ -301,6 +301,8 @@ extern int dvd_title; extern int dvd_chapter; extern int dvd_last_chapter; +extern int dvd_total_chapter; +extern int dvd_chapter_pos[99]; extern int dvd_angle; extern char * audio_stream; geexbox-1.1/packages/MPlayer/patches/525_menu-cmd.diff0000644000175000017500000000654110641745504020632 0ustar benbendiff -r e16f2b2827b8 input/input.c --- a/input/input.c Sun Apr 30 17:23:49 2006 +0200 +++ b/input/input.c Sun Apr 30 17:24:01 2006 +0200 @@ -908,7 +908,7 @@ mp_input_find_bind_for_key(mp_cmd_bind_t return binds[j].cmd; } -static mp_cmd_t* +mp_cmd_t* mp_input_get_cmd_from_keys(int n,int* keys, int paused) { char* cmd = NULL; mp_cmd_t* ret; diff -r e16f2b2827b8 input/input.h --- a/input/input.h Sun Apr 30 17:23:49 2006 +0200 +++ b/input/input.h Sun Apr 30 17:24:01 2006 +0200 @@ -230,6 +230,10 @@ void void mp_input_rm_key_fd(int fd); +// Convert a key list into a cmd +mp_cmd_t* +mp_input_get_cmd_from_keys(int n,int* keys, int paused); + // This function can be used to put a command in the system again. It's used by libmpdemux // when it performs a blocking operation to resend the command it received to the main // loop. diff -r e16f2b2827b8 libmenu/menu.c --- a/libmenu/menu.c Sun Apr 30 17:23:49 2006 +0200 +++ b/libmenu/menu.c Sun Apr 30 17:24:01 2006 +0200 @@ -216,6 +216,8 @@ void menu_dflt_read_key(menu_t* menu,int case JOY_BTN0: menu->read_cmd(menu,MENU_CMD_OK); break; + default: + mp_input_queue_cmd(mp_input_get_cmd_from_keys (1, &cmd, 0)); } } diff -r e16f2b2827b8 libmenu/menu_filesel.c --- a/libmenu/menu_filesel.c Sun Apr 30 17:23:49 2006 +0200 +++ b/libmenu/menu_filesel.c Sun Apr 30 17:24:01 2006 +0200 @@ -342,9 +342,9 @@ static void read_cmd(menu_t* menu,int cm free(str); } if(c) { + if(mpriv->auto_close) + mp_input_queue_cmd(mp_input_parse_cmd("menu hide")); mp_input_queue_cmd(c); - if(mpriv->auto_close) - menu->cl = 1; } } break; case MENU_CMD_ACTION: { diff -r e16f2b2827b8 libmenu/vf_menu.c --- a/libmenu/vf_menu.c Sun Apr 30 17:23:49 2006 +0200 +++ b/libmenu/vf_menu.c Sun Apr 30 17:24:01 2006 +0200 @@ -163,12 +163,12 @@ static void key_cb(int code) { inline static void copy_mpi(mp_image_t *dmpi, mp_image_t *mpi) { if(mpi->flags&MP_IMGFLAG_PLANAR){ + memcpy_pic(dmpi->planes[2], mpi->planes[2], mpi->chroma_width, mpi->chroma_height, + dmpi->stride[2],mpi->stride[2]); + memcpy_pic(dmpi->planes[1],mpi->planes[1], mpi->chroma_width, mpi->chroma_height, + dmpi->stride[1],mpi->stride[1]); memcpy_pic(dmpi->planes[0],mpi->planes[0], mpi->w, mpi->h, dmpi->stride[0],mpi->stride[0]); - memcpy_pic(dmpi->planes[1],mpi->planes[1], mpi->chroma_width, mpi->chroma_height, - dmpi->stride[1],mpi->stride[1]); - memcpy_pic(dmpi->planes[2], mpi->planes[2], mpi->chroma_width, mpi->chroma_height, - dmpi->stride[2],mpi->stride[2]); } else { memcpy_pic(dmpi->planes[0],mpi->planes[0], mpi->w*(dmpi->bpp/8), mpi->h, @@ -188,15 +188,14 @@ static int put_image(struct vf_instance_ return vf_next_put_image(vf,dmpi, pts); } - if(vf->priv->current->show - || (vf->priv->current->parent && vf->priv->current->parent->show)) { // Close all menu who requested it - while(vf->priv->current->cl && vf->priv->current != vf->priv->root) { + while(vf->priv->current != vf->priv->root && vf->priv->current->cl) { menu_t* m = vf->priv->current; vf->priv->current = m->parent ? m->parent : vf->priv->root; menu_close(m); } + if(vf->priv->current->show) { // Step 1 : save the picture while(go2pause == 1) { static char delay = 0; // Hack : wait the 2 frame to be sure to show the right picture geexbox-1.1/packages/MPlayer/patches/535_menu-properties.diff0000644000175000017500000001267010641745504022264 0ustar benbendiff -Naur MPlayer-r23418.orig/libmenu/menu_param.c MPlayer-r23418/libmenu/menu_param.c --- MPlayer-r23418.orig/libmenu/menu_param.c 2007-05-30 19:58:19.000000000 +0200 +++ MPlayer-r23418/libmenu/menu_param.c 2007-05-30 19:58:57.000000000 +0200 @@ -9,6 +9,15 @@ #include #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include "mp_msg.h" #include "help_mp.h" @@ -63,6 +72,11 @@ #define mpriv (menu->priv) +#define OPT_VERSION "Version" +#define OPT_MPREV "MPlayerRev" +#define OPT_IP "IP" +#define OPT_MAC "MAC" + static void entry_set_text(menu_t* menu, list_entry_t* e) { char* val = e->txt ? property_expand_string(menu->ctx, e->txt) : mp_property_print(e->prop, menu->ctx); @@ -89,12 +103,68 @@ if(e->txt || e->prop) entry_set_text(menu,e); } +static int is_part(char *name) { + if(strncmp(name, "disk", 4)) + return 0; + name += 4; + if(*name < '0' || *name > '9') + return 0; + name++; + if(*name == '\0') + return 1; + if(strncmp(name, "part", 4)) + return 0; + name += 4; + if(*name < '0' || *name > '9') + return 0; + return 1; +} + +static int is_cdrom(char *name) { + if(strncmp(name, "cdrom", 5)) + return 0; + name += 5; + if(*name < '0' || *name > '9') + return 0; + return 1; +} + +static char *part_size(char *part) { + static char size[32]; + char name[] = "/dev/diskNpartN"; + struct mntent *mpoint; + struct statfs buf; + FILE *mtab; + + strcpy(name+5, part); + mtab = setmntent("/proc/mounts", "r"); + while((mpoint = getmntent(mtab)) != NULL) + if(!strcmp(mpoint->mnt_fsname, name)) + { + endmntent(mtab); + if(!statfs(mpoint->mnt_dir, &buf)) + if(buf.f_bfree > 0) + sprintf(size, "%lld M / %lld M", + (buf.f_bsize * (long long)buf.f_bfree) >> 20, + (buf.f_bsize * (long long)buf.f_blocks) >> 20); + else + sprintf(size, "%lld M", (buf.f_bsize * (long long)buf.f_blocks) >> 20); + else + sprintf(size, "unknown"); + return size; + } + endmntent(mtab); + sprintf(size, "unknown"); + return size; +} + static int parse_args(menu_t* menu,char* args) { char *element,*body, **attribs, *name, *txt; list_entry_t* m = NULL; int r; m_option_t* opt; ASX_Parser_t* parser = asx_parser_new(); + char *val; while(1) { @@ -128,6 +198,71 @@ } name = asx_get_attrib("property",attribs); + + val = NULL; + if(name) { + if (!strcmp (name, OPT_VERSION)) { + struct stat st; + + if (stat ("/etc/version", &st) == 0) + { + int fd; + fd = open ("/etc/version", O_RDONLY); + val = malloc (st.st_size + 1); + memset (val, '\0', st.st_size + 1); + read (fd, val, st.st_size + 1); + close (fd); + } + else + val = strdup ("#undef"); + } + else if(!strcmp(name, OPT_IP) || !strcmp(name, OPT_MAC)) { + struct if_nameindex *ifs, *ifp; + struct ifreq ifr; + int fd, ip; + unsigned char *hwaddr; + + fd = socket(AF_INET, SOCK_DGRAM, 0); + if (fd >= 0) { + for (ifp = ifs = if_nameindex (); ifp->if_index != 0; ifp++) { + if (strcmp (ifp->if_name, "lo") && strcmp (ifp->if_name, "sit0")) { + strcpy(ifr.ifr_name, ifp->if_name); + ifr.ifr_addr.sa_family = AF_INET; + val = malloc (20); + if (!strcmp(name, OPT_IP) && ioctl(fd, SIOCGIFADDR, &ifr) == 0) { + ip = ((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr.s_addr; + ip = ntohl (ip); + sprintf (val, "%d.%d.%d.%d", + (ip>>24)&0xFF, (ip>>16)&0xFF, (ip>>8)&0xFF, ip&0xFF); + } else if (!strcmp(name, OPT_MAC) && ioctl(fd, SIOCGIFHWADDR, &ifr) == 0) { + hwaddr = (unsigned char *)ifr.ifr_hwaddr.sa_data; + sprintf (val, "%02X:%02X:%02X:%02X:%02X:%02X", + hwaddr[0],hwaddr[1],hwaddr[2],hwaddr[3],hwaddr[4],hwaddr[5]); + } else { + val = strdup("NULL"); + } + break; + } + } + if_freenameindex (ifs); + close (fd); + } + } + else if (!strcmp (name, OPT_MPREV)) + val = strdup(VERSION); + else if (is_part(name) || is_cdrom(name)) + val = strdup(part_size(name)); + } + if (val) { + int l = strlen(name) + 2 + strlen(val) + 1; + m = calloc(1,sizeof(struct list_entry_s)); + m->p.txt = malloc(l); + sprintf(m->p.txt,"%s: %s",name,val); + free(val); + menu_list_add_entry(menu,m); + goto next_element; + } + opt = NULL; if(name && mp_property_do(name,M_PROPERTY_GET_TYPE,&opt,menu->ctx) <= 0) { mp_msg(MSGT_OSD_MENU,MSGL_WARN,MSGTR_LIBMENU_InvalidProperty, diff -Naur MPlayer-r23418.orig/mplayer.c MPlayer-r23418/mplayer.c --- MPlayer-r23418.orig/mplayer.c 2007-05-30 19:58:19.000000000 +0200 +++ MPlayer-r23418/mplayer.c 2007-05-30 19:58:33.000000000 +0200 @@ -517,7 +517,7 @@ if (!strcmp (info[2*n], tag)) break; - return info[2*n+1] ? strdup (info[2*n+1]) : NULL; + return (info[2*n+1] && strcmp(info[2*n+1], "")) ? strdup (info[2*n+1]) : NULL; } char *get_metadata (metadata_t type) { geexbox-1.1/packages/MPlayer/patches/540_menu-autoupdate-properties.diff0000644000175000017500000000561710641745504024434 0ustar benbendiff -r d805860eb5fa libmenu/menu.c --- a/libmenu/menu.c Sun Apr 30 16:54:41 2006 +0200 +++ b/libmenu/menu.c Sun Apr 30 16:54:41 2006 +0200 @@ -234,6 +234,7 @@ menu_t* menu_open(char *name) { return NULL; } m = calloc(1,sizeof(menu_t)); + strncpy(m->name,name,sizeof(m->name)); m->priv_st = &(menu_list[i].type->priv_st); m->priv = m_struct_copy(m->priv_st,menu_list[i].cfg); m->ctx = menu_ctx; diff -r d805860eb5fa libmenu/menu.h --- a/libmenu/menu.h Sun Apr 30 16:54:41 2006 +0200 +++ b/libmenu/menu.h Sun Apr 30 16:54:41 2006 +0200 @@ -13,6 +13,7 @@ struct menu_s { int show; // Draw it ? int cl; // Close request (user sent a close cmd or menu_t* parent; + char name[20]; }; typedef struct menu_info_s { diff -r d805860eb5fa libmenu/vf_menu.c --- a/libmenu/vf_menu.c Sun Apr 30 16:54:41 2006 +0200 +++ b/libmenu/vf_menu.c Sun Apr 30 16:54:41 2006 +0200 @@ -76,6 +76,18 @@ static mp_image_t* alloc_mpi(int w, int mpi->flags|=MP_IMGFLAG_ALLOCATED; return mpi; +} + +void menu_stream_opened(int onlyhidden, const char *menu_name) { + char cmd[30]; + if ( st_priv && ( (onlyhidden && !st_priv->current->show) || + !strncmp(menu_name,st_priv->current->name,20) ) ) { + sprintf(cmd, "set_menu %s", menu_name); + if (!st_priv->current->show && + strncmp(menu_name,st_priv->current->name,20)) + mp_input_queue_cmd(mp_input_parse_cmd("menu toggle")); + mp_input_queue_cmd(mp_input_parse_cmd(cmd)); + } } void vf_menu_pause_update(struct vf_instance_s* vf) { @@ -132,6 +144,11 @@ static int cmd_filter(mp_cmd_t* cmd, int mp_msg(MSGT_GLOBAL,MSGL_WARN,MSGTR_LIBMENU_FailedToOpenMenu,menu); priv->current = l; priv->current->show = 0; + } else if (!strcmp("properties",menu) + && !strcmp(l->name,menu)) { + priv->current->show = l->show; + priv->current->parent = l->parent; + menu_close(l); } else { priv->current->show = 1; priv->current->parent = l; diff -r d805860eb5fa mplayer.c --- a/mplayer.c Sun Apr 30 16:54:41 2006 +0200 +++ b/mplayer.c Sun Apr 30 16:54:41 2006 +0200 @@ -355,6 +355,7 @@ extern int vo_gamma_hue; #include "m_struct.h" #include "libmenu/menu.h" extern void vf_menu_pause_update(struct vf_instance_s* vf); +extern void menu_stream_opened(int onlyhidden, const char *menu_name); extern vf_info_t vf_info_menu; static vf_info_t* libmenu_vfs[] = { &vf_info_menu, @@ -3159,6 +3159,9 @@ while(sh_audio && !sh_video && bg_video) mpctx->d_video = mpctx->bg_demuxer->video; mpctx->sh_video = mpctx->d_video->sh; mp_msg(MSGT_DEMUXER,MSGL_INFO,"Background video should work ;)\n"); +#ifdef HAVE_MENU + menu_stream_opened(1, "properties"); +#endif break; } @@ -3342,6 +3342,10 @@ current_module="main"; // Disable the term OSD in verbose mode if(verbose) term_osd = 0; + +#ifdef HAVE_MENU +menu_stream_opened(0, "properties"); +#endif { //int frame_corr_num=0; // geexbox-1.1/packages/MPlayer/patches/555_menu-playtree.diff0000644000175000017500000001413210641745504021712 0ustar benbendiff -r cc4b9cfa9112 libmenu/menu_pt.c --- a/libmenu/menu_pt.c Sun Apr 30 16:54:41 2006 +0200 +++ b/libmenu/menu_pt.c Sun Apr 30 16:54:42 2006 +0200 @@ -32,11 +32,13 @@ struct menu_priv_s { struct menu_priv_s { menu_list_priv_t p; char* title; + int auto_close; }; static struct menu_priv_s cfg_dflt = { MENU_LIST_PRIV_DFLT, - "Jump to" + "Jump to", + 0 }; #define ST_OFF(m) M_ST_OFF(struct menu_priv_s,m) @@ -44,28 +44,79 @@ static m_option_t cfg_fields[] = { static m_option_t cfg_fields[] = { MENU_LIST_PRIV_FIELDS, { "title", ST_OFF(title), CONF_TYPE_STRING, 0, 0, 0, NULL }, + { "auto-close", ST_OFF(auto_close), CONF_TYPE_FLAG, 0, 0, 1, NULL }, { NULL, NULL, NULL, 0,0,0,NULL } }; #define mpriv (menu->priv) +static int fill_menu(menu_t* menu) { + play_tree_t* i; + list_entry_t* e; + play_tree_iter_t* playtree_iter = mpctx_get_playtree_iter(menu->ctx); + + menu_list_init(menu); + + mpriv->p.title = mpriv->title; + + if(playtree_iter->tree->parent) { + e = calloc(1,sizeof(list_entry_t)); + e->p.txt = ".."; + e->pt = playtree_iter->tree->parent; + menu_list_add_entry(menu,e); + } + + for(i = playtree_iter->tree ; i->prev != NULL ; i = i->prev) + /* NOP */; + for( ; i != NULL ; i = i->next ) { + e = calloc(1,sizeof(list_entry_t)); + if(i->files) { +#if defined(HAVE_VCD) || defined(HAVE_CDDA) + if (i->entry_type == PLAY_TREE_ENTRY_VCD + || !strncasecmp(i->files[0],"cdda://",7)) { + e->p.txt = malloc (10); + sprintf(e->p.txt, "Track %s", mp_basename(i->files[0])); + } + else +#endif +#ifdef USE_DVDREAD + if (i->entry_type == PLAY_TREE_ENTRY_DVD) { + e->p.txt = malloc (10); + sprintf(e->p.txt, "Title %s", mp_basename(i->files[0])); + } + else +#endif + e->p.txt = mp_basename(i->files[0]); + } + else + e->p.txt = "Initial Playlist ..."; + e->pt = i; + menu_list_add_entry(menu,e); + } + + return 1; +} + static void read_cmd(menu_t* menu,int cmd) { switch(cmd) { case MENU_CMD_RIGHT: case MENU_CMD_OK: { - int d = 1; + int d = 0; char str[15]; play_tree_t* i; mp_cmd_t* c; play_tree_iter_t* playtree_iter = mpctx_get_playtree_iter(menu->ctx); - if(playtree_iter->tree == mpriv->p.current->pt) - break; - - if(playtree_iter->tree->parent && mpriv->p.current->pt == playtree_iter->tree->parent) - snprintf(str,15,"pt_up_step 1"); - else { - for(i = playtree_iter->tree->next; i != NULL ; i = i->next) { + if(playtree_iter->tree->parent && mpriv->p.current->pt == playtree_iter->tree->parent){ + playtree_iter->tree = playtree_iter->tree->parent; + menu_list_uninit(menu,NULL); + fill_menu(menu); + } else if(mpriv->p.current->pt->child) { + playtree_iter->tree = mpriv->p.current->pt->child; + menu_list_uninit(menu,NULL); + fill_menu(menu); + } else { + for(i = playtree_iter->tree; i != NULL ; i = i->next) { if(i == mpriv->p.current->pt) break; d++; @@ -83,12 +83,14 @@ static void read_cmd(menu_t* menu,int cm } } snprintf(str,15,"pt_step %d",d); + c = mp_input_parse_cmd(str); + if(c) { + if(mpriv->auto_close) + mp_input_queue_cmd(mp_input_parse_cmd("menu hide")); + mp_input_queue_cmd(c); + } else + mp_msg(MSGT_GLOBAL,MSGL_WARN,MSGTR_LIBMENU_FailedToBuildCommand,str); } - c = mp_input_parse_cmd(str); - if(c) - mp_input_queue_cmd(c); - else - mp_msg(MSGT_GLOBAL,MSGL_WARN,MSGTR_LIBMENU_FailedToBuildCommand,str); } break; default: menu_list_read_cmd(menu,cmd); @@ -104,8 +104,6 @@ static void close(menu_t* menu) { } static int op(menu_t* menu, char* args) { - play_tree_t* i; - list_entry_t* e; play_tree_iter_t* playtree_iter = mpctx_get_playtree_iter(menu->ctx); args = NULL; // Warning kill @@ -115,30 +115,7 @@ static int op(menu_t* menu, char* args) menu->read_key = read_key; menu->close = close_menu; - menu_list_init(menu); - - mpriv->p.title = mpriv->title; - - if(playtree_iter->tree->parent != playtree_iter->root) { - e = calloc(1,sizeof(list_entry_t)); - e->p.txt = ".."; - e->pt = playtree_iter->tree->parent; - menu_list_add_entry(menu,e); - } - - for(i = playtree_iter->tree ; i->prev != NULL ; i = i->prev) - /* NOP */; - for( ; i != NULL ; i = i->next ) { - e = calloc(1,sizeof(list_entry_t)); - if(i->files) - e->p.txt = mp_basename(i->files[0]); - else - e->p.txt = "Group ..."; - e->pt = i; - menu_list_add_entry(menu,e); - } - - return 1; + return fill_menu(menu); } const menu_info_t menu_info_pt = { diff -r cc4b9cfa9112 mplayer.c --- a/command.c Sun Apr 30 16:54:41 2006 +0200 +++ b/command.c Sun Apr 30 16:54:42 2006 +0200 @@ -1857,7 +1857,7 @@ if (stream->type==STREAMTYPE_DVDNAV && d } } break; case MP_CMD_PLAY_TREE_STEP:{ - int n = cmd->args[0].v.i == 0 ? 1 : cmd->args[0].v.i; + int n = cmd->args[0].v.i; int force = cmd->args[1].v.i; #ifdef HAVE_NEW_GUI diff -r cc4b9cfa9112 playtree.c --- a/playtree.c Sun Apr 30 16:54:41 2006 +0200 +++ b/playtree.c Sun Apr 30 16:54:42 2006 +0200 @@ -252,7 +252,6 @@ play_tree_add_file(play_tree_t* pt,char* #ifdef MP_DEBUG assert(pt != NULL); - assert(pt->child == NULL); assert(file != NULL); #endif @@ -662,9 +661,6 @@ play_tree_is_valid(play_tree_t* pt) { #endif if(pt->entry_type != PLAY_TREE_ENTRY_NODE) { -#ifdef MP_DEBUG - assert(pt->child == NULL); -#endif return 1; } else if (pt->child != NULL) { @@ -724,7 +720,6 @@ play_tree_iter_down_step(play_tree_iter_ play_tree_iter_down_step(play_tree_iter_t* iter, int d,int with_nodes) { #ifdef MP_DEBUG - assert(iter->tree->files == NULL); assert(iter->tree->child != NULL); assert(iter->tree->child->parent == iter->tree); //printf("PT : Go DOWN\n"); diff -r cc4b9cfa9112 playtreeparser.c --- a/playtreeparser.c Sun Apr 30 16:54:41 2006 +0200 +++ b/playtreeparser.c Sun Apr 30 16:54:42 2006 +0200 @@ -738,6 +738,7 @@ parse_playlist_file(char* file) { free_stream(stream); play_tree_add_bpf(ret, file); + play_tree_add_file(ret,file); return ret; geexbox-1.1/packages/MPlayer/patches/565_menu-filesel-no-left-cmd.diff0000644000175000017500000000103010641745504023605 0ustar benbendiff -Naur MPlayer-r23358.orig/libmenu/menu_filesel.c MPlayer-r23358/libmenu/menu_filesel.c --- MPlayer-r23358.orig/libmenu/menu_filesel.c 2007-05-25 17:04:17.000000000 +0200 +++ MPlayer-r23358/libmenu/menu_filesel.c 2007-05-25 17:05:15.000000000 +0200 @@ -308,8 +308,6 @@ static void read_cmd(menu_t* menu,int cmd) { mp_cmd_t* c = NULL; switch(cmd) { - case MENU_CMD_LEFT: - mpriv->p.current = mpriv->p.menu; // Hack : we consider that the first entry is ../ case MENU_CMD_RIGHT: case MENU_CMD_OK: { // Directory geexbox-1.1/packages/MPlayer/patches/570_menu-special-filename-escape.diff0000644000175000017500000000553310641745504024523 0ustar benbenfixes two bugs: 1. doesn't add \ before spaces when showing dirname in interface title. 2. when replace_path() string is to be parsed by input command, I assume that the path is to be run in shell, and I do special escaping of 'into \'\\\'\' diff -r f07b83b8f199 libmenu/menu_filesel.c --- a/libmenu/menu_filesel.c Sun Apr 30 16:54:42 2006 +0200 +++ b/libmenu/menu_filesel.c Sun Apr 30 16:54:43 2006 +0200 @@ -83,7 +83,7 @@ static void free_entry(list_entry_t* ent free(entry); } -static char* replace_path(char* title , char* dir) { +static char* replace_path(char* title , char* dir , int escape) { char *p = strstr(title,"%p"); if(p) { int tl = strlen(title); @@ -93,16 +93,28 @@ static char* replace_path(char* title , char *r, *n, *d = dir; char term = *(p-1); + if (escape) { do { - if (*d == '\\' || *d == term) + if (*d == '\\') l++; + else if (*d == '\'') /* ' -> \'\\\'\' */ + l+=7; } while (*d++); + } r = malloc(l + 1); n = r + t1l; memcpy(r,title,t1l); do { - if (*dir == '\\' || *dir == term) + if (escape) { + if (*dir == '\\') *n++ = '\\'; + else if (*dir == '\'') { /* ' -> \'\\\'\' */ + *n++ = '\\'; *n++ = '\''; + *n++ = '\\'; *n++ = '\\'; + *n++ = '\\'; *n++ = '\''; + *n++ = '\\'; + } + } } while ((*n++ = *dir++)); if(tl - t1l - 2 > 0) strcpy(n-1,p+2); @@ -200,7 +200,7 @@ static int open_dir(menu_t* menu,char* a free(mpriv->p.title); p = strstr(mpriv->title,"%p"); - mpriv->p.title = replace_path(mpriv->title,mpriv->dir); + mpriv->p.title = replace_path(mpriv->title,mpriv->dir,0); if ((dirp = opendir (mpriv->dir)) == NULL){ mp_msg(MSGT_GLOBAL,MSGL_ERR,MSGTR_LIBMENU_OpendirError, strerror(errno)); @@ -304,7 +304,7 @@ static void read_cmd(menu_t* menu,int cm char filename[fname_len]; char* str; sprintf(filename,"%s%s",mpriv->dir,mpriv->p.current->p.txt); - str = replace_path(mpriv->dir_action,filename); + str = replace_path(mpriv->dir_action,filename,1); c = mp_input_parse_cmd(str); if(str != mpriv->dir_action) free(str); @@ -338,7 +338,7 @@ static void read_cmd(menu_t* menu,int cm char filename[fname_len]; char *str; sprintf(filename,"%s%s",mpriv->dir,mpriv->p.current->p.txt); - str = replace_path(mpriv->file_action,filename); + str = replace_path(mpriv->file_action,filename,1); c = mp_input_parse_cmd(str); if(str != mpriv->file_action) free(str); @@ -354,7 +354,7 @@ static void read_cmd(menu_t* menu,int cm char filename[fname_len]; char *str; sprintf(filename,"%s%s",mpriv->dir,mpriv->p.current->p.txt); - str = replace_path(action, filename); + str = replace_path(action, filename, 1); mp_input_queue_cmd(mp_input_parse_cmd(str)); if(str != action) free(str); geexbox-1.1/packages/MPlayer/patches/575_streaminfo-dump.diff0000644000175000017500000001036010641745504022236 0ustar benbendiff -r 90db519a2f3f mplayer.c --- a/mplayer.c Sun Apr 30 16:54:43 2006 +0200 +++ b/mplayer.c Sun Apr 30 16:54:44 2006 +0200 @@ -280,6 +280,8 @@ int file_filter=1; static char* bg_video = NULL; +char* info_fifo=NULL; +char* bg_lcdbanner=NULL; // cache2: int stream_cache_size=-1; @@ -923,6 +923,72 @@ static int libmpdemux_was_interrupted(in } #define mp_basename(s) (strrchr(s,'\\')==NULL?(mp_basename2(s)):(strrchr(s,'\\')+1)) + +void dump_stream_info() +{ + int fd, len, pts; + FILE * log_file; + + if(!info_fifo) return; + + mkfifo(info_fifo, 0644); + fd = open(info_fifo, O_RDWR | O_NONBLOCK); + if(fd < 0) return; + log_file = fdopen(fd, "w"); + if(!log_file) return; + + fprintf(log_file, "ID_FILENAME=%s\n", strcmp(filename, bg_video) ? \ + mp_basename(filename) : bg_lcdbanner); + fprintf(log_file, "ID_DEMUXER=%s\n", mpctx->demuxer->desc->name); + len = (int)demuxer_get_time_length(mpctx->demuxer); + fprintf(log_file, "ID_LENGTH=%02d:%02d:%02d\n", len/3600, (len/60)%60, len%60); + fprintf(log_file, "ID_VIDEO_PERCENT=%d\n", demuxer_get_percent_pos(mpctx->demuxer)); + pts = demuxer_get_current_time(mpctx->demuxer); + if (mpctx->bg_demuxer) + pts = playing_audio_pts(mpctx->sh_audio, mpctx->d_audio, mpctx->audio_out); + fprintf(log_file, "ID_TIME_ELAPSED=%02d:%02d:%02d\n", pts/3600, (pts/60)%60, pts%60); + + if (mpctx->sh_video) { + /* Assume FOURCC if all bytes >= 0x20 (' ') */ + if (mpctx->sh_video->format >= 0x20202020) + fprintf(log_file, "ID_VIDEO_FORMAT=%.4s\n", (char *)&mpctx->sh_video->format); + else + fprintf(log_file, "ID_VIDEO_FORMAT=0x%08X\n", mpctx->sh_video->format); + fprintf(log_file, "ID_VIDEO_BITRATE=%d\n", mpctx->sh_video->i_bps*8); + fprintf(log_file, "ID_VIDEO_WIDTH=%d\n", mpctx->sh_video->disp_w); + fprintf(log_file, "ID_VIDEO_HEIGHT=%d\n", mpctx->sh_video->disp_h); + fprintf(log_file, "ID_VIDEO_FPS=%5.3f\n", mpctx->sh_video->fps); + fprintf(log_file, "ID_VIDEO_ASPECT=%1.4f\n", mpctx->sh_video->aspect); + } + if (mpctx->sh_audio) { + char *info; + if ((info = demux_info_get(mpctx->demuxer, "Title")) != NULL) + fprintf(log_file, "ID_AUDIO_TITLE=%s\n", info ); + if ((info = demux_info_get(mpctx->demuxer, "Artist")) != NULL) + fprintf(log_file, "ID_AUDIO_ARTIST=%s\n", info ); + if ((info = demux_info_get(mpctx->demuxer, "Album")) != NULL) + fprintf(log_file, "ID_AUDIO_ALBUM=%s\n", info ); + if ((info = demux_info_get(mpctx->demuxer, "Year")) != NULL) + fprintf(log_file, "ID_AUDIO_YEAR=%s\n", info ); + if ((info = demux_info_get(mpctx->demuxer, "Comment")) != NULL) + fprintf(log_file, "ID_AUDIO_COMMENT=%s\n", info ); + if ((info = demux_info_get(mpctx->demuxer, "Track")) != NULL) + fprintf(log_file, "ID_AUDIO_TRACK=%s\n", info ); + if ((info = demux_info_get(mpctx->demuxer, "Genre")) != NULL) + fprintf(log_file, "ID_AUDIO_GENRE=%s\n", info ); + if (mpctx->sh_audio->codec) + fprintf(log_file, "ID_AUDIO_CODEC=%s\n", mpctx->sh_audio->codec->name); + /* Assume FOURCC if all bytes >= 0x20 (' ') */ + if (mpctx->sh_audio->format >= 0x20202020) + fprintf(log_file, "ID_AUDIO_FORMAT=%.4s\n", (char *)&mpctx->sh_audio->format); + else + fprintf(log_file, "ID_AUDIO_FORMAT=%d\n", mpctx->sh_audio->format); + fprintf(log_file, "ID_AUDIO_BITRATE=%d\n", mpctx->sh_audio->i_bps*8); + fprintf(log_file, "ID_AUDIO_RATE=%d\n", mpctx->sh_audio->samplerate); + fprintf(log_file, "ID_AUDIO_NCH=%d\n", mpctx->sh_audio->channels); + } + fclose(log_file); +} int playtree_add_playlist(play_tree_t* entry) { @@ -3650,6 +3650,8 @@ if (stream->type==STREAMTYPE_DVDNAV && d loop_seek = 1; } + dump_stream_info(); + if(rel_seek_secs || abs_seek_pos){ if (seek(mpctx, rel_seek_secs, abs_seek_pos) >= 0) { // Set OSD: +++ a/cfg-mplayer.h 2007-04-28 14:08:07.000000000 +0200 --- a/cfg-mplayer.h 2007-04-28 14:08:07.000000000 +0200 @@ -355,6 +355,8 @@ #endif {"bgvideo", &bg_video, CONF_TYPE_STRING, 0, 0, 0, NULL}, + {"info-fifo", &info_fifo, CONF_TYPE_STRING, 0, 0, 0, NULL}, + {"bg-lcdbanner", &bg_lcdbanner, CONF_TYPE_STRING, 0, 0, 0, NULL}, {"noloop", &loop_times, CONF_TYPE_FLAG, 0, 0, -1, NULL}, {"loop", &loop_times, CONF_TYPE_INT, CONF_RANGE, -1, 10000, NULL}, geexbox-1.1/packages/MPlayer/patches/585_menu-filesel-opendir-bail-to-mnt.diff0000644000175000017500000000111110641745504025263 0ustar benbendiff -r 92ef6acb17e7 libmenu/menu_filesel.c --- a/libmenu/menu_filesel.c Sun Apr 30 16:54:46 2006 +0200 +++ b/libmenu/menu_filesel.c Sun Apr 30 16:54:46 2006 +0200 @@ -191,7 +191,7 @@ free_extensions (char **extensions) } } -static int open_dir(menu_t* menu,char* args) { +static int _open_dir(menu_t* menu,char* args) { char **namelist, **tp; struct dirent *dp; struct stat st; @@ -299,6 +299,9 @@ bailout: return 1; } +static int open_dir(menu_t* menu,char* args) { + return (_open_dir(menu, args) || _open_dir(menu, "/mnt/")); +} static char *action; geexbox-1.1/packages/MPlayer/patches/650_tvinput.diff0000644000175000017500000000234410641745504020632 0ustar benbendiff -r 6cd0bd7e2d49 libmpdemux/tv.c --- a/stream/tv.c Sun Apr 30 16:54:43 2006 +0200 +++ b/stream/tv.c Sun Apr 30 16:54:43 2006 +0200 @@ -414,7 +414,11 @@ static int open_tv(tvi_handle_t *tvh) int channel = 0; if (tv_param_channel) { - if (isdigit(*tv_param_channel)) + if (*tv_param_channel == '-' && isdigit(tv_param_channel[1])) { + tv_param_input = atoi(tv_param_channel+1); + funcs->control(tvh->priv, TVI_CONTROL_SPC_SET_INPUT, &tv_param_input); + } + else if (isdigit(*tv_param_channel)) /* if tv_param_channel begins with a digit interpret it as a number */ channel = atoi(tv_param_channel); else @@ -462,6 +462,11 @@ static int open_tv(tvi_handle_t *tvh) if (tv_param_channel) { struct CHANLIST cl; + if (*tv_param_channel == '-' && isdigit(tv_param_channel[1])) { + tv_param_input = atoi(tv_param_channel+1); + funcs->control(tvh->priv, TVI_CONTROL_SPC_SET_INPUT, &tv_param_input); + } + else { mp_msg(MSGT_TV, MSGL_V, MSGTR_TV_RequestedChannel, tv_param_channel); for (i = 0; i < chanlists[tvh->chanlist].count; i++) { @@ -477,6 +477,7 @@ static int open_tv(tvi_handle_t *tvh) tv_set_freq(tvh, (unsigned long)(((float)cl.freq/1000)*16)); break; } + } } } } geexbox-1.1/packages/MPlayer/patches/655_tvkeepon.diff0000644000175000017500000000065410641745504020763 0ustar benbendiff -r 5f88e25ccf52 mplayer.c --- a/mplayer.c Sun Apr 30 16:54:44 2006 +0200 +++ b/mplayer.c Sun Apr 30 16:54:44 2006 +0200 @@ -2031,6 +2031,7 @@ if(!(video_out=init_best_video_out(video mp_msg(MSGT_CPLAYER,MSGL_FATAL,MSGTR_ErrorInitializingVODevice); goto err_out; } + system("[ -x /usr/bin/tvkeepon ] && /usr/bin/tvkeepon"); sh_video->video_out=mpctx->video_out; inited_flags|=INITED_VO; } geexbox-1.1/packages/MPlayer/patches/700_player-dvdnav.diff0000644000175000017500000010353010641745504021670 0ustar benben* from http://onebit.hu/pub/mplayer/dvdnav/20070308/dvdnav.patch diff -Naur MPlayer-r23256.orig/command.c MPlayer-r23256/command.c --- MPlayer-r23256.orig/command.c 2007-05-08 02:14:58.000000000 +0200 +++ MPlayer-r23256/command.c 2007-05-08 02:35:59.000000000 +0200 @@ -2494,14 +2494,28 @@ if (mp_dvdnav_handle_input (mpctx->stream, cmd->args[0].v.i, &button)) { +#if 0 uninit_player(INITED_ALL - (INITED_STREAM | INITED_INPUT | (fixed_vo ? INITED_VO : 0))); brk_cmd = 2; +#endif } else if (button > 0) set_osd_msg(OSD_MSG_TEXT, 1, osd_duration, "Selected button number %d", button); } break; + case MP_CMD_SWITCH_TITLE:{ + if (mpctx->stream->type != STREAMTYPE_DVDNAV) + break; + mp_dvdnav_play_title(mpctx->stream, cmd->args[0].v.i); + } + break; + case MP_CMD_SWITCH_CHAPTER:{ + if (mpctx->stream->type != STREAMTYPE_DVDNAV) + break; + mp_dvdnav_play_chapter(mpctx->stream, cmd->args[0].v.i); + } + break; #endif default: diff -Naur MPlayer-r23256.orig/input/input.c MPlayer-r23256/input/input.c --- MPlayer-r23256.orig/input/input.c 2007-05-08 02:14:58.000000000 +0200 +++ MPlayer-r23256/input/input.c 2007-05-08 02:35:59.000000000 +0200 @@ -160,6 +160,8 @@ #ifdef USE_DVDNAV { MP_CMD_DVDNAV, "dvdnav", 1, { {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, + { MP_CMD_SWITCH_TITLE, "switch_title", 0, { { MP_CMD_ARG_INT,{-1} }, {-1,{0}} } }, + { MP_CMD_SWITCH_CHAPTER, "switch_chapter", 0, { { MP_CMD_ARG_INT,{-1} }, {-1,{0}} } }, #endif #ifdef HAVE_MENU diff -Naur MPlayer-r23256.orig/input/input.h MPlayer-r23256/input/input.h --- MPlayer-r23256.orig/input/input.h 2007-05-08 02:14:58.000000000 +0200 +++ MPlayer-r23256/input/input.h 2007-05-08 02:35:59.000000000 +0200 @@ -100,6 +100,9 @@ #define MP_CMD_DVD_PLAY 96 #define MP_CMD_CDDA_PLAY 97 +#define MP_CMD_SWITCH_TITLE 98 +#define MP_CMD_SWITCH_CHAPTER 99 + #define MP_CMD_GUI_EVENTS 5000 #define MP_CMD_GUI_LOADFILE 5001 #define MP_CMD_GUI_LOADSUBTITLE 5002 diff -Naur MPlayer-r23256.orig/libmpdemux/demuxer.c MPlayer-r23256/libmpdemux/demuxer.c --- MPlayer-r23256.orig/libmpdemux/demuxer.c 2007-05-08 02:14:58.000000000 +0200 +++ MPlayer-r23256/libmpdemux/demuxer.c 2007-05-08 02:35:59.000000000 +0200 @@ -388,6 +388,7 @@ } ds->pts_bytes+=p->len; // !!! if(p->stream_pts != MP_NOPTS_VALUE) demux->stream_pts=p->stream_pts; + if(p->stream_pts == MP_NOPTS_VALUE+1.0f) demux->stream_pts=MP_NOPTS_VALUE; ds->flags=p->flags; // unlink packet: ds->bytes-=p->len; diff -Naur MPlayer-r23256.orig/libmpdemux/demuxer.h MPlayer-r23256/libmpdemux/demuxer.h --- MPlayer-r23256.orig/libmpdemux/demuxer.h 2007-05-08 02:14:58.000000000 +0200 +++ MPlayer-r23256/libmpdemux/demuxer.h 2007-05-08 02:35:59.000000000 +0200 @@ -81,6 +81,7 @@ #define DEMUXER_CTRL_RESYNC 13 #define DEMUXER_CTRL_SWITCH_VIDEO 14 #define DEMUXER_CTRL_IDENTIFY_PROGRAM 15 +#define DEMUXER_CTRL_GET_AUDIO 16 // Holds one packet/frame/whatever typedef struct demux_packet_st { diff -Naur MPlayer-r23256.orig/libmpdemux/demux_mpg.c MPlayer-r23256/libmpdemux/demux_mpg.c --- MPlayer-r23256.orig/libmpdemux/demux_mpg.c 2007-05-08 02:14:58.000000000 +0200 +++ MPlayer-r23256/libmpdemux/demux_mpg.c 2007-05-08 02:35:59.000000000 +0200 @@ -1007,7 +1007,14 @@ } *((int*)arg) = demuxer->audio->id; return DEMUXER_CTRL_OK; - + case DEMUXER_CTRL_GET_AUDIO: { + int stream_num,ret; + stream_num=*((int*)arg); + if(stream_num<0 || stream_num>mpg_d->num_a_streams) ret=-1; else + ret=mpg_d->a_stream_ids[stream_num]; + *((int*)arg) = ret; + return DEMUXER_CTRL_OK; + } default: return DEMUXER_CTRL_NOTIMPL; } diff -Naur MPlayer-r23256.orig/mencoder.c MPlayer-r23256/mencoder.c --- MPlayer-r23256.orig/mencoder.c 2007-05-08 02:14:58.000000000 +0200 +++ MPlayer-r23256/mencoder.c 2007-05-08 02:35:59.000000000 +0200 @@ -92,6 +92,7 @@ int forced_subs_only=0; //-------------------------- +int dvdnav_color_spu = 0; // cache2: int stream_cache_size=-1; diff -Naur MPlayer-r23256.orig/mp_core.h MPlayer-r23256/mp_core.h --- MPlayer-r23256.orig/mp_core.h 2007-05-08 02:14:58.000000000 +0200 +++ MPlayer-r23256/mp_core.h 2007-05-08 02:35:59.000000000 +0200 @@ -99,6 +99,15 @@ #endif int was_paused; +#ifdef USE_DVDNAV + void *smpi; + void *last_buffer; + void *last_start; + int last_in_size; + int libmpeg2_count; + int dup_frame; + int dvdnav_last_audio_id; +#endif } MPContext; diff -Naur MPlayer-r23256.orig/mplayer.c MPlayer-r23256/mplayer.c --- MPlayer-r23256.orig/mplayer.c 2007-05-08 02:14:58.000000000 +0200 +++ MPlayer-r23256/mplayer.c 2007-05-08 02:35:59.000000000 +0200 @@ -92,6 +92,40 @@ #define ROUND(x) ((int)((x)<0 ? (x)-0.5 : (x)+0.5)) +#ifdef USE_DVDNAV +#include "libmpcodecs/img_format.h" +#include "libmpcodecs/mp_image.h" +#include "libvo/fastmemcpy.h" +int dvdnav_color_spu_flg = -1; +int dvdnav_color_spu = 1; + +unsigned char emptyframe[371] = { + 0x00,0x00,0x01,0x00,0x03,0x17,0xff,0xfb,0x80,0x00,0x00,0x01,0xb5,0x81,0x1f,0xf3, + 0x41,0x80,0x00,0x00,0x01,0x01,0x12,0x70,0x10,0x14,0x70,0x00,0x00,0x01,0x02,0x12, + 0x70,0x10,0x14,0x70,0x00,0x00,0x01,0x03,0x12,0x70,0x10,0x14,0x70,0x00,0x00,0x01, + 0x04,0x12,0x70,0x10,0x14,0x70,0x00,0x00,0x01,0x05,0x12,0x70,0x10,0x14,0x70,0x00, + 0x00,0x01,0x06,0x12,0x70,0x10,0x14,0x70,0x00,0x00,0x01,0x07,0x12,0x70,0x10,0x14, + 0x70,0x00,0x00,0x01,0x08,0x12,0x76,0xe1,0x3a,0x01,0x01,0x8e,0x00,0x00,0x01,0x09, + 0x12,0x70,0x10,0x14,0x70,0x00,0x00,0x01,0x0a,0x12,0x70,0x10,0x14,0x70,0x00,0x00, + 0x01,0x0b,0x12,0x70,0x10,0x14,0x70,0x00,0x00,0x01,0x0c,0x12,0x70,0x38,0xe1,0x3e, + 0x06,0x38,0x00,0x00,0x01,0x0d,0x12,0x70,0x10,0x26,0x80,0xe4,0x67,0x00,0x00,0x01, + 0x0e,0x12,0x70,0x10,0x14,0x70,0x00,0x00,0x01,0x0f,0x12,0x70,0x10,0x14,0x70,0x00, + 0x00,0x01,0x10,0x12,0x70,0x49,0xd0,0x67,0xff,0xf8,0x11,0x1c,0x00,0x00,0x01,0x11, + 0x12,0x70,0x11,0x70,0x0e,0x41,0x67,0x00,0x00,0x01,0x12,0x12,0x74,0xe8,0x1c,0x93, + 0x40,0xce,0x00,0x30,0x08,0x23,0x80,0x00,0x00,0x01,0x13,0x12,0x70,0x67,0x00,0xec, + 0x07,0x0e,0x00,0x00,0x01,0x14,0x12,0x70,0x10,0x14,0x70,0x00,0x00,0x01,0x15,0x12, + 0x70,0x4d,0xa0,0x39,0x02,0x13,0x80,0x00,0x00,0x01,0x16,0x12,0x70,0x55,0xa0,0x3b, + 0x01,0xf3,0x80,0x00,0x00,0x01,0x17,0x12,0x70,0x10,0x14,0x70,0x00,0x00,0x01,0x18, + 0x12,0x70,0x10,0x14,0x70,0x00,0x00,0x01,0x19,0x12,0x70,0x10,0x14,0x70,0x00,0x00, + 0x01,0x1a,0x12,0x70,0x10,0x14,0x70,0x00,0x00,0x01,0x1b,0x12,0x70,0x10,0x14,0x70, + 0x00,0x00,0x01,0x1c,0x12,0x70,0x10,0x14,0x70,0x00,0x00,0x01,0x1d,0x12,0x70,0x10, + 0x14,0x70,0x00,0x00,0x01,0x1e,0x12,0x70,0x10,0x6e,0x13,0xe1,0x1c,0x00,0x00,0x01, + 0x1f,0x12,0x70,0x10,0x14,0x70,0x00,0x00,0x01,0x20,0x12,0x70,0x10,0x14,0x70,0x00, + 0x00,0x01,0x21,0x12,0x70,0x10,0x14,0x70,0x00,0x00,0x01,0x22,0x12,0x70,0x10,0x14, + 0x70,0x00,0x00,0x01,0x23,0x12,0x70,0x10,0x14,0x70,0x00,0x00,0x01,0x24,0x12,0x70, + 0x10,0x14,0x70}; +#endif + #ifdef HAVE_RTC #ifdef __linux__ #include @@ -203,6 +237,9 @@ #ifdef HAS_DVBIN_SUPPORT .last_dvb_step = 1, #endif +#ifdef USE_DVDNAV + .dvdnav_last_audio_id=-1, +#endif }; static MPContext *mpctx = &mpctx_s; @@ -658,6 +695,14 @@ current_module="uninit_vo"; mpctx->video_out->uninit(); mpctx->video_out=NULL; +#ifdef USE_DVDNAV + if(mpctx->smpi) free_mp_image(mpctx->smpi); + mpctx->smpi=NULL; + if(mpctx->last_buffer) free(mpctx->last_buffer); + mpctx->last_buffer=NULL; + mpctx->last_start=NULL; + mpctx->last_in_size=0; +#endif } // Must be after libvo uninit, as few vo drivers (svgalib) have tty code. @@ -1114,6 +1114,7 @@ if (vo_spudec==NULL && mpctx->stream->type==STREAMTYPE_DVDNAV) { unsigned int *palette = mp_dvdnav_get_spu_clut(mpctx->stream); current_module="spudec_init_dvdnav"; + palette=NULL; vo_spudec=spudec_new_scaled(palette, mpctx->sh_video->disp_w, mpctx->sh_video->disp_h); } #endif @@ -1803,6 +1803,275 @@ return time_frame; } +// DVDNAV *FIXME* +#ifdef USE_DVDNAV +inline static void copy_mpi(mp_image_t *dmpi, mp_image_t *mpi) { + if(mpi->flags&MP_IMGFLAG_PLANAR){ + memcpy_pic(dmpi->planes[0],mpi->planes[0], mpi->w, mpi->h, + dmpi->stride[0],mpi->stride[0]); + memcpy_pic(dmpi->planes[1],mpi->planes[1], mpi->chroma_width, mpi->chroma_height, + dmpi->stride[1],mpi->stride[1]); + memcpy_pic(dmpi->planes[2], mpi->planes[2], mpi->chroma_width, mpi->chroma_height, + dmpi->stride[2],mpi->stride[2]); + } else { + memcpy_pic(dmpi->planes[0],mpi->planes[0], + mpi->w*(dmpi->bpp/8), mpi->h, + dmpi->stride[0],mpi->stride[0]); + } +} + +mp_image_t* mp_dvdnav_copympi(mp_image_t* tompi, mp_image_t* frommpi) { + if(!frommpi) return NULL; + mp_image_t* mpi; + if(frommpi->pict_type==3) return tompi; + if(tompi && tompi->w==frommpi->w && tompi->h==frommpi->h && tompi->imgfmt==frommpi->imgfmt) { + mpi=tompi; + } else { + if(tompi) free_mp_image(tompi); + if(frommpi->w==0 || frommpi->h==0) return NULL; + mpi=new_mp_image(frommpi->w,frommpi->h); + if(!mpi) return NULL; + mp_image_setfmt(mpi,frommpi->imgfmt); + if (mpi->imgfmt == IMGFMT_IF09) + { + mpi->planes[0]=memalign(64, mpi->bpp*mpi->width*(mpi->height+2)/8+ + mpi->chroma_width*mpi->chroma_height); + /* delta table, just for fun ;) */ + mpi->planes[3]=mpi->planes[0]+2*(mpi->chroma_width*mpi->chroma_height); + } + else + mpi->planes[0]=memalign(64, mpi->bpp*mpi->width*(mpi->height+2)/8); + if(mpi->flags&MP_IMGFLAG_PLANAR){ + // YV12/I420/YVU9/IF09. feel free to add other planar formats here... + if(!mpi->stride[0]) mpi->stride[0]=mpi->width; + if(!mpi->stride[1]) mpi->stride[1]=mpi->stride[2]=mpi->chroma_width; + if(mpi->flags&MP_IMGFLAG_SWAPPED){ + // I420/IYUV (Y,U,V) + mpi->planes[1]=mpi->planes[0]+mpi->width*mpi->height; + mpi->planes[2]=mpi->planes[1]+mpi->chroma_width*mpi->chroma_height; + } else { + // YV12,YVU9,IF09 (Y,V,U) + mpi->planes[2]=mpi->planes[0]+mpi->width*mpi->height; + mpi->planes[1]=mpi->planes[2]+mpi->chroma_width*mpi->chroma_height; + } + } else { + if(!mpi->stride[0]) mpi->stride[0]=mpi->width*mpi->bpp/8; + } + } + mpi->flags|=MP_IMGFLAG_ALLOCATED; + copy_mpi(mpi,frommpi); + return mpi; +} + +static void* mp_dvdnav_decode_video_pre(int *in_size, unsigned char **start, + mp_image_t* decoded_frame) { +if (mp_dvdnav_iscellchage(mpctx->stream,0)) { + mp_dvdnav_wait_read(mpctx->stream, 1, 1); + if(mpctx->smpi) free_mp_image(mpctx->smpi); + mpctx->smpi=NULL; + if(mpctx->last_buffer) free(mpctx->last_buffer); + mpctx->last_buffer=NULL; + mpctx->last_in_size=0; + if(mpctx->d_sub) dvdsub_id = -2; + if (mpctx->sh_video) { + mpctx->d_video->pts=0.0f; + mpctx->sh_video->pts=0.0f; + mpctx->sh_video->i_pts=0.0f; + mpctx->sh_video->last_pts=0.0f; + mpctx->sh_video->num_buffered_pts=0; + mpctx->sh_video->num_frames=0; + mpctx->sh_video->num_frames_decoded=0; + mpctx->sh_video->timer=0.0f; + mpctx->sh_video->stream_delay=0.0f; + mpctx->demuxer->stream_pts=MP_NOPTS_VALUE; + } + if (mpctx->sh_audio) { + ds_free_packs(mpctx->d_audio); + audio_delay -= mpctx->sh_audio->stream_delay; + mpctx->delay=-audio_delay; + mpctx->audio_out->reset(); + resync_audio_stream(mpctx->sh_audio); + } + mpctx->sh_video->timer=0; + audio_delay=0.0f; + correct_pts=0; + mpctx->d_video->eof=mpctx->d_audio->eof=mpctx->stream->eof=0; + mp_dvdnav_wait_read(mpctx->stream, 0, 1); + mp_dvdnav_iscellchage(mpctx->stream,1); + } +if (*in_size<0 && !mpctx->last_buffer && mpctx->smpi && !mpctx->libmpeg2_count) decoded_frame=mpctx->smpi; +mpctx->dup_frame=0; +if (*in_size<0 && mpctx->last_buffer) { + mpctx->dup_frame=1; + if (!mpctx->libmpeg2_count) { + mpctx->libmpeg2_count=5; +#ifdef VDCTRL_SET_CODEC_FLAG_LOW_DELAY + vd_set_codec_flag_low_delay(mpctx->sh_video, 1); +#endif + } + if (mpctx->last_start) { + *start=mpctx->last_start; + *in_size=mpctx->last_in_size; + memcpy(*start,mpctx->last_buffer,*in_size); + } else { + *start=mpctx->last_buffer; + *in_size=mpctx->last_in_size; + } + } +return decoded_frame; +} + +static void* mp_dvdnav_decode_video_post(int in_size, unsigned char *start, + mp_image_t* decoded_frame, sh_video_t *sh_video, int drop_frame) { + +if(in_size<0) { + if (mpctx->last_buffer) { + free(mpctx->last_buffer); + mpctx->last_buffer=NULL; + mpctx->last_in_size=0; + } + float len = demuxer_get_time_length(mpctx->demuxer); + if ((mpctx->sh_video->pts>=len || !mpctx->smpi) && mpctx->sh_video->pts>0.0) { + mp_dvdnav_still_skip(mpctx->stream); + mp_dvdnav_wait_skip(mpctx->stream); + } + mpctx->sh_video->pts+=1/mpctx->sh_video->fps; + } else { + if(mpctx->dup_frame) { + if (mpctx->libmpeg2_count) mpctx->libmpeg2_count--; + if (!mpctx->libmpeg2_count) { +#ifdef VDCTRL_SET_CODEC_FLAG_LOW_DELAY + vd_set_codec_flag_low_delay(mpctx->sh_video, 0); +#endif + if(mpctx->last_buffer) free(mpctx->last_buffer); + mpctx->last_buffer=NULL; + mpctx->last_in_size=0; + if(!decoded_frame && !mpctx->smpi) { + mp_msg(MSGT_CPLAYER,MSGL_ERR,"Can't decode still frame.\nPlease try to -vfm ffmpeg options.\n"); + mpctx->eof=1; + } + } else { + if(!decoded_frame && mpctx->last_buffer) { + start=mpctx->last_start; + memcpy(start,emptyframe,sizeof(emptyframe)); + in_size=sizeof(emptyframe); + decoded_frame = decode_video(sh_video, start, in_size, drop_frame, + sh_video->pts); + } + } + } else { + if(mpctx->last_buffer) free(mpctx->last_buffer); + mpctx->last_in_size=in_size; + mpctx->last_buffer=malloc(in_size); + mpctx->last_start=start; + if (mpctx->last_buffer) memcpy(mpctx->last_buffer,start,in_size); else mpctx->last_in_size=-1; + } + if(decoded_frame && mpctx->smpi!=decoded_frame) mpctx->smpi=mp_dvdnav_copympi(mpctx->smpi,decoded_frame); + } +return decoded_frame; +} + +static int mp_dvdnav_audio_handle() { +int dvdnav_audio=mp_dvdnav_get_audio(mpctx->stream); +int current_id=mpctx->demuxer->audio->id; +int i,demux_id,nav_id,res; + +res=-1; +nav_id=mp_dvdnav_get_logical_audio(mpctx->stream, dvdnav_audio); +for(i=0;i<8;i++) { + demux_id=i; + if(demux_control(mpctx->demuxer, DEMUXER_CTRL_GET_AUDIO, &demux_id)!=DEMUXER_CTRL_OK) continue; + if(demux_id==-1) continue; + if((demux_id & 0x0f)==(nav_id & 0x0f)) {res=demux_id; break;} + } +dvdnav_audio=res; +if(dvdnav_audio==-1) return; +if(current_id==dvdnav_audio) return; +audio_id = demuxer_switch_audio(mpctx->demuxer, dvdnav_audio); +if (mpctx->dvdnav_last_audio_id==dvdnav_audio) return; +mpctx->dvdnav_last_audio_id=dvdnav_audio; +if((current_id & 0x0F)==(dvdnav_audio &0x0F)) return; + +if(audio_id == -2 || (audio_id > -1 && mpctx->demuxer->audio->id != current_id && current_id != -2)) + uninit_player(INITED_AO | INITED_ACODEC); +if(audio_id > -1 && mpctx->demuxer->audio->id != current_id) { + sh_audio_t *sh2; + sh2 = mpctx->demuxer->a_streams[mpctx->demuxer->audio->id]; + if(sh2) { + sh2->ds = mpctx->demuxer->audio; + mpctx->sh_audio = sh2; + reinit_audio_chain(); + } + } +return; +} + +static void mp_dvdnav_highlight_handle(int stream_is_change) { +nav_highlight_t highlight; +spu_clut_t *spu_clut; + +if (!dvdnav_color_spu) return; +if (dvdnav_color_spu_flg==-1) { + dvdnav_color_spu_flg=0; + if (mpctx->video_out) { + if (!dvdnav_color_spu_flg && mpctx->video_out->control(VOCTRL_YUVSPU_SUPPORT,NULL)==VO_TRUE) + dvdnav_color_spu_flg=DVDNAV_SPU_YUV; + if (!dvdnav_color_spu_flg && mpctx->video_out->control(VOCTRL_YUYSPU_SUPPORT,NULL)==VO_TRUE) + dvdnav_color_spu_flg=DVDNAV_SPU_YUY; + if (!dvdnav_color_spu_flg && mpctx->video_out->control(VOCTRL_RGBSPU_SUPPORT,NULL)==VO_TRUE) + dvdnav_color_spu_flg=DVDNAV_SPU_RGB; + if (!dvdnav_color_spu_flg && mpctx->video_out->control(VOCTRL_BGRSPU_SUPPORT,NULL)==VO_TRUE) + dvdnav_color_spu_flg=DVDNAV_SPU_BGR; +// if (!dvdnav_color_spu_flg) +// mp_msg(MSGT_CPLAYER,MSGL_INFO,MSGTR_MPDVDNAV_NoColorSpu); + } + } +spu_clut = mp_dvdnav_get_spu_clut(mpctx->stream); +mp_dvdnav_get_highlight(mpctx->stream,&highlight); +if (highlight.sx==0 && highlight.sy==0 && highlight.ex==0 && highlight.ey==0) { + if (stream_is_change) { + spudec_update_palette(vo_spudec,spu_clut); + spudec_dvdnav_mode(vo_spudec, 0, dvdnav_color_spu_flg); /* spu menu button off */ + spudec_dvdnav_area(vo_spudec,highlight.sx,highlight.sy,highlight.ex, + highlight.ey,highlight.palette); /* set spu button area & palette */ + if(vo_spudec) spudec_reset(vo_spudec); + vo_osd_changed(OSDTYPE_SPU); + } + } else { + spudec_update_palette(vo_spudec,spu_clut); + spudec_dvdnav_mode(vo_spudec, 1, dvdnav_color_spu_flg); /* spu menu button on */ + spudec_dvdnav_area(vo_spudec,highlight.sx,highlight.sy,highlight.ex, + highlight.ey,highlight.palette); /* set spu button area & palette */ + vo_osd_changed(OSDTYPE_SPU); + if (!vo_spudec || !spudec_visible(vo_spudec)) { + osd_set_nav_box(highlight.sx,highlight.sy,highlight.ex,highlight.ey); + vo_osd_changed(OSDTYPE_DVDNAV); + } else { + osd_set_nav_box(0,0,0,0); + vo_osd_changed(OSDTYPE_DVDNAV); + } + } +} + +static void mp_dvdnav_spu_handle() { +if(!mp_dvdnav_is_spu_change(mpctx->stream)) return; +int dvdnav_spu=mp_dvdnav_get_spu(mpctx->stream); +if (!mpctx->d_sub) return; +if(dvdnav_spu<0) dvdnav_spu=-2; +if (mpctx->d_sub) { + dvdsub_id = dvdnav_spu; + mpctx->d_sub->id = dvdnav_spu; + } +return; +} + +static int mp_dvdnav_is_stream_change() { +if (!mp_dvdnav_is_change(mpctx->stream)) return 0; +mp_dvdnav_set_audio_channels(mpctx->stream,mpctx->demuxer); +return 1; +} +#endif + static void adjust_sync_and_print_status(int between_frames, float timing_error) { current_module="av_sync"; @@ -2132,7 +2132,7 @@ *blit_frame = 0; // Don't blit if we hit EOF if (!correct_pts) { unsigned char* start=NULL; - void *decoded_frame; + void *decoded_frame=NULL; int drop_frame=0; int in_size; @@ -2140,6 +2140,14 @@ frame_time = sh_video->next_frame_time; in_size = video_read_frame(sh_video, &sh_video->next_frame_time, &start, force_fps); +#ifdef USE_DVDNAV + if (mpctx->stream->type==STREAMTYPE_DVDNAV && in_size < 0) { + if(mp_dvdnav_isreallyeof(mpctx->stream)) return -1; + if (mpctx->d_video) mpctx->d_video->eof=0; + if (mpctx->d_audio) mpctx->d_audio->eof=0; + mpctx->stream->eof=0; + } else +#endif if (in_size < 0) return -1; if (in_size > max_framesize) @@ -2169,8 +2169,17 @@ update_subtitles(sh_video, mpctx->d_sub, 0); update_osd_msg(); current_module = "decode_video"; +#ifdef USE_DVDNAV + if (mpctx->stream->type==STREAMTYPE_DVDNAV) + decoded_frame=mp_dvdnav_decode_video_pre(&in_size,&start,decoded_frame); + if(in_size>0 && !decoded_frame) +#endif decoded_frame = decode_video(sh_video, start, in_size, drop_frame, sh_video->pts); +#ifdef USE_DVDNAV + if (mpctx->stream->type==STREAMTYPE_DVDNAV) + decoded_frame=mp_dvdnav_decode_video_post(in_size,start,decoded_frame,sh_video, drop_frame); +#endif current_module = "filter_video"; *blit_frame = (decoded_frame && filter_video(sh_video, decoded_frame, sh_video->pts)); @@ -3513,6 +3513,15 @@ } +#ifdef USE_DVDNAV +if(mpctx->smpi) free_mp_image(mpctx->smpi); +mpctx->smpi=NULL; +if (mpctx->stream->type==STREAMTYPE_DVDNAV) { + mp_dvdnav_wait_read(mpctx->stream, 0, 1); + mp_dvdnav_iscellchage(mpctx->stream,1); + } +#endif + while(!mpctx->eof){ float aq_sleep_time=0; if(!mpctx->sh_audio && mpctx->d_audio->sh) { @@ -3567,6 +3567,20 @@ } } +#ifdef USE_DVDNAV +if (mpctx->stream->type==STREAMTYPE_DVDNAV) { + if (mp_dvdnav_is_stream_change()) { + mp_dvdnav_audio_handle(); + mp_dvdnav_spu_handle(); +#ifdef HAVE_NEW_GUI + if ( use_gui ) guiGetEvent( guiSetStream,(char *)mpctx->stream ); +#endif + mp_dvdnav_highlight_handle(1); + } + else + mp_dvdnav_highlight_handle(0); + } +#endif // ========================================================================== // current_module="draw_osd"; @@ -3646,7 +3646,7 @@ } // end if(mpctx->sh_video) #ifdef USE_DVDNAV - if (mpctx->stream->type == STREAMTYPE_DVDNAV) { + if (mpctx->stream->type == STREAMTYPE_DVDNAV && dvdnav_color_spu==0) { nav_highlight_t hl; mp_dvdnav_get_highlight (mpctx->stream, &hl); osd_set_nav_box (hl.sx, hl.sy, hl.ex, hl.ey); diff -Naur MPlayer-r23256.orig/stream/stream_dvdnav.c MPlayer-r23256/stream/stream_dvdnav.c --- MPlayer-r23256.orig/stream/stream_dvdnav.c 2007-05-08 02:14:58.000000000 +0200 +++ MPlayer-r23256/stream/stream_dvdnav.c 2007-05-08 02:35:59.000000000 +0200 @@ -27,7 +27,7 @@ int track; char* device; } stream_priv_dflts = { - 0, + -1, NULL }; @@ -52,6 +52,7 @@ static dvdnav_priv_t * new_dvdnav_stream(char * filename) { char * title_str; dvdnav_priv_t *priv; + int i; if (!filename) return NULL; @@ -138,6 +139,18 @@ } } +static int dvdtimetomsec(dvd_time_t *dt) +{ + static int framerates[4] = {0, 2500, 0, 2997}; + int framerate = framerates[(dt->frame_u & 0xc0) >> 6]; + int msec = (((dt->hour & 0xf0) >> 3) * 5 + (dt->hour & 0x0f)) * 3600000; + msec += (((dt->minute & 0xf0) >> 3) * 5 + (dt->minute & 0x0f)) * 60000; + msec += (((dt->second & 0xf0) >> 3) * 5 + (dt->second & 0x0f)) * 1000; + if(framerate > 0) + msec += (((dt->frame_u & 0x30) >> 3) * 5 + (dt->frame_u & 0x0f)) * 100000 / framerate; + return msec; +} + static int dvdnav_stream_read(dvdnav_priv_t * priv, unsigned char *buf, int *len) { int event = DVDNAV_NOP; @@ -165,8 +178,12 @@ dvdnav_still_event_t *still_event = (dvdnav_still_event_t*)(buf); //if (priv->started) dvd_nav_still=1; //else - dvdnav_still_skip(priv->dvdnav); // don't let dvdnav stall on this image - +// dvdnav_still_skip(priv->dvdnav); // don't let dvdnav stall on this image + priv->still_length=still_event->length; + if (priv->still_length && priv->still_length!=255) + priv->duration = priv->still_length * 1000; + else + priv->duration = 0; break; } case DVDNAV_HIGHLIGHT: { @@ -174,9 +191,25 @@ break; } case DVDNAV_CELL_CHANGE: { + priv->wait_skip=0; + priv->audio_change = 1; + priv->spu_change = 1; + priv->stream_change = 1; dvdnav_cell_change_event_t *ev = (dvdnav_cell_change_event_t*)buf; if(ev->pgc_length) priv->duration = ev->pgc_length/90; + priv->start_pts = ev->cell_start/90; + priv->vts_domain=dvdnav_is_domain_vts(priv->dvdnav); + break; + } + case DVDNAV_AUDIO_STREAM_CHANGE: { + priv->stream_change = 1; + priv->audio_change = 1; + break; + } + case DVDNAV_SPU_STREAM_CHANGE: { + priv->stream_change = 1; + priv->spu_change = 1; break; } case DVDNAV_SPU_CLUT_CHANGE: { @@ -185,8 +218,16 @@ break; } case DVDNAV_WAIT: - dvdnav_wait_skip(priv->dvdnav); +// dvdnav_wait_skip(priv->dvdnav); + if(priv->wait_skip && !priv->wait) dvdnav_wait_skip(priv->dvdnav); else priv->wait=1; break; + case DVDNAV_VTS_CHANGE: { + priv->wait_skip=0; + priv->audio_change = 1; + priv->spu_change = 1; + priv->stream_change = 1; + break; + } } *len=0; @@ -243,6 +284,7 @@ int event; dvdnav_priv_t* priv=s->priv; + if(priv->wait_read) {len=-1; return len;} len=0; if(!s->end_pos) update_title_len(s); @@ -255,25 +297,37 @@ return 0; } switch (event) { - case DVDNAV_STOP: + case DVDNAV_STOP: { priv->eofstream=1; return len; } case DVDNAV_BLOCK_OK: case DVDNAV_NAV_PACKET: return len; + case DVDNAV_STILL_FRAME: return len; + case DVDNAV_WAIT: { if(priv->wait) return len; break; } case DVDNAV_VTS_CHANGE: { int tit = 0, part = 0; + priv->cell_change=1; + priv->wait_skip=0; + priv->wait=0; dvdnav_vts_change_event_t *vts_event = (dvdnav_vts_change_event_t *)s->buffer; mp_msg(MSGT_CPLAYER,MSGL_INFO, "DVDNAV, switched to title: %d\r\n", vts_event->new_vtsN); s->end_pos = 0; + priv->start_pts = 0; update_title_len(s); + if(priv->wait_read_automode) priv->wait_read=1; if(dvdnav_current_title_info(priv->dvdnav, &tit, &part) == DVDNAV_STATUS_OK) { mp_msg(MSGT_CPLAYER,MSGL_V, "\r\nDVDNAV, NEW TITLE %d\r\n", tit); dvdnav_get_highlight (priv, 0); - if(priv->title > 0 && tit != priv->title) + if(priv->title > 0 && tit != priv->title) { return 0; } + } break; } case DVDNAV_CELL_CHANGE: { + priv->cell_change=1; + priv->wait_skip=0; + priv->wait=0; + if(priv->wait_read_automode) priv->wait_read=1; if(priv->title > 0 && dvd_last_chapter > 0) { int tit=0, part=0; if(dvdnav_current_title_info(priv->dvdnav, &tit, &part) == DVDNAV_STATUS_OK && part > dvd_last_chapter) @@ -383,12 +437,12 @@ } if(dvd_chapter > 0) dvdnav_part_play(priv->dvdnav, p->track, dvd_chapter); - } else if(p->track == -1) + } else if(p->track == 0) dvdnav_menu_call(priv->dvdnav, DVD_MENU_Root); - else { + /*else { // **FIXME** disable to test still frame with still_length mp_msg(MSGT_OPEN,MSGL_INFO,"dvdnav_stream, you didn't specify a track number (as in dvdnav://1), playing whole disc\n"); dvdnav_menu_call(priv->dvdnav, DVD_MENU_Title); - } + }*/ if(dvd_angle > 1) dvdnav_angle_change(priv->dvdnav, dvd_angle); @@ -401,9 +455,8 @@ stream->type = STREAMTYPE_DVDNAV; stream->priv=(void*)priv; *file_format = DEMUXER_TYPE_MPEG_PS; - update_title_len(stream); - if(!stream->pos) + if(!stream->pos && p->track>0) mp_msg(MSGT_OPEN,MSGL_ERR, "INIT ERROR: %d, couldn't get init pos %s\r\n", status, dvdnav_err_to_string(priv->dvdnav)); mp_msg(MSGT_OPEN,MSGL_INFO, "Remember to disable MPlayer's cache when playing dvdnav:// streams (adding -nocache to your command line)\r\n"); @@ -467,6 +520,7 @@ This last call always works well */ status = dvdnav_mouse_activate(nav, pci, priv->mousex, priv->mousey); + if(status == DVDNAV_STATUS_OK) reset = 1; break; default: mp_msg(MSGT_CPLAYER, MSGL_V, "Unknown DVDNAV cmd %d\n", cmd); @@ -637,10 +691,160 @@ dvdnav_priv_t *priv = (dvdnav_priv_t *) stream->priv; dvdnav_highlight_event_t hlev = priv->hlev; + dvdnav_get_highlight (priv, 1); + hl->sx = hlev.sx; hl->sy = hlev.sy; hl->ex = hlev.ex; hl->ey = hlev.ey; + + hl->palette = hlev.palette; + hl->pts = hlev.pts; + hl->buttonN = hlev.buttonN; +} + +// dvdnav stream is really eof or still,wait,etc. +int mp_dvdnav_isreallyeof(stream_t *stream) { + dvdnav_priv_t * priv=(dvdnav_priv_t*)stream->priv; + return priv->eofstream; +} + +int mp_dvdnav_still_skip(stream_t *stream) { + dvdnav_priv_t * priv=(dvdnav_priv_t*)stream->priv; + if (priv->still_length==0 || priv->still_length==255) return 0; + dvdnav_still_skip(priv->dvdnav); + return 1; +} + +int mp_dvdnav_wait_skip(stream_t *stream) { + dvdnav_priv_t * priv=(dvdnav_priv_t*)stream->priv; + if (!priv->wait) return 0; + priv->wait=0; + dvdnav_wait_skip(priv->dvdnav); + return 1; +} + +// query and/or clear cell/vts change +int mp_dvdnav_iscellchage(stream_t *stream, int clear) { + dvdnav_priv_t * priv=(dvdnav_priv_t*)stream->priv; + if (!priv->cell_change) return 0; + if (clear) priv->cell_change=0; + return 1; +} + +// set/reset wait and auto mode wait (suspensed block read) +void mp_dvdnav_wait_read(stream_t *stream, int mode, int automode) { + dvdnav_priv_t * priv=(dvdnav_priv_t*)stream->priv; + if (mode>=0) priv->wait_read=mode; + if (automode>=0) priv->wait_read_automode=automode; + return; +} + +int mp_dvdnav_get_audio(stream_t *stream) { + dvdnav_priv_t * priv=(dvdnav_priv_t*)stream->priv; + return dvdnav_get_active_audio_stream(priv->dvdnav); +} + +int mp_dvdnav_get_logical_audio(stream_t *stream, int id) { + dvdnav_priv_t * priv=(dvdnav_priv_t*)stream->priv; + uint8_t audio_num = id; + return dvdnav_get_audio_logical_stream(priv->dvdnav,audio_num); +} + +int mp_dvdnav_get_spu(stream_t *stream) { + dvdnav_priv_t * priv=(dvdnav_priv_t*)stream->priv; + return dvdnav_get_active_spu_stream(priv->dvdnav); +} + +int mp_dvdnav_is_audio_change(stream_t *stream) { + dvdnav_priv_t * priv=(dvdnav_priv_t*)stream->priv; + if(!priv->audio_change) return 0; + priv->audio_change=0; + return 1; +} + +int mp_dvdnav_is_spu_change(stream_t *stream) { + dvdnav_priv_t * priv=(dvdnav_priv_t*)stream->priv; + if(!priv->spu_change) return 0; + priv->audio_change=0; + return 1; +} + +int mp_dvdnav_is_change(stream_t *stream) { + int tit = 0, part = 0, tit_nr = 0, part_nr = 0; + dvdnav_priv_t * priv=(dvdnav_priv_t*)stream->priv; + if(!priv->stream_change) return 0; + priv->stream_change=0; + dvdnav_current_title_info(priv->dvdnav, &tit, &part); + dvdnav_get_number_of_titles(priv->dvdnav,&tit_nr); + dvdnav_get_number_of_parts(priv->dvdnav,tit,&part_nr); + priv->titles_nr = tit_nr; + priv->chapters_nr = part_nr; + priv->title=tit; + priv->part=part; + int i,sub_id; + uint16_t language; + priv->nr_of_subtitles=0; + priv->nr_of_channels=0; + if (!priv->vts_domain) return 1; + for(i=0;i<32;i++) { + priv->subtitles[priv->nr_of_subtitles].id=-1; + if (-1==(sub_id=dvdnav_get_spu_logical_stream(priv->dvdnav,i))) continue; + language=dvdnav_spu_stream_to_lang(priv->dvdnav, sub_id); + priv->subtitles[priv->nr_of_subtitles].language=language; + priv->subtitles[priv->nr_of_subtitles].id=sub_id; + priv->nr_of_subtitles++; + } + for(i=0;i<32;i++) { + priv->audio_streams[priv->nr_of_channels].id=-1; + if (-1==(sub_id=dvdnav_get_audio_logical_stream(priv->dvdnav,i))) continue; + language=dvdnav_audio_stream_to_lang(priv->dvdnav, sub_id); + priv->audio_streams[priv->nr_of_channels].language=language; + priv->audio_streams[priv->nr_of_channels].id=sub_id; + priv->audio_streams[priv->nr_of_channels].type=0; + priv->audio_streams[priv->nr_of_channels].channels=0; + priv->nr_of_channels++; + } + return 1; +} + + +void mp_dvdnav_set_audio_channels(stream_t *stream,demuxer_t *demuxer) { +int i,res,id,nav_id, demux_id; +dvdnav_priv_t * priv=(dvdnav_priv_t*)stream->priv; + +for(id=0;idnr_of_channels;id++) { + res=-1; + nav_id=mp_dvdnav_get_logical_audio(stream, id); + for(i=0;i<8;i++) { + demux_id=i; + if(demux_control(demuxer, DEMUXER_CTRL_GET_AUDIO, &demux_id)!=DEMUXER_CTRL_OK) continue; + if(demux_id==-1) continue; + if((demux_id & 0x0f)==(nav_id & 0x0f)) {res=demux_id; break;} + } + if(res!=-1) { + priv->audio_streams[id].id=res; + switch(res & 0xE0){ // 1110 0000 b (high 3 bit: type low 5: id) + case 0x00: priv->audio_streams[id].type=2; break; // mpeg + case 0xA0: priv->audio_streams[id].type=4; break; // dvd pcm + case 0x80: if((res & 0xF8) == 0x88) priv->audio_streams[id].type=6; //dts + else priv->audio_streams[id].type=0; break; // ac3 + } + } + } +} + +void mp_dvdnav_play_title(stream_t *stream, int title) { +dvdnav_priv_t * priv=(dvdnav_priv_t*)stream->priv; + +dvdnav_title_play(priv->dvdnav, title); +} + +void mp_dvdnav_play_chapter(stream_t *stream, int chapter) { +dvdnav_priv_t * priv=(dvdnav_priv_t*)stream->priv; + +if(priv->title==0) return; +dvdnav_part_play(priv->dvdnav, priv->title, chapter); } stream_info_t stream_info_dvdnav = { diff -Naur MPlayer-r23256.orig/stream/stream_dvdnav.h MPlayer-r23256/stream/stream_dvdnav.h --- MPlayer-r23256.orig/stream/stream_dvdnav.h 2007-05-08 02:14:58.000000000 +0200 +++ MPlayer-r23256/stream/stream_dvdnav.h 2007-05-08 02:35:59.000000000 +0200 @@ -12,8 +12,14 @@ typedef struct { uint16_t sx, sy; uint16_t ex, ey; + + uint32_t palette; + uint32_t pts; + uint32_t buttonN; } nav_highlight_t; +typedef uint32_t spu_clut_t[16]; + typedef struct { dvdnav_t * dvdnav; /* handle to libdvdnav stuff */ char * filename; /* path */ @@ -22,12 +28,33 @@ unsigned int sleep_until; /* timer */ int started; /* Has mplayer initialization finished? */ unsigned int duration; /* in milliseconds */ + unsigned int start_pts; /* in milliseconds */ int mousex, mousey; int title; unsigned int spu_clut[16], spu_set; dvdnav_highlight_event_t hlev; + int eofstream; /* stream eof flag */ + int still_length; + int wait; + int wait_skip; /* wait skip disable */ + int cell_change; + int audio_change; + int spu_change; + int wait_read_automode; + int wait_read; + int stream_change; + int vts_domain; +// with gui + int part; + int titles_nr; + int chapters_nr; + int nr_of_channels; + stream_language_t audio_streams[32]; + int nr_of_subtitles; + stream_language_t subtitles[32]; } dvdnav_priv_t; +extern int dvdnav_color_spu; int dvdnav_number_of_subs(stream_t *stream); int dvdnav_aid_from_lang(stream_t *stream, unsigned char *language); @@ -38,5 +65,17 @@ void mp_dvdnav_update_mouse_pos(stream_t *stream, int32_t x, int32_t y, int* button); void mp_dvdnav_get_highlight (stream_t *stream, nav_highlight_t *hl); unsigned int *mp_dvdnav_get_spu_clut(stream_t *stream); - +int mp_dvdnav_isreallyeof(stream_t *stream); +int mp_dvdnav_still_skip(stream_t *stream); +int mp_dvdnav_wait_skip(stream_t *stream); +int mp_dvdnav_iscellchage(stream_t *stream, int clear); +void mp_dvdnav_wait_read(stream_t *stream, int mode, int automode); +int mp_dvdnav_get_audio(stream_t *stream); +int mp_dvdnav_get_logical_audio(stream_t *stream, int id); +int mp_dvdnav_get_spu(stream_t *stream); +int mp_dvdnav_is_audio_change(stream_t *stream); +int mp_dvdnav_is_spu_change(stream_t *stream); +int mp_dvdnav_is_change(stream_t *stream); +void mp_dvdnav_play_title(stream_t *stream, int title); +void mp_dvdnav_play_chapter(stream_t *stream, int chapter); #endif geexbox-1.1/packages/MPlayer/patches/701_colorspu.diff0000644000175000017500000052771210641745504020777 0ustar benben* from http://onebit.hu/pub/mplayer/dvdnav/20070308/colorspu.patch diff -Naur MPlayer-r23256.orig/libmenu/menu.c MPlayer-r23256/libmenu/menu.c --- MPlayer-r23256.orig/libmenu/menu.c 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libmenu/menu.c 2007-05-08 02:56:36.000000000 +0200 @@ -21,6 +21,7 @@ #include "m_option.h" #include "m_struct.h" #include "menu.h" +#include "libvo/video_out.h" #include "input/input.h" #include "input/joystick.h" @@ -272,7 +273,7 @@ ///////////////////////////// Helpers //////////////////////////////////// -typedef void (*draw_alpha_f)(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride); +typedef void (*draw_alpha_f)(int w,int h, int dp, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride); inline static draw_alpha_f get_draw_alpha(uint32_t fmt) { switch(fmt) { @@ -406,7 +407,7 @@ while (*txt) { int c=utf8_get_char(&txt); if ((font=vo_font->font[c])>=0 && (x + vo_font->width[c] <= mpi->w) && (y + vo_font->pic_a[font]->h <= mpi->h)) - draw_alpha(vo_font->width[c], vo_font->pic_a[font]->h, + draw_alpha(vo_font->width[c], vo_font->pic_a[font]->h,DEST_PLANES_Y, vo_font->pic_b[font]->bmp+vo_font->start[c], vo_font->pic_a[font]->bmp+vo_font->start[c], vo_font->pic_a[font]->w, @@ -576,7 +577,7 @@ if(font >= 0) { int cs = (vo_font->pic_a[font]->h - vo_font->height) / 2; if ((sx + vo_font->width[c] < xmax) && (sy + vo_font->height < ymax) ) - draw_alpha(vo_font->width[c], vo_font->height, + draw_alpha(vo_font->width[c], vo_font->height, DEST_PLANES_Y, vo_font->pic_b[font]->bmp+vo_font->start[c] + cs * vo_font->pic_a[font]->w, vo_font->pic_a[font]->bmp+vo_font->start[c] + @@ -684,7 +685,7 @@ char pic[stride*h],pic_alpha[stride*h]; memset(pic,g,stride*h); memset(pic_alpha,alpha,stride*h); - draw_alpha(w,h,pic,pic_alpha,stride, + draw_alpha(w,h,DEST_PLANES_Y,pic,pic_alpha,stride, mpi->planes[0] + y * mpi->stride[0] + x * (mpi->bpp>>3), mpi->stride[0]); } diff -Naur MPlayer-r23256.orig/libmpcodecs/vf_expand.c MPlayer-r23256/libmpcodecs/vf_expand.c --- MPlayer-r23256.orig/libmpcodecs/vf_expand.c 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libmpcodecs/vf_expand.c 2007-05-08 02:56:36.000000000 +0200 @@ -82,7 +82,7 @@ // TODO clear left and right side of the image if needed } -static void draw_func(int x0,int y0, int w,int h,unsigned char* src, unsigned char *srca, int stride){ +static void draw_func(int x0,int y0, int w,int h,int dp,unsigned char* src, unsigned char *srca, int stride){ unsigned char* dst; if(!vo_osd_changed_flag && vf->dmpi->planes[0]==vf->priv->fb_ptr){ // ok, enough to update the area inside the video, leave the black bands @@ -110,19 +110,19 @@ switch(vf->dmpi->imgfmt){ case IMGFMT_BGR15: case IMGFMT_RGB15: - vo_draw_alpha_rgb15(w,h,src,srca,stride,dst,vf->dmpi->stride[0]); + vo_draw_alpha_rgb15(w,h,dp,src,srca,stride,dst,vf->dmpi->stride[0]); break; case IMGFMT_BGR16: case IMGFMT_RGB16: - vo_draw_alpha_rgb16(w,h,src,srca,stride,dst,vf->dmpi->stride[0]); + vo_draw_alpha_rgb16(w,h,dp,src,srca,stride,dst,vf->dmpi->stride[0]); break; case IMGFMT_BGR24: case IMGFMT_RGB24: - vo_draw_alpha_rgb24(w,h,src,srca,stride,dst,vf->dmpi->stride[0]); + vo_draw_alpha_rgb24(w,h,dp,src,srca,stride,dst,vf->dmpi->stride[0]); break; case IMGFMT_BGR32: case IMGFMT_RGB32: - vo_draw_alpha_rgb32(w,h,src,srca,stride,dst,vf->dmpi->stride[0]); + vo_draw_alpha_rgb32(w,h,dp,src,srca,stride,dst,vf->dmpi->stride[0]); break; case IMGFMT_YV12: case IMGFMT_I420: @@ -131,13 +131,13 @@ case IMGFMT_IF09: case IMGFMT_Y800: case IMGFMT_Y8: - vo_draw_alpha_yv12(w,h,src,srca,stride,dst,vf->dmpi->stride[0]); + vo_draw_alpha_yv12(w,h,dp,src,srca,stride,dst,vf->dmpi->stride[0]); break; case IMGFMT_YUY2: - vo_draw_alpha_yuy2(w,h,src,srca,stride,dst,vf->dmpi->stride[0]); + vo_draw_alpha_yuy2(w,h,dp,src,srca,stride,dst,vf->dmpi->stride[0]); break; case IMGFMT_UYVY: - vo_draw_alpha_yuy2(w,h,src,srca,stride,dst+1,vf->dmpi->stride[0]); + vo_draw_alpha_yuy2(w,h,dp,src,srca,stride,dst+1,vf->dmpi->stride[0]); break; } } diff -Naur MPlayer-r23256.orig/libvo/osd.c MPlayer-r23256/libvo/osd.c --- MPlayer-r23256.orig/libvo/osd.c 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libvo/osd.c 2007-05-08 02:56:36.000000000 +0200 @@ -11,8 +11,9 @@ #include #include "cpudetect.h" #include "mangle.h" +#include "video_out.h" -#ifdef ARCH_X86 +#if defined(ARCH_X86) || defined(ARCH_X86_64) #define CAN_COMPILE_X86_ASM #endif @@ -101,152 +102,152 @@ #endif //CAN_COMPILE_X86_ASM -void vo_draw_alpha_yv12(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ +void vo_draw_alpha_yv12(int w,int h, int dp, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ #ifdef RUNTIME_CPUDETECT #ifdef CAN_COMPILE_X86_ASM // ordered by speed / fastest first if(gCpuCaps.hasMMX2) - vo_draw_alpha_yv12_MMX2(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_yv12_MMX2(w, h, dp, src, srca, srcstride, dstbase, dststride); else if(gCpuCaps.has3DNow) - vo_draw_alpha_yv12_3DNow(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_yv12_3DNow(w, h, dp, src, srca, srcstride, dstbase, dststride); else if(gCpuCaps.hasMMX) - vo_draw_alpha_yv12_MMX(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_yv12_MMX(w, h, dp, src, srca, srcstride, dstbase, dststride); else - vo_draw_alpha_yv12_X86(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_yv12_X86(w, h, dp, src, srca, srcstride, dstbase, dststride); #else - vo_draw_alpha_yv12_C(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_yv12_C(w, h, dp, src, srca, srcstride, dstbase, dststride); #endif #else //RUNTIME_CPUDETECT #ifdef HAVE_MMX2 - vo_draw_alpha_yv12_MMX2(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_yv12_MMX2(w, h, dp, src, srca, srcstride, dstbase, dststride); #elif defined (HAVE_3DNOW) - vo_draw_alpha_yv12_3DNow(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_yv12_3DNow(w, h, dp, src, srca, srcstride, dstbase, dststride); #elif defined (HAVE_MMX) - vo_draw_alpha_yv12_MMX(w, h, src, srca, srcstride, dstbase, dststride); -#elif defined(ARCH_X86) - vo_draw_alpha_yv12_X86(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_yv12_MMX(w, h, dp, src, srca, srcstride, dstbase, dststride); +#elif defined(ARCH_X86) || defined(ARCH_X86_64) + vo_draw_alpha_yv12_X86(w, h, dp, src, srca, srcstride, dstbase, dststride); #else - vo_draw_alpha_yv12_C(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_yv12_C(w, h, dp, src, srca, srcstride, dstbase, dststride); #endif #endif //!RUNTIME_CPUDETECT } -void vo_draw_alpha_yuy2(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ +void vo_draw_alpha_yuy2(int w,int h, int dp, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ #ifdef RUNTIME_CPUDETECT #ifdef CAN_COMPILE_X86_ASM // ordered by speed / fastest first if(gCpuCaps.hasMMX2) - vo_draw_alpha_yuy2_MMX2(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_yuy2_MMX2(w, h, dp, src, srca, srcstride, dstbase, dststride); else if(gCpuCaps.has3DNow) - vo_draw_alpha_yuy2_3DNow(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_yuy2_3DNow(w, h, dp, src, srca, srcstride, dstbase, dststride); else if(gCpuCaps.hasMMX) - vo_draw_alpha_yuy2_MMX(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_yuy2_MMX(w, h, dp, src, srca, srcstride, dstbase, dststride); else - vo_draw_alpha_yuy2_X86(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_yuy2_X86(w, h, dp, src, srca, srcstride, dstbase, dststride); #else - vo_draw_alpha_yuy2_C(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_yuy2_C(w, h, dp, src, srca, srcstride, dstbase, dststride); #endif #else //RUNTIME_CPUDETECT #ifdef HAVE_MMX2 - vo_draw_alpha_yuy2_MMX2(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_yuy2_MMX2(w, h, dp, src, srca, srcstride, dstbase, dststride); #elif defined (HAVE_3DNOW) - vo_draw_alpha_yuy2_3DNow(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_yuy2_3DNow(w, h, dp, src, srca, srcstride, dstbase, dststride); #elif defined (HAVE_MMX) - vo_draw_alpha_yuy2_MMX(w, h, src, srca, srcstride, dstbase, dststride); -#elif defined(ARCH_X86) - vo_draw_alpha_yuy2_X86(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_yuy2_MMX(w, h, dp, src, srca, srcstride, dstbase, dststride); +#elif defined(ARCH_X86) || defined(ARCH_X86_64) + vo_draw_alpha_yuy2_X86(w, h, dp, src, srca, srcstride, dstbase, dststride); #else - vo_draw_alpha_yuy2_C(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_yuy2_C(w, h, dp, src, srca, srcstride, dstbase, dststride); #endif #endif //!RUNTIME_CPUDETECT } -void vo_draw_alpha_uyvy(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ +void vo_draw_alpha_uyvy(int w,int h, int dp, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ #ifdef RUNTIME_CPUDETECT #ifdef CAN_COMPILE_X86_ASM // ordered by speed / fastest first if(gCpuCaps.hasMMX2) - vo_draw_alpha_uyvy_MMX2(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_uyvy_MMX2(w, h, dp, src, srca, srcstride, dstbase, dststride); else if(gCpuCaps.has3DNow) - vo_draw_alpha_uyvy_3DNow(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_uyvy_3DNow(w, h, dp, src, srca, srcstride, dstbase, dststride); else if(gCpuCaps.hasMMX) - vo_draw_alpha_uyvy_MMX(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_uyvy_MMX(w, h, dp, src, srca, srcstride, dstbase, dststride); else - vo_draw_alpha_uyvy_X86(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_uyvy_X86(w, h, dp, src, srca, srcstride, dstbase, dststride); #else - vo_draw_alpha_uyvy_C(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_uyvy_C(w, h, dp, src, srca, srcstride, dstbase, dststride); #endif #else //RUNTIME_CPUDETECT #ifdef HAVE_MMX2 - vo_draw_alpha_uyvy_MMX2(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_uyvy_MMX2(w, h, dp, src, srca, srcstride, dstbase, dststride); #elif defined (HAVE_3DNOW) - vo_draw_alpha_uyvy_3DNow(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_uyvy_3DNow(w, h, dp, src, srca, srcstride, dstbase, dststride); #elif defined (HAVE_MMX) - vo_draw_alpha_uyvy_MMX(w, h, src, srca, srcstride, dstbase, dststride); -#elif defined(ARCH_X86) - vo_draw_alpha_uyvy_X86(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_uyvy_MMX(w, h, dp, src, srca, srcstride, dstbase, dststride); +#elif defined(ARCH_X86) || defined(ARCH_X86_64) + vo_draw_alpha_uyvy_X86(w, h, dp, src, srca, srcstride, dstbase, dststride); #else - vo_draw_alpha_uyvy_C(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_uyvy_C(w, h, dp, src, srca, srcstride, dstbase, dststride); #endif #endif //!RUNTIME_CPUDETECT } -void vo_draw_alpha_rgb24(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ +void vo_draw_alpha_rgb24(int w,int h, int dp, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ #ifdef RUNTIME_CPUDETECT #ifdef CAN_COMPILE_X86_ASM // ordered by speed / fastest first if(gCpuCaps.hasMMX2) - vo_draw_alpha_rgb24_MMX2(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_rgb24_MMX2(w, h, dp, src, srca, srcstride, dstbase, dststride); else if(gCpuCaps.has3DNow) - vo_draw_alpha_rgb24_3DNow(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_rgb24_3DNow(w, h, dp, src, srca, srcstride, dstbase, dststride); else if(gCpuCaps.hasMMX) - vo_draw_alpha_rgb24_MMX(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_rgb24_MMX(w, h, dp, src, srca, srcstride, dstbase, dststride); else - vo_draw_alpha_rgb24_X86(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_rgb24_X86(w, h, dp, src, srca, srcstride, dstbase, dststride); #else - vo_draw_alpha_rgb24_C(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_rgb24_C(w, h, dp, src, srca, srcstride, dstbase, dststride); #endif #else //RUNTIME_CPUDETECT #ifdef HAVE_MMX2 - vo_draw_alpha_rgb24_MMX2(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_rgb24_MMX2(w, h, dp, src, srca, srcstride, dstbase, dststride); #elif defined (HAVE_3DNOW) - vo_draw_alpha_rgb24_3DNow(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_rgb24_3DNow(w, h, dp, src, srca, srcstride, dstbase, dststride); #elif defined (HAVE_MMX) - vo_draw_alpha_rgb24_MMX(w, h, src, srca, srcstride, dstbase, dststride); -#elif defined(ARCH_X86) - vo_draw_alpha_rgb24_X86(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_rgb24_MMX(w, h, dp, src, srca, srcstride, dstbase, dststride); +#elif defined(ARCH_X86) || defined(ARCH_X86_64) + vo_draw_alpha_rgb24_X86(w, h, dp, src, srca, srcstride, dstbase, dststride); #else - vo_draw_alpha_rgb24_C(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_rgb24_C(w, h, dp, src, srca, srcstride, dstbase, dststride); #endif #endif //!RUNTIME_CPUDETECT } -void vo_draw_alpha_rgb32(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ +void vo_draw_alpha_rgb32(int w,int h, int dp, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ #ifdef RUNTIME_CPUDETECT #ifdef CAN_COMPILE_X86_ASM // ordered by speed / fastest first if(gCpuCaps.hasMMX2) - vo_draw_alpha_rgb32_MMX2(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_rgb32_MMX2(w, h, dp, src, srca, srcstride, dstbase, dststride); else if(gCpuCaps.has3DNow) - vo_draw_alpha_rgb32_3DNow(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_rgb32_3DNow(w, h, dp, src, srca, srcstride, dstbase, dststride); else if(gCpuCaps.hasMMX) - vo_draw_alpha_rgb32_MMX(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_rgb32_MMX(w, h, dp, src, srca, srcstride, dstbase, dststride); else - vo_draw_alpha_rgb32_X86(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_rgb32_X86(w, h, dp, src, srca, srcstride, dstbase, dststride); #else - vo_draw_alpha_rgb32_C(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_rgb32_C(w, h, dp, src, srca, srcstride, dstbase, dststride); #endif #else //RUNTIME_CPUDETECT #ifdef HAVE_MMX2 - vo_draw_alpha_rgb32_MMX2(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_rgb32_MMX2(w, h, dp, src, srca, srcstride, dstbase, dststride); #elif defined (HAVE_3DNOW) - vo_draw_alpha_rgb32_3DNow(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_rgb32_3DNow(w, h, dp, src, srca, srcstride, dstbase, dststride); #elif defined (HAVE_MMX) - vo_draw_alpha_rgb32_MMX(w, h, src, srca, srcstride, dstbase, dststride); -#elif defined(ARCH_X86) - vo_draw_alpha_rgb32_X86(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_rgb32_MMX(w, h, dp, src, srca, srcstride, dstbase, dststride); +#elif defined(ARCH_X86) || defined(ARCH_X86_64) + vo_draw_alpha_rgb32_X86(w, h, dp, src, srca, srcstride, dstbase, dststride); #else - vo_draw_alpha_rgb32_C(w, h, src, srca, srcstride, dstbase, dststride); + vo_draw_alpha_rgb32_C(w, h, dp, src, srca, srcstride, dstbase, dststride); #endif #endif //!RUNTIME_CPUDETECT } @@ -288,7 +289,7 @@ mp_msg(MSGT_OSD,MSGL_INFO,"Using MMX (with tiny bit 3DNow) Optimized OnScreenDisplay\n"); #elif defined (HAVE_MMX) mp_msg(MSGT_OSD,MSGL_INFO,"Using MMX Optimized OnScreenDisplay\n"); -#elif defined(ARCH_X86) +#elif defined(ARCH_X86) || defined(ARCH_X86_64) mp_msg(MSGT_OSD,MSGL_INFO,"Using X86 Optimized OnScreenDisplay\n"); #else mp_msg(MSGT_OSD,MSGL_INFO,"Using Unoptimized OnScreenDisplay\n"); @@ -297,8 +298,10 @@ } } -void vo_draw_alpha_rgb15(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ +void vo_draw_alpha_rgb15(int w,int h, int dp, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ int y; +switch (dp) { + case DEST_PLANES_Y : for(y=0;y>5)&0x1F; + unsigned char b=(dst[x]>>10)&0x1F; + r=(((r*srca[x])>>5)+src[x])>>3; + dst[x]=(b<<10)|(g<<5)|r; + } + } + src+=srcstride; + srca+=srcstride; + dstbase+=dststride; + } + return; + case DEST_PLANES_G: + for(y=0;y>5)&0x1F; + unsigned char b=(dst[x]>>10)&0x1F; + g=(((g*srca[x])>>5)+src[x])>>3; + dst[x]=(b<<10)|(g<<5)|r; + } + } + src+=srcstride; + srca+=srcstride; + dstbase+=dststride; + } + return; + case DEST_PLANES_BR: + for(y=0;y>5)&0x1F; + unsigned char b=(dst[x]>>10)&0x1F; + b=(((b*srca[x])>>5)+src[x])>>3; + dst[x]=(b<<10)|(g<<5)|r; + } + } + src+=srcstride; + srca+=srcstride; + dstbase+=dststride; + } + return; + } } -void vo_draw_alpha_rgb16(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ +void vo_draw_alpha_rgb16(int w,int h, int dp, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ int y; +switch (dp) { + case DEST_PLANES_Y : for(y=0;y>11)&0x1F; + unsigned char g=(dst[x]>>5)&0x3F; + r=(((r*srca[x])>>5)+src[x])>>3; + dst[x]=(b<<11)|(g<<5)|r; + } + } + src+=srcstride; + srca+=srcstride; + dstbase+=dststride; + } + return; + case DEST_PLANES_G : + for(y=0;y>5)&0x3F; + unsigned char b=(dst[x]>>11)&0x1F; + g=(((g*srca[x])>>6)+src[x])>>2; + dst[x]=(b<<11)|(g<<5)|r; + } + } + src+=srcstride; + srca+=srcstride; + dstbase+=dststride; + } + return; + case DEST_PLANES_BR : + for(y=0;y>5)&0x3F; + unsigned char b=(dst[x]>>11)&0x1F; + b=(((b*srca[x])>>5)+src[x])>>3; + dst[x]=(b<<11)|(g<<5)|r; + } + } + src+=srcstride; + srca+=srcstride; + dstbase+=dststride; + } + return; + } } diff -Naur MPlayer-r23256.orig/libvo/osd.h MPlayer-r23256/libvo/osd.h --- MPlayer-r23256.orig/libvo/osd.h 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libvo/osd.h 2007-05-08 02:56:36.000000000 +0200 @@ -7,13 +7,13 @@ extern void vo_draw_alpha_init(void); // build tables -extern void vo_draw_alpha_yv12(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride); -extern void vo_draw_alpha_yuy2(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride); -extern void vo_draw_alpha_uyvy(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride); -extern void vo_draw_alpha_rgb24(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride); -extern void vo_draw_alpha_rgb32(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride); -extern void vo_draw_alpha_rgb15(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride); -extern void vo_draw_alpha_rgb16(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride); +extern void vo_draw_alpha_yv12(int w,int h, int dp, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride); +extern void vo_draw_alpha_yuy2(int w,int h, int dp, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride); +extern void vo_draw_alpha_uyvy(int w,int h, int dp, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride); +extern void vo_draw_alpha_rgb24(int w,int h, int dp, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride); +extern void vo_draw_alpha_rgb32(int w,int h, int dp, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride); +extern void vo_draw_alpha_rgb15(int w,int h, int dp, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride); +extern void vo_draw_alpha_rgb16(int w,int h, int dp, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride); #endif diff -Naur MPlayer-r23256.orig/libvo/osd_template.c MPlayer-r23256/libvo/osd_template.c --- MPlayer-r23256.orig/libvo/osd_template.c 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libvo/osd_template.c 2007-05-08 02:56:36.000000000 +0200 @@ -27,7 +27,7 @@ #define EMMS "emms" #endif -static inline void RENAME(vo_draw_alpha_yv12)(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ +static inline void RENAME(vo_draw_alpha_yv12)(int w,int h, int dp, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ int y; #if defined(FAST_OSD) && !defined(HAVE_MMX) w=w>>1; @@ -97,7 +97,7 @@ return; } -static inline void RENAME(vo_draw_alpha_yuy2)(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ +static inline void RENAME(vo_draw_alpha_yuy2)(int w,int h, int dp, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ int y; #if defined(FAST_OSD) && !defined(HAVE_MMX) w=w>>1; @@ -169,7 +169,7 @@ return; } -static inline void RENAME(vo_draw_alpha_uyvy)(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ +static inline void RENAME(vo_draw_alpha_uyvy)(int w,int h, int dp, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ int y; #if defined(FAST_OSD) w=w>>1; @@ -193,8 +193,10 @@ } } -static inline void RENAME(vo_draw_alpha_rgb24)(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ +static inline void RENAME(vo_draw_alpha_rgb24)(int w,int h, int dp, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ int y; +switch (dp) { + case DEST_PLANES_Y: #ifdef HAVE_MMX asm volatile( "pxor %%mm7, %%mm7\n\t" @@ -299,13 +301,61 @@ asm volatile(EMMS:::"memory"); #endif return; + case DEST_PLANES_RB: + for(y=0;y>8)+src[x]; + } + dst+=3; // 24bpp + } + src+=srcstride; + srca+=srcstride; + dstbase+=dststride; + } + return; + case DEST_PLANES_G: + for(y=0;y>8)+src[x]; + } + dst+=3; // 24bpp + } + src+=srcstride; + srca+=srcstride; + dstbase+=dststride; + } + return; + case DEST_PLANES_BR: + for(y=0;y>8)+src[x]; + } + dst+=3; // 24bpp + } + src+=srcstride; + srca+=srcstride; + dstbase+=dststride; + } + return; + } } -static inline void RENAME(vo_draw_alpha_rgb32)(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ +static inline void RENAME(vo_draw_alpha_rgb32)(int w,int h, int dp, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ int y; #ifdef WORDS_BIGENDIAN dstbase++; #endif +switch (dp) { + case DEST_PLANES_Y: #ifdef HAVE_MMX #ifdef HAVE_3DNOW asm volatile( @@ -464,4 +514,44 @@ asm volatile(EMMS:::"memory"); #endif return; + case DEST_PLANES_RB: + for(y=0;y>8)+src[x])&0xff; + } + } + src+=srcstride; + srca+=srcstride; + dstbase+=dststride; + } + return; + case DEST_PLANES_G: + for(y=0;y>8)+src[x])&0xff; + } + } + src+=srcstride; + srca+=srcstride; + dstbase+=dststride; + } + return; + case DEST_PLANES_BR: + for(y=0;y>8)+src[x])&0xff; + } + } + src+=srcstride; + srca+=srcstride; + dstbase+=dststride; + } + return; + } } diff -Naur MPlayer-r23256.orig/libvo/sub.c MPlayer-r23256/libvo/sub.c --- MPlayer-r23256.orig/libvo/sub.c 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libvo/sub.c 2007-05-08 02:56:36.000000000 +0200 @@ -80,6 +80,14 @@ static nav_highlight_t nav_hl; #endif +uint16_t dvdnav_sx=0; +uint16_t dvdnav_ex=0; +uint16_t dvdnav_sy=0; +uint16_t dvdnav_ey=0; +int dvdnav_show=0; +unsigned char dvdnav_image=0x7f; +unsigned char dvdnav_alpha=0x7f; + // return the real height of a char: static inline int get_height(int c,int h){ int font; @@ -141,11 +149,12 @@ } // renders the buffer -inline static void vo_draw_text_from_buffer(mp_osd_obj_t* obj,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride)){ +inline static void vo_draw_text_from_buffer(mp_osd_obj_t* obj,void (*draw_alpha)(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride)){ if (obj->allocated > 0) { draw_alpha(obj->bbox.x1,obj->bbox.y1, obj->bbox.x2-obj->bbox.x1, obj->bbox.y2-obj->bbox.y1, + DEST_PLANES_Y, obj->bitmap_buffer, obj->alpha_buffer, obj->stride); @@ -229,6 +238,45 @@ } #endif +#define max(x,y) ((x) > (y) ? (x) : (y)) +#define min(x,y) ((x) < (y) ? (x) : (y)) + +void dvdnav_box_area(int sx, int sy, int ex, int ey, int show, unsigned char image, unsigned char alpha) +{ + dvdnav_sx=min(sx,ex); + dvdnav_ex=max(sx,ex); + dvdnav_sy=min(sy,ey); + dvdnav_ey=max(sy,ey); + dvdnav_show=show; + dvdnav_image=image; + dvdnav_alpha=alpha; +} + + +inline static void vo_update_dvdnav(mp_osd_obj_t* obj,int dxs,int dys){ + +unsigned char * bitmap_buffer; +unsigned char * alpha_buffer; +int len; +int stride; + +if (dvdnav_show) + { + obj->bbox.x1=obj->x=dvdnav_sx; + obj->bbox.y1=obj->y=dvdnav_sy; + obj->bbox.x2=dvdnav_ex; + obj->bbox.y2=dvdnav_ey; + alloc_buf(obj); + len = obj->stride*(obj->bbox.y2-obj->bbox.y1); +//printf("dvdnav box image: %x alpha: %x \n",dvdnav_image,dvdnav_alpha); + memset(obj->bitmap_buffer,dvdnav_image,len); + memset(obj->alpha_buffer,dvdnav_alpha,len); + obj->flags|=OSDFLAG_BBOX|OSDFLAG_VISIBLE|OSDFLAG_CHANGED; + } + else + obj->flags&=~OSDFLAG_VISIBLE; +} + int vo_osd_progbar_type=-1; int vo_osd_progbar_value=100; // 0..256 @@ -765,7 +813,7 @@ obj->flags |= OSDFLAG_BBOX; } -inline static void vo_draw_spudec_sub(mp_osd_obj_t* obj, void (*draw_alpha)(int x0, int y0, int w, int h, unsigned char* src, unsigned char* srca, int stride)) +inline static void vo_draw_spudec_sub(mp_osd_obj_t* obj, void (*draw_alpha)(int x0, int y0, int w, int h, int dp, unsigned char* src, unsigned char* srca, int stride)) { spudec_draw_scaled(vo_spudec, obj->dxs, obj->dys, draw_alpha); } @@ -951,7 +999,7 @@ } } -void vo_draw_text(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride)){ +void vo_draw_text(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride)){ mp_osd_obj_t* obj=vo_osd_list; vo_update_osd(dxs,dys); while(obj){ diff -Naur MPlayer-r23256.orig/libvo/sub.h MPlayer-r23256/libvo/sub.h --- MPlayer-r23256.orig/libvo/sub.h 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libvo/sub.h 2007-05-08 02:56:36.000000000 +0200 @@ -112,7 +112,7 @@ //extern void vo_draw_text_osd(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride)); //extern void vo_draw_text_progbar(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride)); //extern void vo_draw_text_sub(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride)); -extern void vo_draw_text(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride)); +extern void vo_draw_text(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride)); extern void vo_remove_text(int dxs,int dys,void (*remove)(int x0,int y0, int w,int h)); void vo_init_osd(void); diff -Naur MPlayer-r23256.orig/libvo/vesa_lvo.c MPlayer-r23256/libvo/vesa_lvo.c --- MPlayer-r23256.orig/libvo/vesa_lvo.c 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libvo/vesa_lvo.c 2007-05-08 02:56:36.000000000 +0200 @@ -233,50 +233,51 @@ } } -static void draw_alpha_null(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride) +static void draw_alpha_null(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride) { UNUSED(x0); UNUSED(y0); UNUSED(w); UNUSED(h); + UNUSED(dp); UNUSED(src); UNUSED(srca); UNUSED(stride); } -static void draw_alpha(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride) +static void draw_alpha(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride) { uint32_t bespitch = /*(*/mga_vid_config.src_width;// + 15) & ~15; switch(mga_vid_config.format){ case IMGFMT_BGR15: case IMGFMT_RGB15: - vo_draw_alpha_rgb15(w,h,src,srca,stride,lvo_mem+2*(y0*bespitch+x0),2*bespitch); + vo_draw_alpha_rgb15(w,h,dp,src,srca,stride,lvo_mem+2*(y0*bespitch+x0),2*bespitch); break; case IMGFMT_BGR16: case IMGFMT_RGB16: - vo_draw_alpha_rgb16(w,h,src,srca,stride,lvo_mem+2*(y0*bespitch+x0),2*bespitch); + vo_draw_alpha_rgb16(w,h,dp,src,srca,stride,lvo_mem+2*(y0*bespitch+x0),2*bespitch); break; case IMGFMT_BGR24: case IMGFMT_RGB24: - vo_draw_alpha_rgb24(w,h,src,srca,stride,lvo_mem+3*(y0*bespitch+x0),3*bespitch); + vo_draw_alpha_rgb24(w,h,dp,src,srca,stride,lvo_mem+3*(y0*bespitch+x0),3*bespitch); break; case IMGFMT_BGR32: case IMGFMT_RGB32: - vo_draw_alpha_rgb32(w,h,src,srca,stride,lvo_mem+4*(y0*bespitch+x0),4*bespitch); + vo_draw_alpha_rgb32(w,h,dp,src,srca,stride,lvo_mem+4*(y0*bespitch+x0),4*bespitch); break; case IMGFMT_YV12: case IMGFMT_IYUV: case IMGFMT_I420: - vo_draw_alpha_yv12(w,h,src,srca,stride,lvo_mem+bespitch*y0+x0,bespitch); + vo_draw_alpha_yv12(w,h,dp,src,srca,stride,lvo_mem+bespitch*y0+x0,bespitch); break; case IMGFMT_YUY2: - vo_draw_alpha_yuy2(w,h,src,srca,stride,lvo_mem+2*(bespitch*y0+x0),bespitch); + vo_draw_alpha_yuy2(w,h,dp,src,srca,stride,lvo_mem+2*(bespitch*y0+x0),bespitch); break; case IMGFMT_UYVY: - vo_draw_alpha_yuy2(w,h,src,srca,stride,lvo_mem+2*(bespitch*y0+x0)+1,bespitch); + vo_draw_alpha_yuy2(w,h,dp,src,srca,stride,lvo_mem+2*(bespitch*y0+x0)+1,bespitch); break; default: - draw_alpha_null(x0,y0,w,h,src,srca,stride); + draw_alpha_null(x0,y0,w,h,dp,src,srca,stride); } } diff -Naur MPlayer-r23256.orig/libvo/video_out.h MPlayer-r23256/libvo/video_out.h --- MPlayer-r23256.orig/libvo/video_out.h 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libvo/video_out.h 2007-05-08 02:56:36.000000000 +0200 @@ -85,6 +85,11 @@ int w,h; } mp_win_t; +#define VOCTRL_YUVSPU_SUPPORT 28 +#define VOCTRL_RGBSPU_SUPPORT 29 +#define VOCTRL_BGRSPU_SUPPORT 30 +#define VOCTRL_YUYSPU_SUPPORT 31 + #define VO_TRUE 1 #define VO_FALSE 0 #define VO_ERROR -1 @@ -97,6 +102,15 @@ #define VOFLAG_FLIPPING 0x08 #define VOFLAG_XOVERLAY_SUB_VO 0x10000 +// dest planes (draw_alpha) +#define DEST_PLANES_Y 0 +#define DEST_PLANES_U 1 +#define DEST_PLANES_V 2 +#define DEST_PLANES_RB 3 +#define DEST_PLANES_G 4 +#define DEST_PLANES_BR 5 +#define DEST_PLANES_YUYV 6 + typedef struct vo_info_s { /* driver name ("Matrox Millennium G200/G400" */ diff -Naur MPlayer-r23256.orig/libvo/vo_aa.c MPlayer-r23256/libvo/vo_aa.c --- MPlayer-r23256.orig/libvo/vo_aa.c 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libvo/vo_aa.c 2007-05-08 02:56:36.000000000 +0200 @@ -518,7 +518,7 @@ aa_close(c); } -static void draw_alpha(int x,int y, int w,int h, unsigned char* src, unsigned char *srca, int stride){ +static void draw_alpha(int x,int y, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride){ int i,j; for (i = 0; i < h; i++) { for (j = 0; j < w; j++) { diff -Naur MPlayer-r23256.orig/libvo/vo_dfbmga.c MPlayer-r23256/libvo/vo_dfbmga.c --- MPlayer-r23256.orig/libvo/vo_dfbmga.c 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libvo/vo_dfbmga.c 2007-05-08 02:56:36.000000000 +0200 @@ -927,7 +927,7 @@ } static void -vo_draw_alpha_alut44( int w, int h, +vo_draw_alpha_alut44( int w, int h, int dp, unsigned char* src, unsigned char *srca, int srcstride, @@ -958,6 +958,7 @@ static void draw_alpha( int x0, int y0, int w, int h, + int dp, unsigned char *src, unsigned char *srca, int stride ) @@ -982,38 +983,47 @@ switch (subframe_format) { case DSPF_ALUT44: - vo_draw_alpha_alut44( w, h, src, srca, stride, + vo_draw_alpha_alut44( w, h, dp, src, srca, stride, ((uint8_t *) dst) + pitch * y0 + x0, pitch ); break; case DSPF_RGB32: case DSPF_ARGB: - vo_draw_alpha_rgb32( w, h, src, srca, stride, + vo_draw_alpha_rgb32( w, h, dp, src, srca, stride, (( uint8_t *) dst) + pitch * y0 + 4 * x0, pitch ); break; case DSPF_RGB24: - vo_draw_alpha_rgb24( w, h, src, srca, stride, + vo_draw_alpha_rgb24( w, h, dp, src, srca, stride, ((uint8_t *) dst) + pitch * y0 + 3 * x0, pitch ); break; case DSPF_RGB16: - vo_draw_alpha_rgb16( w, h, src, srca, stride, + vo_draw_alpha_rgb16( w, h, dp, src, srca, stride, ((uint8_t *) dst) + pitch * y0 + 2 * x0, pitch ); break; case DSPF_ARGB1555: - vo_draw_alpha_rgb15( w, h, src, srca, stride, + vo_draw_alpha_rgb15( w, h, dp, src, srca, stride, ((uint8_t *) dst) + pitch * y0 + 2 * x0, pitch ); break; case DSPF_YUY2: - vo_draw_alpha_yuy2( w, h, src, srca, stride, + switch (dp) { + case DEST_PLANES_Y: + vo_draw_alpha_yuy2( w, h, dp, src, srca, stride, ((uint8_t *) dst) + pitch * y0 + 2 * x0, pitch ); break; + case DEST_PLANES_YUYV: + vo_draw_alpha_yv12( w, h, dp, src, srca, stride, + ((uint8_t *) dst) + pitch * y0 + 2 * x0, + pitch ); + break; + } + break; case DSPF_UYVY: - vo_draw_alpha_yuy2( w, h, src, srca, stride, + vo_draw_alpha_yuy2( w, h, dp, src, srca, stride, ((uint8_t *) dst) + pitch * y0 + 2 * x0 + 1, pitch ); break; @@ -1023,10 +1033,34 @@ #endif case DSPF_I420: case DSPF_YV12: - vo_draw_alpha_yv12( w, h, src, srca, stride, + switch (dp) { + case DEST_PLANES_Y: + vo_draw_alpha_yv12( w, h, dp, src, srca, stride, ((uint8_t *) dst) + pitch * y0 + x0, pitch ); break; + case DEST_PLANES_U: + if (subframe_format==DSPF_YV12) + vo_draw_alpha_yv12( w, h, dp, src, srca, stride, + ((uint8_t *) dst) + pitch * y0 + x0 + pitch * in_height, + pitch ); + else + vo_draw_alpha_yv12( w, h, dp, src, srca, stride, + ((uint8_t *) dst) + pitch * y0 + x0 + pitch * (in_height+in_height/2), + pitch ); + break; + case DEST_PLANES_V: + if (subframe_format==DSPF_YV12) + vo_draw_alpha_yv12( w, h, dp, src, srca, stride, + ((uint8_t *) dst) + pitch * y0 + x0 + pitch * (in_height+in_height/2), + pitch ); + else + vo_draw_alpha_yv12( w, h, dp, src, srca, stride, + ((uint8_t *) dst) + pitch * y0 + x0 + pitch * in_height, + pitch ); + break; + } + break; } subframe->Unlock( subframe ); @@ -1421,6 +1455,18 @@ return get_equalizer( data, value ); } + case VOCTRL_YUVSPU_SUPPORT: + if (subframe_format==DSPF_I420 || subframe_format==DSPF_YV12) return VO_TRUE; + return VO_FALSE; + case VOCTRL_YUYSPU_SUPPORT: + if (subframe_format==DSPF_YUY2) return VO_TRUE; + return VO_FALSE; + case VOCTRL_RGBSPU_SUPPORT: + if (subframe_format==DSPF_RGB32 || subframe_format==DSPF_ARGB || subframe_format==DSPF_RGB24 || + subframe_format==DSPF_RGB16 || subframe_format==DSPF_ARGB1555) return VO_TRUE; + return VO_FALSE; + case VOCTRL_BGRSPU_SUPPORT: + return VO_FALSE; } return VO_NOTIMPL; diff -Naur MPlayer-r23256.orig/libvo/vo_dga.c MPlayer-r23256/libvo/vo_dga.c --- MPlayer-r23256.orig/libvo/vo_dga.c 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libvo/vo_dga.c 2007-05-08 02:56:36.000000000 +0200 @@ -227,7 +227,7 @@ //--------------------------------------------------------- -static void draw_alpha(int x0, int y0, int w, int h, unsigned char *src, +static void draw_alpha(int x0, int y0, int w, int h, int dp, unsigned char *src, unsigned char *srca, int stride) { @@ -243,19 +243,19 @@ { case 32: - vo_draw_alpha_rgb32(w, h, src, srca, stride, d + 4 * offset, + vo_draw_alpha_rgb32(w, h, dp, src, srca, stride, d + 4 * offset, 4 * buffer_stride); break; case 24: - vo_draw_alpha_rgb24(w, h, src, srca, stride, d + 3 * offset, + vo_draw_alpha_rgb24(w, h, dp, src, srca, stride, d + 3 * offset, 3 * buffer_stride); break; case 15: - vo_draw_alpha_rgb15(w, h, src, srca, stride, d + 2 * offset, + vo_draw_alpha_rgb15(w, h, dp, src, srca, stride, d + 2 * offset, 2 * buffer_stride); break; case 16: - vo_draw_alpha_rgb16(w, h, src, srca, stride, d + 2 * offset, + vo_draw_alpha_rgb16(w, h, dp, src, srca, stride, d + 2 * offset, 2 * buffer_stride); break; } @@ -981,6 +981,14 @@ return get_image(data); case VOCTRL_QUERY_FORMAT: return query_format(*((uint32_t *) data)); + case VOCTRL_YUVSPU_SUPPORT: + return VO_FALSE; + case VOCTRL_RGBSPU_SUPPORT: + return VO_FALSE; + case VOCTRL_BGRSPU_SUPPORT: + if(HW_MODE.vdm_mplayer_depth==32 || HW_MODE.vdm_mplayer_depth==24 || + HW_MODE.vdm_mplayer_depth==15 || HW_MODE.vdm_mplayer_depth==16) return VO_TRUE; + return VO_FALSE; } return VO_NOTIMPL; } diff -Naur MPlayer-r23256.orig/libvo/vo_directfb2.c MPlayer-r23256/libvo/vo_directfb2.c --- MPlayer-r23256.orig/libvo/vo_directfb2.c 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libvo/vo_directfb2.c 2007-05-08 02:56:36.000000000 +0200 @@ -1446,6 +1446,20 @@ return(directfb_get_video_eq(data, value)); } + case VOCTRL_YUVSPU_SUPPORT: + if (pixel_format==DSPF_I420 || pixel_format==DSPF_YV12) return VO_TRUE; + return VO_FALSE; + case VOCTRL_RGBSPU_SUPPORT: + if (pixel_format==DSPF_RGB32 || pixel_format==DSPF_ARGB || pixel_format==DSPF_RGB24 || + pixel_format==DSPF_RGB16) return VO_TRUE; +#if DIRECTFBVERSION > 915 + if (pixel_format==DSPF_ARGB1555) return VO_TRUE; +#else + if (pixel_format==DSPF_RGB15) return VO_TRUE; +#endif + return VO_FALSE; + case VOCTRL_BGRSPU_SUPPORT: + return VO_FALSE; }; return VO_NOTIMPL; } @@ -1459,7 +1473,7 @@ // hopefully will be removed soon -static void draw_alpha(int x0, int y0, int w, int h, unsigned char *src, +static void draw_alpha(int x0, int y0, int w, int h, int dp, unsigned char *src, unsigned char *srca, int stride) { void *dst; @@ -1478,35 +1492,51 @@ switch(pixel_format) { case DSPF_RGB32: case DSPF_ARGB: - vo_draw_alpha_rgb32(w,h,src,srca,stride,((uint8_t *) dst)+pitch*y0 + 4*x0,pitch); + vo_draw_alpha_rgb32(w,h,dp,src,srca,stride,((uint8_t *) dst)+pitch*y0 + 4*x0,pitch); break; case DSPF_RGB24: - vo_draw_alpha_rgb24(w,h,src,srca,stride,((uint8_t *) dst)+pitch*y0 + 3*x0,pitch); + vo_draw_alpha_rgb24(w,h,dp,src,srca,stride,((uint8_t *) dst)+pitch*y0 + 3*x0,pitch); break; case DSPF_RGB16: - vo_draw_alpha_rgb16(w,h,src,srca,stride,((uint8_t *) dst)+pitch*y0 + 2*x0,pitch); + vo_draw_alpha_rgb16(w,h,dp,src,srca,stride,((uint8_t *) dst)+pitch*y0 + 2*x0,pitch); break; #if DIRECTFBVERSION > DFB_VERSION(0,9,15) case DSPF_ARGB1555: #else case DSPF_RGB15: #endif - vo_draw_alpha_rgb15(w,h,src,srca,stride,((uint8_t *) dst)+pitch*y0 + 2*x0,pitch); + vo_draw_alpha_rgb15(w,h,dp,src,srca,stride,((uint8_t *) dst)+pitch*y0 + 2*x0,pitch); break; case DSPF_YUY2: - vo_draw_alpha_yuy2(w,h,src,srca,stride,((uint8_t *) dst) + pitch*y0 + 2*x0,pitch); + vo_draw_alpha_yuy2(w,h,dp,src,srca,stride,((uint8_t *) dst) + pitch*y0 + 2*x0,pitch); break; case DSPF_UYVY: - vo_draw_alpha_yuy2(w,h,src,srca,stride,((uint8_t *) dst) + pitch*y0 + 2*x0 + 1,pitch); + vo_draw_alpha_yuy2(w,h,dp,src,srca,stride,((uint8_t *) dst) + pitch*y0 + 2*x0 + 1,pitch); break; case DSPF_I420: case DSPF_YV12: - vo_draw_alpha_yv12(w,h,src,srca,stride,((uint8_t *) dst) + pitch*y0 + 1*x0,pitch); + switch (dp) { + case DEST_PLANES_Y: + vo_draw_alpha_yv12(w,h,dp,src,srca,stride,((uint8_t *) dst) + pitch*y0 + 1*x0,pitch); + break; + case DEST_PLANES_U: + if (pixel_format==DSPF_YV12) + vo_draw_alpha_yv12(w,h,dp,src,srca,stride,((uint8_t *) dst) + pitch*height/4 + pitch*y0 + 1*x0,pitch); + else + vo_draw_alpha_yv12(w,h,dp,src,srca,stride,((uint8_t *) dst) + pitch*height/2 + pitch*y0 + 1*x0,pitch); + break; + case DEST_PLANES_V: + if (pixel_format==DSPF_YV12) + vo_draw_alpha_yv12(w,h,dp,src,srca,stride,((uint8_t *) dst) + pitch*height/2 + pitch*y0 + 1*x0,pitch); + else + vo_draw_alpha_yv12(w,h,dp,src,srca,stride,((uint8_t *) dst) + pitch*height/4 + pitch*y0 + 1*x0,pitch); + break; + } break; } diff -Naur MPlayer-r23256.orig/libvo/vo_directx.c MPlayer-r23256/libvo/vo_directx.c --- MPlayer-r23256.orig/libvo/vo_directx.c 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libvo/vo_directx.c 2007-05-08 02:56:36.000000000 +0200 @@ -86,7 +86,7 @@ static BOOL (WINAPI* myGetMonitorInfo)(HMONITOR, LPMONITORINFO) = NULL; static RECT last_rect = {0xDEADC0DE, 0xDEADC0DE, 0xDEADC0DE, 0xDEADC0DE}; -extern void vo_draw_text(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride)); +extern void vo_draw_text(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride)); extern int vidmode; /***************************************************************************** @@ -144,37 +144,62 @@ LIBVO_EXTERN(directx) -static void draw_alpha(int x0, int y0, int w, int h, unsigned char *src, +static void draw_alpha(int x0, int y0, int w, int h, int dp, unsigned char *src, unsigned char *srca, int stride) { + uint8_t *d; + uint32_t uvstride=dstride/2; switch(image_format) { case IMGFMT_YV12 : case IMGFMT_I420 : case IMGFMT_IYUV : case IMGFMT_YVU9 : - vo_draw_alpha_yv12(w,h,src,srca,stride,((uint8_t *) image) + dstride*y0 + x0,dstride); + switch (dp) { + case DEST_PLANES_Y: + vo_draw_alpha_yv12(w,h,dp,src,srca,stride,((uint8_t *) image) + dstride*y0 + x0,dstride); + break; + case DEST_PLANES_U: + if(image_format == IMGFMT_YV12) + vo_draw_alpha_yv12(w,h,dp,src,srca,stride,((uint8_t *) image) + image_height*dstride + uvstride*y0 + x0,uvstride); + else + vo_draw_alpha_yv12(w,h,dp,src,srca,stride,((uint8_t *) image) + image_height*dstride + uvstride*(image_height/2) + uvstride*y0 + x0,uvstride); + break; + case DEST_PLANES_V: + if(image_format == IMGFMT_YV12) + vo_draw_alpha_yv12(w,h,dp,src,srca,stride,((uint8_t *) image) + image_height*dstride + uvstride*(image_height/2) + uvstride*y0 + x0,uvstride); + else + vo_draw_alpha_yv12(w,h,dp,src,srca,stride,((uint8_t *) image) + image_height*dstride + uvstride*y0 + x0,uvstride); + break; + } break; case IMGFMT_YUY2 : - vo_draw_alpha_yuy2(w,h,src,srca,stride,((uint8_t *) image)+ dstride*y0 + 2*x0 ,dstride); + switch (dp) { + case DEST_PLANES_Y: + vo_draw_alpha_yuy2(w,h,dp,src,srca,stride,((uint8_t *) image)+ dstride*y0 + 2*x0 ,dstride); + break; + case DEST_PLANES_YUYV: + vo_draw_alpha_yv12(w,h,dp,src,srca,stride,((uint8_t *) image)+ dstride*y0 + 2*x0 ,dstride); + break; + } break; case IMGFMT_UYVY : - vo_draw_alpha_yuy2(w,h,src,srca,stride,((uint8_t *) image) + dstride*y0 + 2*x0 + 1,dstride); + vo_draw_alpha_yuy2(w,h,dp,src,srca,stride,((uint8_t *) image) + dstride*y0 + 2*x0 + 1,dstride); break; case IMGFMT_RGB15: case IMGFMT_BGR15: - vo_draw_alpha_rgb15(w,h,src,srca,stride,((uint8_t *) image)+dstride*y0+2*x0,dstride); + vo_draw_alpha_rgb15(w,h,dp,src,srca,stride,((uint8_t *) image)+dstride*y0+2*x0,dstride); break; case IMGFMT_RGB16: case IMGFMT_BGR16: - vo_draw_alpha_rgb16(w,h,src,srca,stride,((uint8_t *) image)+dstride*y0+2*x0,dstride); + vo_draw_alpha_rgb16(w,h,dp,src,srca,stride,((uint8_t *) image)+dstride*y0+2*x0,dstride); break; case IMGFMT_RGB24: case IMGFMT_BGR24: - vo_draw_alpha_rgb24(w,h,src,srca,stride,((uint8_t *) image)+dstride*y0+4*x0,dstride); + vo_draw_alpha_rgb24(w,h,dp,src,srca,stride,((uint8_t *) image)+dstride*y0+4*x0,dstride); break; case IMGFMT_RGB32: case IMGFMT_BGR32: - vo_draw_alpha_rgb32(w,h,src,srca,stride,((uint8_t *) image)+dstride*y0+4*x0,dstride); + vo_draw_alpha_rgb32(w,h,dp,src,srca,stride,((uint8_t *) image)+dstride*y0+4*x0,dstride); break; } } @@ -1576,6 +1601,25 @@ } aspect_save_screenres(vo_screenwidth, vo_screenheight); return VO_TRUE; + case VOCTRL_YUVSPU_SUPPORT: { + if (image_format==IMGFMT_YV12 || image_format==IMGFMT_I420 || + image_format==IMGFMT_IYUV || image_format==IMGFMT_YVU9) return VO_TRUE; + return VO_FALSE; + } + case VOCTRL_YUYSPU_SUPPORT: { + if (image_format==IMGFMT_YUY2) return VO_TRUE; + return VO_FALSE; + } + case VOCTRL_RGBSPU_SUPPORT: { + if (image_format==IMGFMT_RGB15 || image_format==IMGFMT_RGB16 || + image_format==IMGFMT_RGB32) return VO_TRUE; + return VO_FALSE; + } + case VOCTRL_BGRSPU_SUPPORT: { + if (image_format==IMGFMT_BGR15 || image_format==IMGFMT_BGR16 || + image_format==IMGFMT_BGR32) return VO_TRUE; + return VO_FALSE; + } case VOCTRL_RESET: last_rect.left = 0xDEADC0DE; // reset window position cache // fall-through intended diff -Naur MPlayer-r23256.orig/libvo/vo_dxr3.c MPlayer-r23256/libvo/vo_dxr3.c --- MPlayer-r23256.orig/libvo/vo_dxr3.c 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libvo/vo_dxr3.c 2007-05-08 02:56:36.000000000 +0200 @@ -677,7 +677,7 @@ return 0; } -static void draw_alpha(int x, int y, int w, int h, unsigned char* src, unsigned char *srca, int srcstride) +static void draw_alpha(int x, int y, int w, int h, int dp, unsigned char* src, unsigned char *srca, int srcstride) { #ifdef SPU_SUPPORT unsigned char *buf = &osdpicbuf[(y * osdpicbuf_w) + x]; diff -Naur MPlayer-r23256.orig/libvo/vo_fbdev2.c MPlayer-r23256/libvo/vo_fbdev2.c --- MPlayer-r23256.orig/libvo/vo_fbdev2.c 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libvo/vo_fbdev2.c 2007-05-08 02:56:36.000000000 +0200 @@ -79,7 +79,7 @@ static int fb_bpp; // 32: 32 24: 24 16: 16 15: 15 static size_t fb_size; // size of frame_buffer static int fb_line_len; // length of one line in bytes -static void (*draw_alpha_p)(int w, int h, unsigned char *src, +static void (*draw_alpha_p)(int w, int h, int dp, unsigned char *src, unsigned char *srca, int stride, unsigned char *dst, int dstride); @@ -317,7 +317,7 @@ return 0; } -static void draw_alpha(int x0, int y0, int w, int h, unsigned char *src, +static void draw_alpha(int x0, int y0, int w, int h, int dp, unsigned char *src, unsigned char *srca, int stride) { unsigned char *dst; @@ -330,7 +330,7 @@ dst = next_frame + (in_width * y0 + x0) * fb_pixel_size; dstride = in_width * fb_pixel_size; #endif - (*draw_alpha_p)(w, h, src, srca, stride, dst, dstride); + (*draw_alpha_p)(w, h, dp, src, srca, stride, dst, dstride); } static void draw_osd(void) @@ -403,6 +403,13 @@ switch (request) { case VOCTRL_QUERY_FORMAT: return query_format(*((uint32_t*)data)); + case VOCTRL_YUVSPU_SUPPORT: + return VO_FALSE; + case VOCTRL_RGBSPU_SUPPORT: + return VO_FALSE; + case VOCTRL_BGRSPU_SUPPORT: + if (fb_bpp == 32 || fb_bpp==24 || fb_bpp==16 || fb_bpp==15) return VO_TRUE; + return VO_FALSE; } return VO_NOTIMPL; } diff -Naur MPlayer-r23256.orig/libvo/vo_fbdev.c MPlayer-r23256/libvo/vo_fbdev.c --- MPlayer-r23256.orig/libvo/vo_fbdev.c 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libvo/vo_fbdev.c 2007-05-08 02:56:36.000000000 +0200 @@ -562,7 +562,7 @@ static int fb_line_len; static int fb_xres; static int fb_yres; -static void (*draw_alpha_p)(int w, int h, unsigned char *src, +static void (*draw_alpha_p)(int w, int h, int dp, unsigned char *src, unsigned char *srca, int stride, unsigned char *dst, int dstride); @@ -1053,14 +1053,14 @@ return 0; } -static void draw_alpha(int x0, int y0, int w, int h, unsigned char *src, +static void draw_alpha(int x0, int y0, int w, int h, int dp, unsigned char *src, unsigned char *srca, int stride) { unsigned char *dst; dst = center + fb_line_len * y0 + fb_pixel_size * x0; - (*draw_alpha_p)(w, h, src, srca, stride, dst, fb_line_len); + (*draw_alpha_p)(w, h, dp, src, srca, stride, dst, fb_line_len); } static int draw_frame(uint8_t *src[]) { return 1; } @@ -1174,6 +1174,13 @@ return get_image(data); case VOCTRL_QUERY_FORMAT: return query_format(*((uint32_t*)data)); + case VOCTRL_YUVSPU_SUPPORT: + return VO_FALSE; + case VOCTRL_RGBSPU_SUPPORT: + return VO_FALSE; + case VOCTRL_BGRSPU_SUPPORT: + if (fb_bpp == 32 || fb_bpp==24 || fb_bpp==16 || fb_bpp==15) return VO_TRUE; + return VO_FALSE; } #ifdef CONFIG_VIDIX diff -Naur MPlayer-r23256.orig/libvo/vo_gl2.c MPlayer-r23256/libvo/vo_gl2.c --- MPlayer-r23256.orig/libvo/vo_gl2.c 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libvo/vo_gl2.c 2007-05-08 02:56:36.000000000 +0200 @@ -86,7 +86,7 @@ static int use_glFinish; static void (*draw_alpha_fnc) - (int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride); + (int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride); /* The squares that are tiled to make up the game screen polygon */ @@ -575,23 +575,23 @@ glLoadIdentity(); } -static void draw_alpha_32(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){ - vo_draw_alpha_rgb32(w,h,src,srca,stride,ImageData+4*(y0*image_width+x0),4*image_width); +static void draw_alpha_32(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride){ + vo_draw_alpha_rgb32(w,h,dp,src,srca,stride,ImageData+4*(y0*image_width+x0),4*image_width); } -static void draw_alpha_24(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){ - vo_draw_alpha_rgb24(w,h,src,srca,stride,ImageData+3*(y0*image_width+x0),3*image_width); +static void draw_alpha_24(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride){ + vo_draw_alpha_rgb24(w,h,dp,src,srca,stride,ImageData+3*(y0*image_width+x0),3*image_width); } -static void draw_alpha_16(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){ - vo_draw_alpha_rgb16(w,h,src,srca,stride,ImageData+2*(y0*image_width+x0),2*image_width); +static void draw_alpha_16(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride){ + vo_draw_alpha_rgb16(w,h,dp,src,srca,stride,ImageData+2*(y0*image_width+x0),2*image_width); } -static void draw_alpha_15(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){ - vo_draw_alpha_rgb15(w,h,src,srca,stride,ImageData+2*(y0*image_width+x0),2*image_width); +static void draw_alpha_15(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride){ + vo_draw_alpha_rgb15(w,h,dp,src,srca,stride,ImageData+2*(y0*image_width+x0),2*image_width); } -static void draw_alpha_null(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){ +static void draw_alpha_null(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride){ } #ifdef GL_WIN32 @@ -1130,6 +1130,13 @@ case VOCTRL_UPDATE_SCREENINFO: update_xinerama_info(); return VO_TRUE; - } + case VOCTRL_YUVSPU_SUPPORT: + return VO_FALSE; + case VOCTRL_RGBSPU_SUPPORT: + return VO_FALSE; + case VOCTRL_BGRSPU_SUPPORT: + if (image_bpp==15 || image_bpp==16 || image_bpp==24 || image_bpp==32) return VO_TRUE; + return VO_FALSE; return VO_NOTIMPL; } +} diff -Naur MPlayer-r23256.orig/libvo/vo_macosx.m MPlayer-r23256/libvo/vo_macosx.m --- MPlayer-r23256.orig/libvo/vo_macosx.m 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libvo/vo_macosx.m 2007-05-08 02:56:36.000000000 +0200 @@ -78,17 +78,17 @@ LIBVO_EXTERN(macosx) extern void mplayer_put_key(int code); -extern void vo_draw_text(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride)); +extern void vo_draw_text(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride)); -static void draw_alpha(int x0, int y0, int w, int h, unsigned char *src, unsigned char *srca, int stride) +static void draw_alpha(int x0, int y0, int w, int h, int dp, unsigned char *src, unsigned char *srca, int stride) { switch (image_format) { case IMGFMT_RGB32: - vo_draw_alpha_rgb32(w,h,src,srca,stride,image_data+4*(y0*image_width+x0),4*image_width); + vo_draw_alpha_rgb32(w,h,dp,src,srca,stride,image_data+4*(y0*image_width+x0),4*image_width); break; case IMGFMT_YUY2: - vo_draw_alpha_yuy2(w,h,src,srca,stride,image_data + (x0 + y0 * image_width) * 2,image_width*2); + vo_draw_alpha_yuy2(w,h,dp,src,srca,stride,image_data + (x0 + y0 * image_width) * 2,image_width*2); break; } } diff -Naur MPlayer-r23256.orig/libvo/vo_quartz.c MPlayer-r23256/libvo/vo_quartz.c --- MPlayer-r23256.orig/libvo/vo_quartz.c 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libvo/vo_quartz.c 2007-05-08 02:56:36.000000000 +0200 @@ -129,7 +129,7 @@ #include "osdep/keycodes.h" -extern void vo_draw_text(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride)); +extern void vo_draw_text(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride)); //PROTOTYPE///////////////////////////////////////////////////////////////// static OSStatus KeyEventHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData); @@ -194,23 +194,23 @@ } } -static void draw_alpha(int x0, int y0, int w, int h, unsigned char *src, unsigned char *srca, int stride) +static void draw_alpha(int x0, int y0, int w, int h, int dp, unsigned char *src, unsigned char *srca, int stride) { switch (image_format) { case IMGFMT_RGB32: - vo_draw_alpha_rgb32(w,h,src,srca,stride,image_data+4*(y0*imgRect.right+x0),4*imgRect.right); + vo_draw_alpha_rgb32(w,h,dp,src,srca,stride,image_data+4*(y0*imgRect.right+x0),4*imgRect.right); break; case IMGFMT_YV12: case IMGFMT_IYUV: case IMGFMT_I420: - vo_draw_alpha_yv12(w,h,src,srca,stride, ((char*)P) + P->componentInfoY.offset + x0 + y0 * imgRect.right, imgRect.right); + vo_draw_alpha_yv12(w,h,dp,src,srca,stride, ((char*)P) + P->componentInfoY.offset + x0 + y0 * imgRect.right, imgRect.right); break; case IMGFMT_UYVY: - vo_draw_alpha_uyvy(w,h,src,srca,stride,((char*)P) + (x0 + y0 * imgRect.right) * 2,imgRect.right*2); + vo_draw_alpha_uyvy(w,h,dp,src,srca,stride,((char*)P) + (x0 + y0 * imgRect.right) * 2,imgRect.right*2); break; case IMGFMT_YUY2: - vo_draw_alpha_yuy2(w,h,src,srca,stride,((char*)P) + (x0 + y0 * imgRect.right) * 2,imgRect.right*2); + vo_draw_alpha_yuy2(w,h,dp,src,srca,stride,((char*)P) + (x0 + y0 * imgRect.right) * 2,imgRect.right*2); break; } } diff -Naur MPlayer-r23256.orig/libvo/vo_sdl.c MPlayer-r23256/libvo/vo_sdl.c --- MPlayer-r23256.orig/libvo/vo_sdl.c 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libvo/vo_sdl.c 2007-05-08 02:56:36.000000000 +0200 @@ -287,7 +287,7 @@ * **/ -static void draw_alpha(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){ +static void draw_alpha(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride){ struct sdl_priv_s *priv = &sdl_priv; if(priv->osd_has_changed) { @@ -328,16 +328,43 @@ case IMGFMT_YV12: case IMGFMT_I420: case IMGFMT_IYUV: - vo_draw_alpha_yv12(w,h,src,srca,stride,((uint8_t *) *(priv->overlay->pixels))+priv->overlay->pitches[0]*y0+x0,priv->overlay->pitches[0]); + switch (dp) { + case DEST_PLANES_Y : + vo_draw_alpha_yv12(w,h,dp,src,srca,stride,((uint8_t *) *(priv->overlay->pixels))+priv->overlay->pitches[0]*y0+x0,priv->overlay->pitches[0]); + break; + case DEST_PLANES_U : + SDL_OVR_LOCK(-1) + if (priv->format==IMGFMT_YV12) + vo_draw_alpha_yv12(w,h,dp,src,srca,stride,((uint8_t *) (priv->overlay->pixels[1]))+priv->overlay->pitches[1]*y0+x0,priv->overlay->pitches[1]); + else + vo_draw_alpha_yv12(w,h,dp,src,srca,stride,((uint8_t *) (priv->overlay->pixels[2]))+priv->overlay->pitches[2]*y0+x0,priv->overlay->pitches[2]); + SDL_OVR_UNLOCK + break; + case DEST_PLANES_V : + SDL_OVR_LOCK(-1) + if (priv->format==IMGFMT_YV12) + vo_draw_alpha_yv12(w,h,dp,src,srca,stride,((uint8_t *) (priv->overlay->pixels[2]))+priv->overlay->pitches[2]*y0+x0,priv->overlay->pitches[2]); + else + vo_draw_alpha_yv12(w,h,dp,src,srca,stride,((uint8_t *) (priv->overlay->pixels[1]))+priv->overlay->pitches[1]*y0+x0,priv->overlay->pitches[1]); + SDL_OVR_UNLOCK + break; + } break; case IMGFMT_YUY2: case IMGFMT_YVYU: x0 *= 2; - vo_draw_alpha_yuy2(w,h,src,srca,stride,((uint8_t *) *(priv->overlay->pixels))+priv->overlay->pitches[0]*y0+x0,priv->overlay->pitches[0]); + switch (dp) { + case DEST_PLANES_Y : + vo_draw_alpha_yuy2(w,h,dp,src,srca,stride,((uint8_t *) *(priv->overlay->pixels))+priv->overlay->pitches[0]*y0+x0,priv->overlay->pitches[0]); + break; + case DEST_PLANES_YUYV : + vo_draw_alpha_yv12(w,h,dp,src,srca,stride,((uint8_t *) *(priv->overlay->pixels))+priv->overlay->pitches[0]*y0+x0,priv->overlay->pitches[0]); + break; + } break; case IMGFMT_UYVY: x0 *= 2; - vo_draw_alpha_yuy2(w,h,src,srca,stride,((uint8_t *) *(priv->overlay->pixels))+priv->overlay->pitches[0]*y0+x0,priv->overlay->pitches[0]); + vo_draw_alpha_yuy2(w,h,dp,src,srca,stride,((uint8_t *) *(priv->overlay->pixels))+priv->overlay->pitches[0]*y0+x0,priv->overlay->pitches[0]); break; default: @@ -346,19 +373,19 @@ switch(priv->format) { case IMGFMT_RGB15: case IMGFMT_BGR15: - vo_draw_alpha_rgb15(w,h,src,srca,stride,((uint8_t *) priv->surface->pixels)+y0*priv->surface->pitch+x0,priv->surface->pitch); + vo_draw_alpha_rgb15(w,h,dp,src,srca,stride,((uint8_t *) priv->surface->pixels)+y0*priv->surface->pitch+x0,priv->surface->pitch); break; case IMGFMT_RGB16: case IMGFMT_BGR16: - vo_draw_alpha_rgb16(w,h,src,srca,stride,((uint8_t *) priv->surface->pixels)+y0*priv->surface->pitch+x0,priv->surface->pitch); + vo_draw_alpha_rgb16(w,h,dp,src,srca,stride,((uint8_t *) priv->surface->pixels)+y0*priv->surface->pitch+x0,priv->surface->pitch); break; case IMGFMT_RGB24: case IMGFMT_BGR24: - vo_draw_alpha_rgb24(w,h,src,srca,stride,((uint8_t *) priv->surface->pixels)+y0*priv->surface->pitch+x0,priv->surface->pitch); + vo_draw_alpha_rgb24(w,h,dp,src,srca,stride,((uint8_t *) priv->surface->pixels)+y0*priv->surface->pitch+x0,priv->surface->pitch); break; case IMGFMT_RGB32: case IMGFMT_BGR32: - vo_draw_alpha_rgb32(w,h,src,srca,stride,((uint8_t *) priv->surface->pixels)+y0*priv->surface->pitch+x0,priv->surface->pitch); + vo_draw_alpha_rgb32(w,h,dp,src,srca,stride,((uint8_t *) priv->surface->pixels)+y0*priv->surface->pitch+x0,priv->surface->pitch); break; } } @@ -367,19 +394,19 @@ switch(priv->format) { case IMGFMT_RGB15: case IMGFMT_BGR15: - vo_draw_alpha_rgb15(w,h,src,srca,stride,((uint8_t *) priv->rgbsurface->pixels)+y0*priv->rgbsurface->pitch+x0,priv->rgbsurface->pitch); + vo_draw_alpha_rgb15(w,h,dp,src,srca,stride,((uint8_t *) priv->rgbsurface->pixels)+y0*priv->rgbsurface->pitch+x0,priv->rgbsurface->pitch); break; case IMGFMT_RGB16: case IMGFMT_BGR16: - vo_draw_alpha_rgb16(w,h,src,srca,stride,((uint8_t *) priv->rgbsurface->pixels)+y0*priv->rgbsurface->pitch+x0,priv->rgbsurface->pitch); + vo_draw_alpha_rgb16(w,h,dp,src,srca,stride,((uint8_t *) priv->rgbsurface->pixels)+y0*priv->rgbsurface->pitch+x0,priv->rgbsurface->pitch); break; case IMGFMT_RGB24: case IMGFMT_BGR24: - vo_draw_alpha_rgb24(w,h,src,srca,stride,((uint8_t *) priv->rgbsurface->pixels)+y0*priv->rgbsurface->pitch+x0,priv->rgbsurface->pitch); + vo_draw_alpha_rgb24(w,h,dp,src,srca,stride,((uint8_t *) priv->rgbsurface->pixels)+y0*priv->rgbsurface->pitch+x0,priv->rgbsurface->pitch); break; case IMGFMT_RGB32: case IMGFMT_BGR32: - vo_draw_alpha_rgb32(w,h,src,srca,stride,((uint8_t *) priv->rgbsurface->pixels)+y0*priv->rgbsurface->pitch+x0,priv->rgbsurface->pitch); + vo_draw_alpha_rgb32(w,h,dp,src,srca,stride,((uint8_t *) priv->rgbsurface->pixels)+y0*priv->rgbsurface->pitch+x0,priv->rgbsurface->pitch); break; } } @@ -1727,6 +1754,18 @@ mp_msg(MSGT_VO,MSGL_DBG2, "SDL: Set fullscreen mode\n"); } } return VO_TRUE; + case VOCTRL_YUVSPU_SUPPORT: + if (priv->format == IMGFMT_YV12 || priv->format == IMGFMT_I420 || priv->format==IMGFMT_IYUV) return VO_TRUE; + return VO_FALSE; + case VOCTRL_YUYSPU_SUPPORT: + if (priv->format==IMGFMT_YUY2) return VO_TRUE; + return VO_FALSE; + case VOCTRL_RGBSPU_SUPPORT: + if (priv->mode == RGB) return VO_TRUE; + return VO_FALSE; + case VOCTRL_BGRSPU_SUPPORT: + if (priv->mode == BGR) return VO_TRUE; + return VO_FALSE; } return VO_NOTIMPL; diff -Naur MPlayer-r23256.orig/libvo/vosub_vidix.c MPlayer-r23256/libvo/vosub_vidix.c --- MPlayer-r23256.orig/libvo/vosub_vidix.c 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libvo/vosub_vidix.c 2007-05-08 02:56:36.000000000 +0200 @@ -283,7 +283,7 @@ } } -static void draw_alpha(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride) +static void draw_alpha(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride) { uint32_t apitch,bespitch; void *lvo_mem; @@ -297,36 +297,57 @@ case IMGFMT_IF09: case IMGFMT_Y8: case IMGFMT_Y800: + switch (dp) { + case DEST_PLANES_Y: bespitch = (vidix_play.src.w + apitch) & (~apitch); - vo_draw_alpha_yv12(w,h,src,srca,stride,lvo_mem+bespitch*y0+x0,bespitch); + vo_draw_alpha_yv12(w,h,dp,src,srca,stride,lvo_mem+bespitch*y0+x0,bespitch); + break; + case DEST_PLANES_U: + lvo_mem = vidix_mem + vidix_play.offsets[next_frame] + vidix_play.offset.u; + lvo_mem += dstrides.u*y0/2 + x0; + vo_draw_alpha_yv12(w,h,dp,src,srca,stride,lvo_mem,dstrides.u/2); + break; + case DEST_PLANES_V: + lvo_mem = vidix_mem + vidix_play.offsets[next_frame] + vidix_play.offset.v; + lvo_mem += dstrides.v*y0/2 + x0; + vo_draw_alpha_yv12(w,h,dp,src,srca,stride,lvo_mem,dstrides.v/2); + break; + } break; case IMGFMT_YUY2: bespitch = (vidix_play.src.w*2 + apitch) & (~apitch); - vo_draw_alpha_yuy2(w,h,src,srca,stride,lvo_mem+bespitch*y0+2*x0,bespitch); + switch (dp) { + case DEST_PLANES_Y: + vo_draw_alpha_yuy2(w,h,dp,src,srca,stride,lvo_mem+bespitch*y0+2*x0,bespitch); + break; + case DEST_PLANES_YUYV: + vo_draw_alpha_yv12(w,h,dp,src,srca,stride,lvo_mem+bespitch*y0+x0,bespitch); + break; + } break; case IMGFMT_UYVY: bespitch = (vidix_play.src.w*2 + apitch) & (~apitch); - vo_draw_alpha_yuy2(w,h,src,srca,stride,lvo_mem+bespitch*y0+2*x0+1,bespitch); + vo_draw_alpha_yuy2(w,h,dp,src,srca,stride,lvo_mem+bespitch*y0+2*x0+1,bespitch); break; case IMGFMT_RGB32: case IMGFMT_BGR32: bespitch = (vidix_play.src.w*4 + apitch) & (~apitch); - vo_draw_alpha_rgb32(w,h,src,srca,stride,lvo_mem+y0*bespitch+4*x0,bespitch); + vo_draw_alpha_rgb32(w,h,dp,src,srca,stride,lvo_mem+y0*bespitch+4*x0,bespitch); break; case IMGFMT_RGB24: case IMGFMT_BGR24: bespitch = (vidix_play.src.w*3 + apitch) & (~apitch); - vo_draw_alpha_rgb24(w,h,src,srca,stride,lvo_mem+y0*bespitch+3*x0,bespitch); + vo_draw_alpha_rgb24(w,h,dp,src,srca,stride,lvo_mem+y0*bespitch+3*x0,bespitch); break; case IMGFMT_RGB16: case IMGFMT_BGR16: bespitch = (vidix_play.src.w*2 + apitch) & (~apitch); - vo_draw_alpha_rgb16(w,h,src,srca,stride,lvo_mem+y0*bespitch+2*x0,bespitch); + vo_draw_alpha_rgb16(w,h,dp,src,srca,stride,lvo_mem+y0*bespitch+2*x0,bespitch); break; case IMGFMT_RGB15: case IMGFMT_BGR15: bespitch = (vidix_play.src.w*2 + apitch) & (~apitch); - vo_draw_alpha_rgb15(w,h,src,srca,stride,lvo_mem+y0*bespitch+2*x0,bespitch); + vo_draw_alpha_rgb15(w,h,dp,src,srca,stride,lvo_mem+y0*bespitch+2*x0,bespitch); break; default: return; @@ -512,7 +533,7 @@ next_frame = i; memset(vidix_mem + vidix_play.offsets[i], 0x80, vidix_play.frame_size); - draw_alpha(0, 0, image_width, image_height, tmp, tmpa, image_width); + draw_alpha(0, 0, image_width, image_height, DEST_PLANES_Y, tmp, tmpa, image_width); } free(tmp); free(tmpa); @@ -700,6 +721,16 @@ return VO_TRUE; } + case VOCTRL_YUVSPU_SUPPORT: + if((vidix_play.fourcc==IMGFMT_YV12 || vidix_play.fourcc==IMGFMT_YV12 || vidix_play.fourcc==IMGFMT_IYUV || + vidix_play.fourcc==IMGFMT_I420 || vidix_play.fourcc==IMGFMT_YVU9 || vidix_play.fourcc==IMGFMT_IF09 || + vidix_play.fourcc==IMGFMT_Y8 || vidix_play.fourcc==IMGFMT_Y800) && + !(vidix_play.flags & VID_PLAY_INTERLEAVED_UV)) return VO_TRUE; + return VO_FALSE; + case VOCTRL_YUYSPU_SUPPORT: + if((vidix_play.fourcc==IMGFMT_YUY2) && + !(vidix_play.flags & VID_PLAY_INTERLEAVED_UV)) return VO_TRUE; + return VO_FALSE; } return VO_NOTIMPL; // WARNING: we drop extra parameters (...) here! diff -Naur MPlayer-r23256.orig/libvo/vo_vesa.c MPlayer-r23256/libvo/vo_vesa.c --- MPlayer-r23256.orig/libvo/vo_vesa.c 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libvo/vo_vesa.c 2007-05-08 02:56:36.000000000 +0200 @@ -47,6 +47,7 @@ #include "vosub_vidix.h" #endif #include "mp_msg.h" +#include "help_mp.h" #include "libswscale/swscale.h" #include "libmpcodecs/vf_scale.h" @@ -108,7 +109,7 @@ static unsigned video_mode; /* selected video mode for playback */ static struct VesaModeInfoBlock video_mode_info; static int flip_trigger = 0; -static void (*draw_alpha_fnc)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride); +static void (*draw_alpha_fnc)(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride); /* multibuffering */ uint8_t* video_base; /* should be never changed */ @@ -296,7 +297,7 @@ /* Please comment it out if you want have OSD within movie */ /*#define OSD_OUTSIDE_MOVIE 1*/ -static void draw_alpha_32(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride) +static void draw_alpha_32(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride) { int dstride=HAS_DGA()?video_mode_info.XResolution:dstW; #ifndef OSD_OUTSIDE_MOVIE @@ -306,10 +307,10 @@ y0 += y_offset; } #endif - vo_draw_alpha_rgb32(w,h,src,srca,stride,dga_buffer+4*(y0*dstride+x0),4*dstride); + vo_draw_alpha_rgb32(w,h,dp,src,srca,stride,dga_buffer+4*(y0*dstride+x0),4*dstride); } -static void draw_alpha_24(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride) +static void draw_alpha_24(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride) { int dstride=HAS_DGA()?video_mode_info.XResolution:dstW; #ifndef OSD_OUTSIDE_MOVIE @@ -319,10 +320,10 @@ y0 += y_offset; } #endif - vo_draw_alpha_rgb24(w,h,src,srca,stride,dga_buffer+3*(y0*dstride+x0),3*dstride); + vo_draw_alpha_rgb24(w,h,dp,src,srca,stride,dga_buffer+3*(y0*dstride+x0),3*dstride); } -static void draw_alpha_16(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride) +static void draw_alpha_16(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride) { int dstride=HAS_DGA()?video_mode_info.XResolution:dstW; #ifndef OSD_OUTSIDE_MOVIE @@ -332,10 +333,10 @@ y0 += y_offset; } #endif - vo_draw_alpha_rgb16(w,h,src,srca,stride,dga_buffer+2*(y0*dstride+x0),2*dstride); + vo_draw_alpha_rgb16(w,h,dp,src,srca,stride,dga_buffer+2*(y0*dstride+x0),2*dstride); } -static void draw_alpha_15(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride) +static void draw_alpha_15(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride) { int dstride=HAS_DGA()?video_mode_info.XResolution:dstW; #ifndef OSD_OUTSIDE_MOVIE @@ -345,15 +346,16 @@ y0 += y_offset; } #endif - vo_draw_alpha_rgb15(w,h,src,srca,stride,dga_buffer+2*(y0*dstride+x0),2*dstride); + vo_draw_alpha_rgb15(w,h,dp,src,srca,stride,dga_buffer+2*(y0*dstride+x0),2*dstride); } -static void draw_alpha_null(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride) +static void draw_alpha_null(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride) { UNUSED(x0); UNUSED(y0); UNUSED(w); UNUSED(h); + UNUSED(dp); UNUSED(src); UNUSED(srca); UNUSED(stride); @@ -1103,6 +1105,14 @@ switch (request) { case VOCTRL_QUERY_FORMAT: return query_format(*((uint32_t*)data)); + case VOCTRL_YUVSPU_SUPPORT: + return VO_FALSE; + case VOCTRL_RGBSPU_SUPPORT: + return VO_FALSE; + case VOCTRL_BGRSPU_SUPPORT: + if (dstFourcc == IMGFMT_BGR15 || dstFourcc == IMGFMT_BGR16 || dstFourcc == IMGFMT_BGR24 || + dstFourcc == IMGFMT_BGR32 || dstFourcc == IMGFMT_BGR16) return VO_TRUE; + return VO_FALSE; } #ifdef CONFIG_VIDIX diff -Naur MPlayer-r23256.orig/libvo/vo_x11.c MPlayer-r23256/libvo/vo_x11.c --- MPlayer-r23256.orig/libvo/vo_x11.c 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libvo/vo_x11.c 2007-05-08 02:56:36.000000000 +0200 @@ -61,7 +61,7 @@ LIBVO_EXTERN(x11) /* private prototypes */ static void Display_Image(XImage * myximage, unsigned char *ImageData); -static void (*draw_alpha_fnc) (int x0, int y0, int w, int h, +static void (*draw_alpha_fnc) (int x0, int y0, int w, int h, int dp, unsigned char *src, unsigned char *srca, int stride); @@ -109,39 +109,39 @@ } -static void draw_alpha_32(int x0, int y0, int w, int h, unsigned char *src, +static void draw_alpha_32(int x0, int y0, int w, int h, int dp, unsigned char *src, unsigned char *srca, int stride) { - vo_draw_alpha_rgb32(w, h, src, srca, stride, + vo_draw_alpha_rgb32(w, h, dp, src, srca, stride, ImageData + 4 * (y0 * image_width + x0), 4 * image_width); } -static void draw_alpha_24(int x0, int y0, int w, int h, unsigned char *src, +static void draw_alpha_24(int x0, int y0, int w, int h, int dp, unsigned char *src, unsigned char *srca, int stride) { - vo_draw_alpha_rgb24(w, h, src, srca, stride, + vo_draw_alpha_rgb24(w, h, dp, src, srca, stride, ImageData + 3 * (y0 * image_width + x0), 3 * image_width); } -static void draw_alpha_16(int x0, int y0, int w, int h, unsigned char *src, +static void draw_alpha_16(int x0, int y0, int w, int h, int dp, unsigned char *src, unsigned char *srca, int stride) { - vo_draw_alpha_rgb16(w, h, src, srca, stride, + vo_draw_alpha_rgb16(w, h, dp, src, srca, stride, ImageData + 2 * (y0 * image_width + x0), 2 * image_width); } -static void draw_alpha_15(int x0, int y0, int w, int h, unsigned char *src, +static void draw_alpha_15(int x0, int y0, int w, int h, int dp, unsigned char *src, unsigned char *srca, int stride) { - vo_draw_alpha_rgb15(w, h, src, srca, stride, + vo_draw_alpha_rgb15(w, h, dp, src, srca, stride, ImageData + 2 * (y0 * image_width + x0), 2 * image_width); } -static void draw_alpha_null(int x0, int y0, int w, int h, +static void draw_alpha_null(int x0, int y0, int w, int h, int dp, unsigned char *src, unsigned char *srca, int stride) { @@ -828,6 +828,14 @@ case VOCTRL_UPDATE_SCREENINFO: update_xinerama_info(); return VO_TRUE; + case VOCTRL_YUVSPU_SUPPORT: + return VO_FALSE; + case VOCTRL_RGBSPU_SUPPORT: + return VO_FALSE; + case VOCTRL_BGRSPU_SUPPORT: + if (out_format == IMGFMT_BGR15 || out_format == IMGFMT_BGR16 || + out_format == IMGFMT_BGR24 || out_format == IMGFMT_BGR32) return VO_TRUE; + return VO_FALSE; } return VO_NOTIMPL; } diff -Naur MPlayer-r23256.orig/libvo/vo_xv.c MPlayer-r23256/libvo/vo_xv.c --- MPlayer-r23256.orig/libvo/vo_xv.c 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libvo/vo_xv.c 2007-05-08 02:56:36.000000000 +0200 @@ -93,47 +93,83 @@ static uint32_t drwX, drwY, drwBorderWidth, drwDepth; static uint32_t max_width = 0, max_height = 0; // zero means: not set -static void (*draw_alpha_fnc) (int x0, int y0, int w, int h, +static int support_yuvspu = VO_FALSE; +static int support_yuyspu = VO_FALSE; + +static void (*draw_alpha_fnc) (int x0, int y0, int w, int h, int dp, unsigned char *src, unsigned char *srca, int stride); -static void draw_alpha_yv12(int x0, int y0, int w, int h, +static void draw_alpha_yv12(int x0, int y0, int w, int h, int dp, unsigned char *src, unsigned char *srca, int stride) { + switch (dp) { + case DEST_PLANES_U: { + x0 += image_width/2 * (vo_panscan_x >> 1) / (vo_dwidth + vo_panscan_x); + vo_draw_alpha_yv12(w, h, dp, src, srca, stride, + xvimage[current_buf]->data + + xvimage[current_buf]->offsets[1] + + xvimage[current_buf]->pitches[1] * y0 + x0, + xvimage[current_buf]->pitches[1]); + break; } + case DEST_PLANES_V: { + x0 += image_width/2 * (vo_panscan_x >> 1) / (vo_dwidth + vo_panscan_x); + vo_draw_alpha_yv12(w, h, dp, src, srca, stride, + xvimage[current_buf]->data + + xvimage[current_buf]->offsets[2] + + xvimage[current_buf]->pitches[2] * y0 + x0, + xvimage[current_buf]->pitches[2]); + break; } + case DEST_PLANES_Y: { x0 += image_width * (vo_panscan_x >> 1) / (vo_dwidth + vo_panscan_x); - vo_draw_alpha_yv12(w, h, src, srca, stride, + vo_draw_alpha_yv12(w, h, dp, src, srca, stride, xvimage[current_buf]->data + xvimage[current_buf]->offsets[0] + xvimage[current_buf]->pitches[0] * y0 + x0, xvimage[current_buf]->pitches[0]); } + } -static void draw_alpha_yuy2(int x0, int y0, int w, int h, +} + +static void draw_alpha_yuy2(int x0, int y0, int w, int h, int dp, unsigned char *src, unsigned char *srca, int stride) { + switch (dp) { + case DEST_PLANES_Y: + x0 += image_width * (vo_panscan_x >> 1) / (vo_dwidth + vo_panscan_x); + vo_draw_alpha_yuy2(w, h, dp, src, srca, stride, + xvimage[current_buf]->data + + xvimage[current_buf]->offsets[0] + + xvimage[current_buf]->pitches[0] * y0 + 2 * x0, + xvimage[current_buf]->pitches[0]); + break; + case DEST_PLANES_YUYV: x0 += image_width * (vo_panscan_x >> 1) / (vo_dwidth + vo_panscan_x); - vo_draw_alpha_yuy2(w, h, src, srca, stride, + vo_draw_alpha_yv12(w, h, dp, src, srca, stride, xvimage[current_buf]->data + xvimage[current_buf]->offsets[0] + xvimage[current_buf]->pitches[0] * y0 + 2 * x0, xvimage[current_buf]->pitches[0]); + break; + } } -static void draw_alpha_uyvy(int x0, int y0, int w, int h, +static void draw_alpha_uyvy(int x0, int y0, int w, int h, int dp, unsigned char *src, unsigned char *srca, int stride) { x0 += image_width * (vo_panscan_x >> 1) / (vo_dwidth + vo_panscan_x); - vo_draw_alpha_yuy2(w, h, src, srca, stride, + vo_draw_alpha_yuy2(w, h, dp, src, srca, stride, xvimage[current_buf]->data + xvimage[current_buf]->offsets[0] + xvimage[current_buf]->pitches[0] * y0 + 2 * x0 + 1, xvimage[current_buf]->pitches[0]); } -static void draw_alpha_null(int x0, int y0, int w, int h, +static void draw_alpha_null(int x0, int y0, int w, int h, int dp, unsigned char *src, unsigned char *srca, int stride) { @@ -192,7 +228,7 @@ if ((max_width != 0 && max_height != 0) && (image_width > max_width || image_height > max_height)) { - mp_msg( MSGT_VO, MSGL_ERR, MSGTR_VO_XV_ImagedimTooHigh, + mp_msg( MSGT_VO, MSGL_ERR, "[xv] " MSGTR_VO_XV_ImagedimTooHigh, image_width, image_height, max_width, max_height); return -1; } @@ -367,11 +403,13 @@ { case IMGFMT_YV12: case IMGFMT_I420: + support_yuvspu = VO_TRUE; case IMGFMT_IYUV: draw_alpha_fnc = draw_alpha_yv12; break; case IMGFMT_YUY2: case IMGFMT_YVYU: + support_yuyspu = VO_TRUE; draw_alpha_fnc = draw_alpha_yuy2; break; case IMGFMT_UYVY: @@ -453,7 +491,7 @@ { Shmem_Flag = 0; mp_msg(MSGT_VO, MSGL_INFO, - MSGTR_LIBVO_XV_SharedMemoryNotSupported); + "Shared memory not supported\nReverting to normal Xv\n"); } if (Shmem_Flag) { @@ -790,7 +828,9 @@ if (Success != XvQueryExtension(mDisplay, &ver, &rel, &req, &ev, &err)) { mp_msg(MSGT_VO, MSGL_ERR, - MSGTR_LIBVO_XV_XvNotSupportedByX11); + "Sorry, Xv not supported by this X11 version/driver\n"); + mp_msg(MSGT_VO, MSGL_ERR, + "******** Try with -vo x11 or -vo sdl *********\n"); return -1; } @@ -799,7 +839,7 @@ XvQueryAdaptors(mDisplay, DefaultRootWindow(mDisplay), &adaptors, &ai)) { - mp_msg(MSGT_VO, MSGL_ERR, MSGTR_LIBVO_XV_XvQueryAdaptorsFailed); + mp_msg(MSGT_VO, MSGL_ERR, "Xv: XvQueryAdaptors failed\n"); return -1; } @@ -830,7 +870,7 @@ } else { mp_msg(MSGT_VO, MSGL_WARN, - MSGTR_LIBVO_XV_InvalidPortParameter); + "Xv: Invalid port parameter, overriding with port 0\n"); xv_port = 0; } } @@ -848,7 +888,7 @@ } else { mp_msg(MSGT_VO, MSGL_WARN, - MSGTR_LIBVO_XV_CouldNotGrabPort, (int) xv_p); + "Xv: could not grab port %i\n", (int) xv_p); ++busy_ports; } } @@ -857,10 +897,14 @@ { if (busy_ports) mp_msg(MSGT_VO, MSGL_ERR, - MSGTR_LIBVO_XV_CouldNotFindFreePort); + "Could not find free Xvideo port - maybe another process is already using it.\n" + "Close all video applications, and try again. If that does not help,\n" + "see 'mplayer -vo help' for other (non-xv) video out drivers.\n"); else mp_msg(MSGT_VO, MSGL_ERR, - MSGTR_LIBVO_XV_NoXvideoSupport); + "It seems there is no Xvideo support for your video card available.\n" + "Run 'xvinfo' to verify its Xv support and read DOCS/HTML/en/video.html#xv!\n" + "See 'mplayer -vo help' for other (non-xv) video out drivers. Try -vo x11\n"); return -1; } @@ -951,6 +995,14 @@ case VOCTRL_UPDATE_SCREENINFO: update_xinerama_info(); return VO_TRUE; + case VOCTRL_YUVSPU_SUPPORT: + return support_yuvspu; + case VOCTRL_RGBSPU_SUPPORT: + return VO_FALSE; + case VOCTRL_BGRSPU_SUPPORT: + return VO_FALSE; + case VOCTRL_YUYSPU_SUPPORT: + return support_yuyspu; } return VO_NOTIMPL; } diff -Naur MPlayer-r23256.orig/libvo/vo_xvmc.c MPlayer-r23256/libvo/vo_xvmc.c --- MPlayer-r23256.orig/libvo/vo_xvmc.c 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libvo/vo_xvmc.c 2007-05-08 02:56:36.000000000 +0200 @@ -94,12 +94,12 @@ static int free_element; -static void (*draw_osd_fnc)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride); +static void (*draw_osd_fnc)(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride); static void (*clear_osd_fnc)(int x0,int y0, int w,int h); static void (*init_osd_fnc)(void); -static void draw_osd_AI44(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride); -static void draw_osd_IA44(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride); +static void draw_osd_AI44(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride); +static void draw_osd_IA44(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride); static void clear_osd_subpic(int x0,int y0, int w,int h); static void init_osd_yuv_pal(void); @@ -880,7 +880,7 @@ subpicture_alloc = 1; } -static void draw_osd_IA44(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){ +static void draw_osd_IA44(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride){ int ox,oy; int rez; @@ -900,7 +900,7 @@ } } -static void draw_osd_AI44(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){ +static void draw_osd_AI44(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride){ int ox,oy; int rez; if( mp_msg_test(MSGT_VO,MSGL_DBG4) ) diff -Naur MPlayer-r23256.orig/libvo/vo_yuv4mpeg.c MPlayer-r23256/libvo/vo_yuv4mpeg.c --- MPlayer-r23256.orig/libvo/vo_yuv4mpeg.c 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/libvo/vo_yuv4mpeg.c 2007-05-08 02:56:36.000000000 +0200 @@ -181,25 +181,37 @@ } } -static void draw_alpha(int x0, int y0, int w, int h, unsigned char *src, +static void draw_alpha(int x0, int y0, int w, int h, int dp, unsigned char *src, unsigned char *srca, int stride) { switch (using_format) { case IMGFMT_YV12: - vo_draw_alpha_yv12(w, h, src, srca, stride, + switch (dp) { + case DEST_PLANES_Y: + vo_draw_alpha_yv12(w, h, dp, src, srca, stride, image + y0 * image_width + x0, image_width); break; + case DEST_PLANES_U: + if (image_u) vo_draw_alpha_yv12(w, h, dp, src, srca, stride, + image_u + y0 * image_width + x0, image_width); + break; + case DEST_PLANES_V: + if (image_v) vo_draw_alpha_yv12(w, h, dp, src, srca, stride, + image_v + y0 * image_width + x0, image_width); + break; + } + break; case IMGFMT_BGR|24: case IMGFMT_RGB|24: if (config_interlace != Y4M_ILACE_BOTTOM_FIRST) - vo_draw_alpha_rgb24(w, h, src, srca, stride, + vo_draw_alpha_rgb24(w, h, dp, src, srca, stride, rgb_buffer + (y0 * image_width + x0) * 3, image_width * 3); else { swap_fields (rgb_buffer, image_height, image_width * 3); - vo_draw_alpha_rgb24(w, h, src, srca, stride, + vo_draw_alpha_rgb24(w, h, dp, src, srca, stride, rgb_buffer + (y0 * image_width + x0) * 3, image_width * 3); swap_fields (rgb_buffer, image_height, image_width * 3); @@ -545,6 +557,15 @@ return query_format(*((uint32_t*)data)); case VOCTRL_DUPLICATE_FRAME: return write_last_frame(); + case VOCTRL_YUVSPU_SUPPORT: + if (using_format==IMGFMT_YV12) return VO_TRUE; + return VO_FALSE; + case VOCTRL_RGBSPU_SUPPORT: + if (using_format==IMGFMT_RGB|24) return VO_TRUE; + return VO_FALSE; + case VOCTRL_BGRSPU_SUPPORT: + if (using_format==IMGFMT_BGR|24) return VO_TRUE; + return VO_FALSE; } return VO_NOTIMPL; } diff -Naur MPlayer-r23256.orig/spudec.c MPlayer-r23256/spudec.c --- MPlayer-r23256.orig/spudec.c 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/spudec.c 2007-05-08 02:56:36.000000000 +0200 @@ -94,6 +94,52 @@ int spu_changed; unsigned int forced_subs_only; /* flag: 0=display all subtitle, !0 display only forced subtitles */ unsigned int is_forced_sub; /* true if current subtitle is a forced subtitle */ + + packet_t *last_packet; + unsigned int widthuv, heightuv, strideuv; + unsigned int start_coluv, end_coluv; + unsigned int start_rowuv, end_rowuv; + size_t image_sizeuv; + size_t scaled_image_sizeuv; + size_t image_sizeyuy; + + unsigned int scaled_frame_widthuv, scaled_frame_heightuv; + unsigned int scaled_start_coluv, scaled_start_rowuv; + unsigned int scaled_widthuv, scaled_heightuv, scaled_strideuv; + unsigned char *scaled_imageu; + unsigned char *scaled_imagev; + unsigned char *scaled_aimageuv; + + unsigned int hpalette[4]; + unsigned int halpha[4]; + unsigned int hcuspal[4]; + + unsigned char *imageu; /* u value from yUv */ + unsigned char *imagev; /* v value from yuV*/ + unsigned char *aimageuv; /* alpha with uv*/ + unsigned char *imageyuy; /* yuy2 */ + unsigned char *aimageyuy; /* alpha with yuy2*/ + unsigned int strideyuy; + + int dvdnav_color_spu; /* flag: 0 = grayscale SPU, 1 = YUV color SPU 2 = RGB 3 = BGR */ + + int dvdnav_menu; /* flag: 0=normal subtitle, 1=dvdnav menu */ + unsigned int dvdnav_sx; /* dvdnav menu item box */ + unsigned int dvdnav_ex; + unsigned int dvdnav_sy; + unsigned int dvdnav_ey; + unsigned int dvdnav_modify; /* dvdnav menu item box is modify */ + uint32_t dvdnav_palette; /* dvdnav menu button palette */ + unsigned int dvdnav_x0; /* dvdnav menu item draw_alpha coordinates */ + unsigned int dvdnav_y0; + unsigned int dvdnav_w; + unsigned int dvdnav_h; + unsigned char *dvdnav_image; /* dvdnav menu item image */ + unsigned char *dvdnav_aimage; /* dvdnav menu item alpha */ + unsigned int dvdnav_stride; + unsigned int dvdnav_allocated; + unsigned int dvdnav_scalex; + unsigned int dvdnav_scaley; } spudec_handle_t; static void spudec_queue_packet(spudec_handle_t *this, packet_t *packet) @@ -213,11 +259,132 @@ } else { mp_msg(MSGT_SPUDEC, MSGL_FATAL, "Fatal: update_spu: malloc requested %d bytes\n", 2 * this->stride * this->height); } + unsigned char *imageu; + unsigned char *imagev; + switch (this->dvdnav_color_spu) { + case DVDNAV_SPU_YUV: + case DVDNAV_SPU_YUY: + for (fy = 0; fy < this->image_sizeuv && !this->aimageuv[fy]; fy++); + for (ly = this->strideuv * this->heightuv-1; + ly && !this->aimageuv[ly]; ly--); + first_y = fy / this->strideuv; + last_y = ly / this->strideuv; + this->start_rowuv += first_y; + // Some subtitles trigger this condition + if (last_y + 1 > first_y ) { + this->heightuv = last_y - first_y +1; + } else { + this->heightuv = 0; + this->image_sizeuv = 0; + return; + } + // printf("new h %d new start %d (sz %d st %d)---\n\n", this->height, this->start_row, this->image_size, this->stride); + imageu = malloc(3 * this->strideuv * this->heightuv); + if(imageu){ + this->image_sizeuv = this->strideuv * this->heightuv; + imagev = imageu + this->image_sizeuv; + aimage = imagev + this->image_sizeuv; + memcpy(imageu, this->imageu + this->strideuv * first_y, + this->image_sizeuv); + memcpy(imagev, this->imagev + this->strideuv * first_y, + this->image_sizeuv); + memcpy(aimage, this->aimageuv + this->strideuv * first_y, + this->image_sizeuv); + free(this->imageu); + this->imageu = imageu; + this->imagev = imagev; + this->aimageuv = aimage; + } else { + mp_msg(MSGT_SPUDEC, MSGL_FATAL, + "Fatal: update_spu: malloc requested %d bytes\n", + 3 * this->strideuv * this->height); + } + break; + case DVDNAV_SPU_RGB: + case DVDNAV_SPU_BGR: + this->image_sizeuv = this->stride * this->height; + imageu = malloc(2 * this->stride * this->height); + if(imageu){ + imagev = imageu + this->image_size; + memcpy(imageu, this->imageu + this->stride * first_y, this->image_size); + memcpy(imagev, this->imagev + this->stride * first_y, this->image_size); + free(this->imageu); + this->imageu = imageu; + this->imagev = imagev; + this->aimageuv = NULL; + } else { + mp_msg(MSGT_SPUDEC, MSGL_FATAL, + "Fatal: update_spu: malloc requested %d bytes\n", + 2 * this->stride * this->height); + } + break; + } +} + +void spu_yuv_to_rgb(unsigned int y,unsigned int u,unsigned int v, + unsigned int *r,unsigned int *g,unsigned int *b) +{ +int ty,tu,tv; +int tr,tg,tb; +ty=y;tv=u;tu=v; +tr = (298*(ty-16)+408*(tv-128))/256; +tg = (298*(ty-16)-100*(tu-128)-208*(tv-128))/256; +tb = (298*(ty-16)+516*(tu-128))/256; +if(tr>255) tr=255; if(tr<0) tr=0; +if(tg>255) tg=255; if(tg<0) tg=0; +if(tb>255) tb=255; if(tb<0) tb=0; +*r=tr; *g=tg; *b=tb; +return; +} + +static void spudec_process_fill(spudec_handle_t *this, int x, int y, int len, + unsigned char color, unsigned char coloru, unsigned char colorv, + unsigned char alpha) +{ +unsigned int corrx, corry, corrl; +if (this->stride-x-len<0) return; +if (len<0) return; +switch (this->dvdnav_color_spu) + { + case DVDNAV_SPU_YUV: + case DVDNAV_SPU_YUY: + corry=y & 0x01; + corrx=x & 0x01; + corrl=len & 0x01; + memset(this->image + y * this->stride + x, color, len); + memset(this->aimage + y * this->stride + x, alpha, len); + memset(this->imageu + (y-corry)/2 * this->strideuv + (x+corrx)/2, coloru, + (len-corrl)/2); + memset(this->imagev + (y-corry)/2 * this->strideuv + (x+corrx)/2, colorv, + (len-corrl)/2); + memset(this->aimageuv + (y-corry)/2 * this->strideuv + (x+corrx)/2, alpha, + (len-corrl)/2); + break; + case DVDNAV_SPU_RGB: + case DVDNAV_SPU_BGR: + memset(this->image + y * this->stride + x, color, len); + memset(this->imageu + y * this->stride + x, coloru, len); + memset(this->imagev + y * this->stride + x, colorv, len); + memset(this->aimage + y * this->stride + x, alpha, len); + break; + default: + memset(this->image + y * this->stride + x, color, len); + memset(this->aimage + y * this->stride + x, alpha, len); + break; +} } static void spudec_process_data(spudec_handle_t *this, packet_t *packet) { unsigned int cmap[4], alpha[4]; + unsigned int thpalette[4], thalpha[4]; + unsigned int hcmap[4], halpha[4]; + unsigned int cmapu[4], cmapv[4]; + unsigned int hcmapu[4], hcmapv[4]; + unsigned int control_start; + unsigned int current_nibble[2]; + unsigned int ty,tu,tv,tr,tg,tb; + int deinterlace_oddness; unsigned int i, x, y; this->scaled_frame_width = 0; @@ -229,6 +396,18 @@ this->height = packet->height; this->width = packet->width; this->stride = packet->stride; + this->strideuv = packet->stride; + control_start = packet->control_start; + current_nibble[0]=packet->current_nibble[0]; + current_nibble[1]=packet->current_nibble[1]; + deinterlace_oddness=packet->deinterlace_oddness; + + this->start_coluv = packet->start_col/2; + this->end_coluv = packet->end_col/2; + this->start_rowuv = packet->start_row/2; + this->end_rowuv = packet->end_row/2; + this->heightuv = packet->height/2+1; + this->widthuv = packet->width/2+1; for (i = 0; i < 4; ++i) { alpha[i] = mkalpha(packet->alpha[i]); if (alpha[i] == 0) @@ -244,7 +423,92 @@ cmap[i] = 256 - alpha[i]; } } - + if (this->dvdnav_menu) { + for (i = 0; i < 4; ++i) { /* use button palette */ + thalpha[i]=(this->dvdnav_palette >> ((3-i)*4)) & 0x0f; + thpalette[i]=(this->dvdnav_palette >> (16+(3-i)*4)) & 0x0f; + halpha[i] = mkalpha(thalpha[i]); + hcmap[i] = ((this->global_palette[thpalette[i]] >> 16) & 0xff); + if (alpha[i] == 0) {cmap[i] = 0; cmapu[i] = 0; cmapv[i] = 0;} else { + if (cmap[i] + alpha[i] > 255) + cmap[i] = 256 - alpha[i]; + switch (this->dvdnav_color_spu) { + case DVDNAV_SPU_YUV: + case DVDNAV_SPU_YUY: + cmap[i] = ((this->global_palette[packet->palette[i]] >> 16) & 0xff); // Y + cmap[i] = ((0x100-alpha[i])*cmap[i]) >> 8; + cmapu[i] = ((this->global_palette[packet->palette[i]] >> 8) & 0xff); // u + cmapu[i] = ((0x100-alpha[i])*cmapu[i]) >> 8; + cmapv[i] = ((this->global_palette[packet->palette[i]] >> 0) & 0xff); // v + cmapv[i] = ((0x100-alpha[i])*cmapv[i]) >> 8; + break; + case DVDNAV_SPU_RGB: + ty = ((this->global_palette[packet->palette[i]] >> 16) & 0xff); // Y + tu = ((this->global_palette[packet->palette[i]] >> 8) & 0xff); // u + tv = ((this->global_palette[packet->palette[i]] >> 0) & 0xff); // v + spu_yuv_to_rgb(ty,tu,tv,&tr,&tg,&tb); + cmap[i] = tr; + cmapu[i] = tg; + cmapv[i] = tb; + cmap[i] = ((0x100-alpha[i])*cmap[i]) >> 8; + cmapu[i] = ((0x100-alpha[i])*cmapu[i]) >> 8; + cmapv[i] = ((0x100-alpha[i])*cmapv[i]) >> 8; + break; + case DVDNAV_SPU_BGR: + ty = ((this->global_palette[packet->palette[i]] >> 16) & 0xff); // Y + tu = ((this->global_palette[packet->palette[i]] >> 8) & 0xff); // u + tv = ((this->global_palette[packet->palette[i]] >> 0) & 0xff); // v + spu_yuv_to_rgb(ty,tu,tv,&tr,&tg,&tb); + cmap[i] = tb; + cmapu[i] = tg; + cmapv[i] = tr; + cmap[i] = ((0x100-alpha[i])*cmap[i]) >> 8; + cmapu[i] = ((0x100-alpha[i])*cmapu[i]) >> 8; + cmapv[i] = ((0x100-alpha[i])*cmapv[i]) >> 8; + break; + } + } + if (halpha[i] == 0) {hcmap[i] = 0; hcmapu[i] = 0; hcmapv[i] = 0;} else { + if (hcmap[i] + halpha[i] > 255) + hcmap[i] = 256 - halpha[i]; + switch (this->dvdnav_color_spu) { + case DVDNAV_SPU_YUV: + case DVDNAV_SPU_YUY: + hcmap[i] = ((this->global_palette[thpalette[i]] >> 16) & 0xff); // Y + hcmap[i] = ((0x100-halpha[i])*hcmap[i]) >> 8; + hcmapu[i] = ((this->global_palette[thpalette[i]] >> 8) & 0xff); // u + hcmapu[i] = ((0x100-halpha[i])*hcmapu[i]) >> 8; + hcmapv[i] = ((this->global_palette[thpalette[i]] >> 0) & 0xff); // v + hcmapv[i] = ((0x100-halpha[i])*hcmapv[i]) >> 8; + break; + case DVDNAV_SPU_RGB: + ty = ((this->global_palette[thpalette[i]] >> 16) & 0xff); // Y + tu = ((this->global_palette[thpalette[i]] >> 8) & 0xff); // u + tv = ((this->global_palette[thpalette[i]] >> 0) & 0xff); // v + spu_yuv_to_rgb(ty,tu,tv,&tr,&tg,&tb); + hcmap[i] = tr; + hcmapu[i] = tg; + hcmapv[i] = tb; + hcmap[i] = ((0x100-halpha[i])*hcmap[i]) >> 8; + hcmapu[i] = ((0x100-halpha[i])*hcmapu[i]) >> 8; + hcmapv[i] = ((0x100-halpha[i])*hcmapv[i]) >> 8; + break; + case DVDNAV_SPU_BGR: + ty = ((this->global_palette[thpalette[i]] >> 16) & 0xff); // Y + tu = ((this->global_palette[thpalette[i]] >> 8) & 0xff); // u + tv = ((this->global_palette[thpalette[i]] >> 0) & 0xff); // v + spu_yuv_to_rgb(ty,tu,tv,&tr,&tg,&tb); + hcmap[i] = tb; + hcmapu[i] = tg; + hcmapv[i] = tr; + hcmap[i] = ((0x100-halpha[i])*hcmap[i]) >> 8; + hcmapu[i] = ((0x100-halpha[i])*hcmapu[i]) >> 8; + hcmapv[i] = ((0x100-halpha[i])*hcmapv[i]) >> 8; + break; + } + } + } +} if (this->image_size < this->stride * this->height) { if (this->image != NULL) { free(this->image); @@ -258,6 +522,57 @@ } if (this->image == NULL) return; +if(this->dvdnav_menu && this->dvdnav_color_spu) + { + if (this->imageyuy) + { + free(this->imageyuy); + this->imageyuy=NULL; + this->aimageyuy=NULL; + } + if (this->dvdnav_color_spu==DVDNAV_SPU_YUV || + this->dvdnav_color_spu==DVDNAV_SPU_YUY) + { + if (this->image_sizeuv < this->strideuv * this->heightuv) + { + if (this->imageu != NULL) + { + free(this->imageu); + this->image_sizeuv = 0; + } + this->imageu = malloc(3 * this->strideuv * this->heightuv); + if (this->imageu) + { + this->image_sizeuv = this->strideuv * this->heightuv; + this->imagev = this->imageu + this->image_sizeuv; + this->aimageuv = this->imagev + this->image_sizeuv; + } + } + memset(this->imageu,0,3 * this->strideuv * this->heightuv); + } else { + if (this->image_sizeuv < this->stride * this->height) + { + if (this->imageu != NULL) + { + free(this->imageu); + this->image_sizeuv = 0; + } + this->imageu = malloc(2 * this->stride * this->height); + if (this->imageu) + { + this->image_sizeuv = this->stride * this->height; + this->imagev = this->imageu + this->image_sizeuv; + this->aimageuv = this->imagev + this->image_sizeuv; + } + } + memset(this->imageu,0,2 * this->stride * this->height); + } + if (this->imageu == NULL) return; + } else { + if (this->imageu) free(this->imageu); + this->imageu=NULL; + this->image_sizeuv=0; + } /* Kludge: draw_alpha needs width multiple of 8. */ if (this->width < this->stride) @@ -292,8 +607,86 @@ if (len > this->width - x || len == 0) len = this->width - x; /* FIXME have to use palette and alpha map*/ + if (this->dvdnav_menu) + { + if (this->start_row+y>=this->dvdnav_sy && + this->start_row+y<=this->dvdnav_ey) + { + if (this->start_col+x>=this->dvdnav_sx && + this->start_col+x+len<=this->dvdnav_ex) + spudec_process_fill(this, + x, + y, + len, + hcmap[color], hcmapu[color], hcmapv[color], halpha[color]); + else if(this->start_col+xdvdnav_sx && + this->start_col+x+len>this->dvdnav_sx && + this->start_col+x+len<=this->dvdnav_ex) + { + spudec_process_fill(this, + x, + y, + this->dvdnav_sx-this->start_col-x, + cmap[color], cmapu[color], cmapv[color], alpha[color]); + spudec_process_fill(this, + this->dvdnav_sx-this->start_col, + y, + len+this->start_col+x-this->dvdnav_sx, + hcmap[color], hcmapu[color], hcmapv[color], halpha[color]); + } + else if(this->start_col+xdvdnav_sx && + this->start_col+x+len>this->dvdnav_sx && + this->start_col+x+len>this->dvdnav_ex) + { + spudec_process_fill(this, + x, + y, + this->dvdnav_sx-this->start_col-x, + cmap[color], cmapu[color], cmapv[color], alpha[color]); + spudec_process_fill(this, + this->dvdnav_sx-this->start_col, + y, + this->dvdnav_ex-this->dvdnav_sx, + hcmap[color], hcmapu[color], hcmapv[color], halpha[color]); + spudec_process_fill(this, + this->dvdnav_ex-this->start_col, + y, + x+len+this->start_col-this->dvdnav_ex, + cmap[color], cmapu[color], cmapv[color], alpha[color]); + } + else if(this->start_col+x>=this->dvdnav_sx && + this->start_col+xdvdnav_ex && + this->start_col+x+len>this->dvdnav_ex) + { + spudec_process_fill(this, + x, + y, + this->dvdnav_ex-this->start_col-x, + hcmap[color], hcmapu[color], hcmapv[color], halpha[color]); + spudec_process_fill(this, + this->dvdnav_ex-this->start_col, + y, + len+this->start_col+x-this->dvdnav_ex, + cmap[color], cmapu[color], cmapv[color], alpha[color]); + } + else + spudec_process_fill(this, + x, + y, + len, + cmap[color], cmapu[color], cmapv[color], alpha[color]); + } else + spudec_process_fill(this, + x, + y, + len, + cmap[color], cmapu[color], cmapv[color], alpha[color]); + } + else + { memset(this->image + y * this->stride + x, cmap[color], len); memset(this->aimage + y * this->stride + x, alpha[color], len); + } x += len; if (x >= this->width) { next_line(packet); @@ -301,7 +694,12 @@ ++y; } } + packet->control_start = control_start; + packet->current_nibble[0]=current_nibble[0]; + packet->current_nibble[1]=current_nibble[1]; + packet->deinterlace_oddness=deinterlace_oddness; spudec_cut_image(this); +//printf("spudec_process_data: w: %i h: %i end\n",this->height,this->width); } @@ -316,6 +714,7 @@ { int used[16],i,cused,start,step,color; +//printf("spudec:c1 ");for(i=0;i<16;i++) printf("%x ",this->global_palette[i]); printf("\n"); memset(used, 0, sizeof(used)); for (i=0; i<4; i++) if (packet->alpha[i]) /* !Transparent? */ @@ -339,6 +738,7 @@ start += step; } } +//printf("spudec:c2 ");for(i=0;i<16;i++) printf("%x ",this->global_palette[i]); printf("\n"); } static void spudec_process_control(spudec_handle_t *this, unsigned int pts100) @@ -586,6 +986,7 @@ spu->now_pts = 0; spu->end_pts = 0; spu->packet_size = spu->packet_offset = 0; +// if (spu->last_packet) {printf("free4\n");spudec_free_packet(spu->last_packet); spu->last_packet=NULL;} } void spudec_heartbeat(void *this, unsigned int pts100) @@ -593,24 +994,39 @@ spudec_handle_t *spu = (spudec_handle_t*) this; spu->now_pts = pts100; + if(spu->queue_head) spu->queue_head->start_pts=0; while (spu->queue_head != NULL && pts100 >= spu->queue_head->start_pts) { packet_t *packet = spudec_dequeue_packet(spu); spu->start_pts = packet->start_pts; spu->end_pts = packet->end_pts; - if (spu->auto_palette) + if (spu->auto_palette && !spu->dvdnav_menu) compute_palette(spu, packet); spudec_process_data(spu, packet); + if (spu->dvdnav_menu) + { + if(spu->last_packet) + { + spudec_free_packet(spu->last_packet); + } + spu->last_packet=packet; + } else spudec_free_packet(packet); spu->spu_changed = 1; } } + int spudec_visible(void *this){ spudec_handle_t *spu = (spudec_handle_t *)this; + if(!spu) return 0; + if (spu->dvdnav_menu && spu->height > 0) + { + if(spu->height>0) spu->end_pts=UINT_MAX; + return 1; + } int ret=(spu->start_pts <= spu->now_pts && spu->now_pts < spu->end_pts && spu->height > 0); -// printf("spu visible: %d \n",ret); return ret; } @@ -622,12 +1038,90 @@ } } -void spudec_draw(void *this, void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride)) +void spudec_draw(void *this, void (*draw_alpha)(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride)) { spudec_handle_t *spu = (spudec_handle_t *)this; if (spu->start_pts <= spu->now_pts && spu->now_pts < spu->end_pts && spu->image) { - draw_alpha(spu->start_col, spu->start_row, spu->width, spu->height, + if (spu->dvdnav_menu) + { /* spu menu mode? */ + switch (spu->dvdnav_color_spu) + { + case DVDNAV_SPU_YUV: + draw_alpha(spu->start_col, + spu->start_row, + spu->width, + spu->height, + DEST_PLANES_Y, + spu->image, + spu->aimage, + spu->stride); + draw_alpha(spu->start_coluv, + spu->start_rowuv, + spu->widthuv, + spu->heightuv, + DEST_PLANES_U, + spu->imageu, + spu->aimageuv, + spu->strideuv); + draw_alpha(spu->start_coluv, + spu->start_rowuv, + spu->widthuv, + spu->heightuv, + DEST_PLANES_V, + spu->imagev, + spu->aimageuv, + spu->strideuv); + break; + case DVDNAV_SPU_YUY: + if (!spu->imageyuy) spudec_create_yuy(spu,0); + if (spu->imageyuy) draw_alpha(spu->start_col, + spu->start_row, + spu->width*2, + spu->height/2, + DEST_PLANES_YUYV, + spu->imageyuy, + spu->aimageyuy, + spu->strideyuy); + break; + case DVDNAV_SPU_RGB: + case DVDNAV_SPU_BGR: + draw_alpha(spu->start_col, + spu->start_row, + spu->width, spu->height, + DEST_PLANES_BR, + spu->imagev, + spu->aimage, + spu->stride); + draw_alpha(spu->start_col, + spu->start_row, + spu->width, + spu->height, + DEST_PLANES_G, + spu->imageu, + spu->aimage, + spu->stride); + draw_alpha(spu->start_col, + spu->start_row, + spu->width, + spu->height, + DEST_PLANES_RB, + spu->image, + spu->aimage, + spu->stride); + break; + default: + draw_alpha(spu->start_col, + spu->start_row, + spu->width, + spu->height, + DEST_PLANES_Y, + spu->image, + spu->aimage, + spu->stride); + } + } else + draw_alpha(spu->start_col, spu->start_row, spu->width, spu->height,DEST_PLANES_Y, spu->image, spu->aimage, spu->stride); spu->spu_changed = 0; } @@ -739,6 +1233,119 @@ } } +static void scale_image_uv(int x, int y, scale_pixel* table_x, + scale_pixel* table_y, spudec_handle_t * spu) +{ + int alpha[4]; + int coloru[4]; + int colorv[4]; + unsigned int scale[4]; + int base = table_y[y].position * spu->strideuv + table_x[x].position; + int scaled = y * spu->scaled_strideuv + x; + alpha[0] = canon_alpha(spu->aimageuv[base]); + alpha[1] = canon_alpha(spu->aimageuv[base + 1]); + alpha[2] = canon_alpha(spu->aimageuv[base + spu->strideuv]); + alpha[3] = canon_alpha(spu->aimageuv[base + spu->strideuv + 1]); + coloru[0] = spu->imageu[base]; + coloru[1] = spu->imageu[base + 1]; + coloru[2] = spu->imageu[base + spu->strideuv]; + coloru[3] = spu->imageu[base + spu->strideuv + 1]; + colorv[0] = spu->imagev[base]; + colorv[1] = spu->imagev[base + 1]; + colorv[2] = spu->imagev[base + spu->strideuv]; + colorv[3] = spu->imagev[base + spu->strideuv + 1]; +// FIXME: color hack!!! +// scale[0] = (table_x[x].left_up * table_y[y].left_up >> 16) * alpha[0]; +// scale[1] = (table_x[x].right_down * table_y[y].left_up >>16) * alpha[1]; +// scale[2] = (table_x[x].left_up * table_y[y].right_down >> 16) * alpha[2]; +// scale[3] = (table_x[x].right_down * table_y[y].right_down >> 16) * alpha[3]; + scale[0] = (table_x[x].left_up * table_y[y].left_up >> 16) * 0x100; + scale[1] = (table_x[x].right_down * table_y[y].left_up >>16) * 0x100; + scale[2] = (table_x[x].left_up * table_y[y].right_down >> 16) * 0x100; + scale[3] = (table_x[x].right_down * table_y[y].right_down >> 16) * 0x100; + spu->scaled_imageu[scaled] = + (coloru[0] * scale[0] + + coloru[1] * scale[1] + + coloru[2] * scale[2] + + coloru[3] * scale[3])>>24; + spu->scaled_imagev[scaled] = + (colorv[0] * scale[0] + + colorv[1] * scale[1] + + colorv[2] * scale[2] + + colorv[3] * scale[3])>>24; + scale[0] = (table_x[x].left_up * table_y[y].left_up >> 16) * alpha[0]; + scale[1] = (table_x[x].right_down * table_y[y].left_up >>16) * alpha[1]; + scale[2] = (table_x[x].left_up * table_y[y].right_down >> 16) * alpha[2]; + scale[3] = (table_x[x].right_down * table_y[y].right_down >> 16) * alpha[3]; + spu->scaled_aimageuv[scaled] = + (scale[0] + scale[1] + scale[2] + scale[3]) >> 16; + if (spu->scaled_aimageuv[scaled]){ + spu->scaled_aimageuv[scaled] = 256 - spu->scaled_aimageuv[scaled]; + if(spu->scaled_aimageuv[scaled] + spu->scaled_imageu[scaled] > 255) + spu->scaled_imageu[scaled] = 256 - spu->scaled_aimageuv[scaled]; + if(spu->scaled_aimageuv[scaled] + spu->scaled_imagev[scaled] > 255) + spu->scaled_imagev[scaled] = 256 - spu->scaled_aimageuv[scaled]; + } +} + +static void scale_image_rgb(int x, int y, scale_pixel* table_x, scale_pixel* table_y, spudec_handle_t * spu) +{ + int alpha[4]; + int colorr[4]; + int colorg[4]; + int colorb[4]; + unsigned int scale[4]; + int base = table_y[y].position * spu->stride + table_x[x].position; + int scaled = y * spu->scaled_stride + x; + alpha[0] = canon_alpha(spu->aimage[base]); + alpha[1] = canon_alpha(spu->aimage[base + 1]); + alpha[2] = canon_alpha(spu->aimage[base + spu->stride]); + alpha[3] = canon_alpha(spu->aimage[base + spu->stride + 1]); + colorr[0] = spu->image[base]; + colorr[1] = spu->image[base + 1]; + colorr[2] = spu->image[base + spu->stride]; + colorr[3] = spu->image[base + spu->stride + 1]; + colorg[0] = spu->imageu[base]; + colorg[1] = spu->imageu[base + 1]; + colorg[2] = spu->imageu[base + spu->stride]; + colorg[3] = spu->imageu[base + spu->stride + 1]; + colorb[0] = spu->imagev[base]; + colorb[1] = spu->imagev[base + 1]; + colorb[2] = spu->imagev[base + spu->stride]; + colorb[3] = spu->imagev[base + spu->stride + 1]; + scale[0] = (table_x[x].left_up * table_y[y].left_up >> 16) * alpha[0]; + scale[1] = (table_x[x].right_down * table_y[y].left_up >>16) * alpha[1]; + scale[2] = (table_x[x].left_up * table_y[y].right_down >> 16) * alpha[2]; + scale[3] = (table_x[x].right_down * table_y[y].right_down >> 16) * alpha[3]; + spu->scaled_image[scaled] = + (colorr[0] * scale[0] + + colorr[1] * scale[1] + + colorr[2] * scale[2] + + colorr[3] * scale[3])>>24; + spu->scaled_imageu[scaled] = + (colorg[0] * scale[0] + + colorg[1] * scale[1] + + colorg[2] * scale[2] + + colorg[3] * scale[3])>>24; + spu->scaled_imagev[scaled] = + (colorb[0] * scale[0] + + colorb[1] * scale[1] + + colorb[2] * scale[2] + + colorb[3] * scale[3])>>24; + spu->scaled_aimage[scaled] = + (scale[0] + scale[1] + scale[2] + scale[3]) >> 16; + if (spu->scaled_aimage[scaled]){ + spu->scaled_aimage[scaled] = 256 - spu->scaled_aimage[scaled]; + if(spu->scaled_aimage[scaled] + spu->scaled_image[scaled] > 255) + spu->scaled_image[scaled] = 256 - spu->scaled_aimage[scaled]; + if(spu->scaled_aimage[scaled] + spu->scaled_imageu[scaled] > 255) + spu->scaled_imageu[scaled] = 256 - spu->scaled_aimage[scaled]; + if(spu->scaled_aimage[scaled] + spu->scaled_imagev[scaled] > 255) + spu->scaled_imagev[scaled] = 256 - spu->scaled_aimage[scaled]; + } +} + + void sws_spu_image(unsigned char *d1, unsigned char *d2, int dw, int dh, int ds, unsigned char *s1, unsigned char *s2, int sw, int sh, int ss) { @@ -765,11 +1372,202 @@ sws_freeContext(ctx); } -void spudec_draw_scaled(void *me, unsigned int dxs, unsigned int dys, void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride)) +void spudec_create_yuy(void *this, int spu_scaled) +{ +spudec_handle_t *spu = this; +unsigned char *dptr; +unsigned char *daptr; +unsigned char *sptry; +unsigned char *sptru; +unsigned char *sptrv; +unsigned char *saptr; +unsigned char *saptruv; +int y,x; + +if (spu_scaled) { + spu->strideyuy=spu->scaled_stride*2; + spu->imageyuy=malloc(spu->strideyuy*(spu->height+2)*2); + memset(spu->imageyuy,0,spu->strideyuy*(spu->height+2)*2); + spu->aimageyuy=spu->imageyuy+spu->strideyuy*spu->scaled_height; + for(y=0;yscaled_height;y++) { + dptr=spu->imageyuy+y*spu->strideyuy; + daptr=spu->aimageyuy+y*spu->strideyuy; + sptry=spu->scaled_image+y*spu->scaled_stride; + sptru=spu->scaled_imageu+y/2*spu->scaled_strideuv; + sptrv=spu->scaled_imagev+y/2*spu->scaled_strideuv; + saptr=spu->scaled_aimage+y*spu->scaled_stride; + saptruv=spu->scaled_aimageuv+y/2*spu->scaled_strideuv; + for(x=0;xscaled_widthuv-1;x++) { + *dptr++=*sptry++; + *dptr++=*sptrv++; + *dptr++=*sptry++; + *dptr++=*sptru++; + *daptr++=*saptr++; + *daptr++=*saptruv; + *daptr++=*saptr++; + *daptr++=*saptruv++; + } } + } else { + spu->strideyuy=spu->stride*2; + spu->imageyuy=malloc(spu->strideyuy*(spu->height+2)*2); + memset(spu->imageyuy,0,spu->strideyuy*(spu->height+2)*2); + spu->aimageyuy=spu->imageyuy+spu->strideyuy*spu->height; + for(y=0;yheight;y++) { + dptr=spu->imageyuy+y*spu->strideyuy; + daptr=spu->aimageyuy+y*spu->strideyuy; + sptry=spu->image+y*spu->stride; + sptru=spu->imageu+y/2*spu->strideuv; + sptrv=spu->imagev+y/2*spu->strideuv; + saptr=spu->aimage+y*spu->stride; + saptruv=spu->aimageuv+y/2*spu->strideuv; + for(x=0;xwidthuv-1;x++) { + *dptr++=*sptry++; + *dptr++=*sptrv++; + *dptr++=*sptry++; + *dptr++=*sptru++; + *daptr++=*saptr++; + *daptr++=*saptruv; + *daptr++=*saptr++; + *daptr++=*saptruv++; + } } + } +} + +void sws_spu_image_uv(unsigned char *du, unsigned char *dv, unsigned char *d2, + int dw, int dh, int ds, unsigned char *su, unsigned char *sv, + unsigned char *s2, int sw, int sh, int ss) +{ +struct SwsContext *ctx; +static SwsFilter filter; +static int firsttime = 1; +static float oldvar; +int i; + +if (!firsttime && oldvar != spu_gaussvar) sws_freeVec(filter.lumH); +if (firsttime) + { + filter.lumH = filter.lumV = + filter.chrH = filter.chrV = sws_getGaussianVec(spu_gaussvar, 3.0); + sws_normalizeVec(filter.lumH, 1.0); + firsttime = 0; + oldvar = spu_gaussvar; + } + +ctx=sws_getContext(sw, sh, IMGFMT_Y800, dw, dh, IMGFMT_Y800, SWS_GAUSS, &filter, NULL, NULL); +sws_scale(ctx,&su,&ss,0,sh,&du,&ds); +sws_scale(ctx,&sv,&ss,0,sh,&dv,&ds); +for (i=ss*sh-1; i>=0; i--) + if (!s2[i]) s2[i] = 255; //else s2[i] = 1; +sws_scale(ctx,&s2,&ss,0,sh,&d2,&ds); +for (i=ds*dh-1; i>=0; i--) + if (d2[i]==0) d2[i] = 1; + else if (d2[i]==255) d2[i] = 0; +sws_freeContext(ctx); +} + +void sws_spu_image_rgb(unsigned char *dr, unsigned char *dg, unsigned char *db, + unsigned char *d2, int dw, int dh, int ds, + unsigned char *sr,unsigned char *sg,unsigned char *sb, + unsigned char *s2, int sw, int sh, int ss) +{ +struct SwsContext *ctx; +static SwsFilter filter; +static int firsttime = 1; +static float oldvar; +int i; + +if (!firsttime && oldvar != spu_gaussvar) sws_freeVec(filter.lumH); +if (firsttime) + { + filter.lumH = filter.lumV = + filter.chrH = filter.chrV = sws_getGaussianVec(spu_gaussvar, 3.0); + sws_normalizeVec(filter.lumH, 1.0); + firsttime = 0; + oldvar = spu_gaussvar; + } + +ctx=sws_getContext(sw, sh, IMGFMT_Y800, dw, dh, IMGFMT_Y800, SWS_GAUSS, &filter, NULL, NULL); +sws_scale(ctx,&sr,&ss,0,sh,&dr,&ds); +sws_scale(ctx,&sg,&ss,0,sh,&dg,&ds); +sws_scale(ctx,&sb,&ss,0,sh,&db,&ds); +for (i=ss*sh-1; i>=0; i--) if (!s2[i]) s2[i] = 255; //else s2[i] = 1; +sws_scale(ctx,&s2,&ss,0,sh,&d2,&ds); +for (i=ds*dh-1; i>=0; i--) + if (d2[i]==0) d2[i] = 1; + else if (d2[i]==255) d2[i] = 0; +sws_freeContext(ctx); +} + +void spudec_dvdnav_mode(void *this, int mode, int cflg) +{ /* set/clear spu menu mode */ +spudec_handle_t *spu = (spudec_handle_t *)this; +if (!spu) return; +spu->dvdnav_menu=mode; +if (mode) + spu->dvdnav_color_spu=cflg; + else + spu->dvdnav_color_spu=0; +if (!spu->dvdnav_menu && spu->last_packet) + { + spudec_free_packet(spu->last_packet); + spu->last_packet=NULL; + } +return; +} + +void spudec_dvdnav_area(void *this, uint16_t sx, uint16_t sy, uint16_t ex, + uint16_t ey, uint32_t palette) +{ +spudec_handle_t *spu = this; +if (!spu) return; +if (spu->dvdnav_sx==FFMIN(sx,ex) && + spu->dvdnav_ex==FFMAX(sx,ex) && + spu->dvdnav_sy==FFMIN(sy,ey) && + spu->dvdnav_ey==FFMAX(sy,ey) && + spu->dvdnav_palette==palette) return; +spu->dvdnav_sx=FFMIN(sx,ex); /* set spu button area, palette & on */ +spu->dvdnav_ex=FFMAX(sx,ex); +spu->dvdnav_sy=FFMIN(sy,ey); +spu->dvdnav_ey=FFMAX(sy,ey); +spu->dvdnav_palette=palette; +spu->dvdnav_modify=1; +if (spu->dvdnav_menu && spu->last_packet) + { +// if (spu->auto_palette) +// compute_palette(spu, spu->last_packet); + spudec_process_data(spu, spu->last_packet); + } +return; +} + +void spudec_dvdnav_palette(void *this, uint32_t palette) +{ +spudec_handle_t *spu = this; +if (!spu) return; +spu->dvdnav_palette=palette; /* set spu button palette */ +return; +} + +void spudec_draw_scaled(void *me, unsigned int dxs, unsigned int dys, void (*draw_alpha)(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride)) { spudec_handle_t *spu = (spudec_handle_t *)me; scale_pixel *table_x; scale_pixel *table_y; + if (spu->dvdnav_menu) { + switch (spu->dvdnav_color_spu) + { + case DVDNAV_SPU_YUV: + case DVDNAV_SPU_YUY: + spudec_draw_scaled_yuv(me,dxs,dys,draw_alpha); + return; + break; + case DVDNAV_SPU_RGB: + case DVDNAV_SPU_BGR: + spudec_draw_scaled_rgb(me,dxs,dys,draw_alpha); + return; + break; + } + } if (spu->start_pts <= spu->now_pts && spu->now_pts < spu->end_pts) { @@ -782,7 +1580,7 @@ || (spu->orig_frame_width == dxs && spu->orig_frame_height == dys))) { if (spu->image) { - draw_alpha(spu->start_col, spu->start_row, spu->width, spu->height, + draw_alpha(spu->start_col, spu->start_row, spu->width, spu->height,DEST_PLANES_Y, spu->image, spu->aimage, spu->stride); spu->spu_changed = 0; } @@ -1089,7 +1887,7 @@ break; } draw_alpha(spu->scaled_start_col, spu->scaled_start_row, spu->scaled_width, spu->scaled_height, - spu->scaled_image, spu->scaled_aimage, spu->scaled_stride); + DEST_PLANES_Y,spu->scaled_image, spu->scaled_aimage, spu->scaled_stride); spu->spu_changed = 0; } } @@ -1101,78 +1899,1302 @@ } } -void spudec_update_palette(void * this, unsigned int *palette) -{ - spudec_handle_t *spu = (spudec_handle_t *) this; - if (spu && palette) { - memcpy(spu->global_palette, palette, sizeof(spu->global_palette)); - if(spu->hw_spu) - spu->hw_spu->control(VOCTRL_SET_SPU_PALETTE,spu->global_palette); - } -} - -void spudec_set_font_factor(void * this, double factor) +void spudec_draw_scaled_yuv(void *me, unsigned int dxs, unsigned int dys, + void (*draw_alpha)(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride)) { - spudec_handle_t *spu = (spudec_handle_t *) this; - spu->font_start_level = (int)(0xF0-(0xE0*factor)); -} + spudec_handle_t *spu = (spudec_handle_t *)me; + scale_pixel *table_x; + scale_pixel *table_y; + unsigned int scalex = 0; + unsigned int scaley = 0; -void *spudec_new_scaled(unsigned int *palette, unsigned int frame_width, unsigned int frame_height) -{ - return spudec_new_scaled_vobsub(palette, NULL, 0, frame_width, frame_height); -} + if (spu->start_pts <= spu->now_pts && spu->now_pts < spu->end_pts) { -/* get palette custom color, width, height from .idx file */ -void *spudec_new_scaled_vobsub(unsigned int *palette, unsigned int *cuspal, unsigned int custom, unsigned int frame_width, unsigned int frame_height) + // check if only forced subtitles are requested + if( (spu->forced_subs_only) && !(spu->is_forced_sub) ){ + return;} + + if (!(spu_aamode&16) && (spu->orig_frame_width == 0 || + spu->orig_frame_height == 0 || + (spu->orig_frame_width == dxs && spu->orig_frame_height == dys))) { - spudec_handle_t *this = calloc(1, sizeof(spudec_handle_t)); - if (this){ - //(fprintf(stderr,"VobSub Custom Palette: %d,%d,%d,%d", this->cuspal[0], this->cuspal[1], this->cuspal[2],this->cuspal[3]); - this->packet = NULL; - this->image = NULL; - this->scaled_image = NULL; - /* XXX Although the video frame is some size, the SPU frame is - always maximum size i.e. 720 wide and 576 or 480 high */ - this->orig_frame_width = 720; - this->orig_frame_height = (frame_height == 480 || frame_height == 240) ? 480 : 576; - this->custom = custom; - // set up palette: - this->auto_palette = 1; - if (palette){ - memcpy(this->global_palette, palette, sizeof(this->global_palette)); - this->auto_palette = 0; - } - this->custom = custom; - if (custom && cuspal) { - memcpy(this->cuspal, cuspal, sizeof(this->cuspal)); - this->auto_palette = 0; - } - // forced subtitles default: show all subtitles - this->forced_subs_only=0; - this->is_forced_sub=0; + if (spu->image) + { + if (spu->dvdnav_color_spu==DVDNAV_SPU_YUY) { + if (!spu->imageyuy) spudec_create_yuy(spu,0); + if (spu->imageyuy) draw_alpha(spu->start_col, + spu->start_row, + spu->width*2, + spu->heightuv*2, + DEST_PLANES_YUYV, + spu->imageyuy, + spu->aimageyuy, + spu->strideyuy); + } else { + draw_alpha(spu->start_col, + spu->start_row, + spu->width, + spu->height, + DEST_PLANES_Y, + spu->image, + spu->aimage, + spu->stride); + if(spu->dvdnav_color_spu && spu->imageu && spu->aimageuv) + draw_alpha(spu->start_coluv, + spu->start_rowuv, + spu->widthuv, + spu->heightuv, + DEST_PLANES_U, + spu->imageu, + spu->aimageuv, + spu->strideuv); + if(spu->dvdnav_color_spu && spu->imagev && spu->aimageuv) + draw_alpha(spu->start_coluv, + spu->start_rowuv, + spu->widthuv, + spu->heightuv, + DEST_PLANES_V, + spu->imagev, + spu->aimageuv, + spu->strideuv); } - else - mp_msg(MSGT_SPUDEC,MSGL_FATAL, "FATAL: spudec_init: calloc"); - return this; + spu->spu_changed = 0; } + } else { + if (spu->scaled_frame_width != dxs || spu->scaled_frame_height != dys) + { /* Resizing is needed */ + /* scaled_x = scalex * x / 0x100 + scaled_y = scaley * y / 0x100 + order of operations is important because of rounding. */ + scalex = 0x100 * dxs / spu->orig_frame_width; + scaley = 0x100 * dys / spu->orig_frame_height; -void *spudec_new(unsigned int *palette) + spu->scaled_start_col = spu->start_col * scalex / 0x100; + spu->scaled_start_row = spu->start_row * scaley / 0x100; + spu->scaled_width = spu->width * scalex / 0x100; + spu->scaled_height = spu->height * scaley / 0x100; + spu->scaled_start_coluv = spu->start_coluv * scalex / 0x100; + spu->scaled_start_rowuv = spu->start_rowuv * scaley / 0x100; + spu->scaled_widthuv = spu->widthuv * scalex / 0x100; + spu->scaled_heightuv = spu->heightuv * scaley / 0x100; + /* Kludge: draw_alpha needs width multiple of 8 */ + spu->scaled_stride = (spu->scaled_width + 7) & ~7; + spu->scaled_strideuv = (spu->scaled_widthuv + 7) & ~7; + if (spu->scaled_image_size < spu->scaled_stride * + (spu->scaled_height+2)) { - return spudec_new_scaled(palette, 0, 0); + if (spu->scaled_image) + { + free(spu->scaled_image); + spu->scaled_image_size = 0; } - -void spudec_free(void *this) + spu->scaled_image = malloc(2 * spu->scaled_stride * + (spu->scaled_height+2)); + if (spu->scaled_image) +{ + memset(spu->scaled_image,0, + 2 * spu->scaled_stride * (spu->scaled_height+2)); + spu->scaled_image_size = spu->scaled_stride * + (spu->scaled_height+2); + spu->scaled_aimage = spu->scaled_image + spu->scaled_image_size; +} + } + if (spu->scaled_image_sizeuv < spu->scaled_strideuv * + (spu->scaled_heightuv+2)) { - spudec_handle_t *spu = (spudec_handle_t*)this; - if (spu) { - while (spu->queue_head) - spudec_free_packet(spudec_dequeue_packet(spu)); - if (spu->packet) - free(spu->packet); - if (spu->scaled_image) - free(spu->scaled_image); - if (spu->image) - free(spu->image); + if (spu->scaled_imageu) + { + free(spu->scaled_imageu); + spu->scaled_image_sizeuv = 0; + } + spu->scaled_imageu = malloc(3 * spu->scaled_strideuv * + (spu->scaled_height+2)); + if (spu->scaled_imageu) + { + memset(spu->scaled_imageu,0,3 * spu->scaled_strideuv * + (spu->scaled_height+2)); + spu->scaled_image_sizeuv = spu->scaled_strideuv * + (spu->scaled_heightuv+2); + spu->scaled_imagev = spu->scaled_imageu + + spu->scaled_image_sizeuv; + spu->scaled_aimageuv = spu->scaled_imagev + + spu->scaled_image_sizeuv; + } + } + if (spu->scaled_image) { + unsigned int x, y; + if (spu->scaled_width <= 1 || spu->scaled_height <= 1) { + goto nothing_to_do; + } + if (spu->scaled_widthuv <= 1 || spu->scaled_heightuv <= 1) { + goto nothing_to_do; + } + switch(spu_aamode&15) + { + case 4: + sws_spu_image(spu->scaled_image, spu->scaled_aimage, + spu->scaled_width, spu->scaled_height, spu->scaled_stride, + spu->image, spu->aimage, spu->width, spu->height, spu->stride); + sws_spu_image_uv(spu->scaled_imageu, spu->scaled_imagev, + spu->scaled_aimageuv, spu->scaled_widthuv, + spu->scaled_heightuv, spu->scaled_strideuv, + spu->imageu, spu->imagev, spu->aimageuv, + spu->widthuv, spu->heightuv, spu->strideuv); + break; + case 3: + table_x = calloc(spu->scaled_width, sizeof(scale_pixel)); + table_y = calloc(spu->scaled_height, sizeof(scale_pixel)); + if (!table_x || !table_y) + { + mp_msg(MSGT_SPUDEC, MSGL_FATAL, + "Fatal: spudec_draw_scaled: calloc failed\n"); + } + scale_table(0, 0, spu->width - 1, spu->scaled_width - 1, table_x); + scale_table(0, 0, spu->height - 1, spu->scaled_height - 1, table_y); + for (y = 0; y < spu->scaled_height; y++) + for (x = 0; x < spu->scaled_width; x++) + scale_image(x, y, table_x, table_y, spu); + free(table_x); + free(table_y); + table_x = calloc(spu->scaled_widthuv, sizeof(scale_pixel)); + table_y = calloc(spu->scaled_heightuv, sizeof(scale_pixel)); + if (!table_x || !table_y) { + mp_msg(MSGT_SPUDEC, MSGL_FATAL, + "Fatal: spudec_draw_scaled: calloc failed\n"); + } + scale_table(0, 0, spu->widthuv - 1, spu->scaled_widthuv - 1, + table_x); + scale_table(0, 0, spu->heightuv - 1, spu->scaled_heightuv - 1, + table_y); + for (y = 0; y < spu->scaled_heightuv; y++) + for (x = 0; x < spu->scaled_widthuv; x++) + scale_image_uv(x, y, table_x, table_y, spu); + free(table_x); + free(table_y); + break; + case 0: + /* no antialiasing */ + for (y = 0; y < spu->scaled_height; ++y) + { + int unscaled_y = y * 0x100 / scaley; + int strides = spu->stride * unscaled_y; + int scaled_strides = spu->scaled_stride * y; + for (x = 0; x < spu->scaled_width; ++x) + { + int unscaled_x = x * 0x100 / scalex; + spu->scaled_image[scaled_strides + x] = + spu->image[strides + unscaled_x]; + spu->scaled_aimage[scaled_strides + x] = + spu->aimage[strides + unscaled_x]; + } + } + for (y = 0; y < spu->scaled_heightuv; ++y) + { + int unscaled_y = y * 0x100 / scaley; + int strides = spu->strideuv * unscaled_y; + int scaled_strides = spu->scaled_strideuv * y; + for (x = 0; x < spu->scaled_widthuv; ++x) + { + int unscaled_x = x * 0x100 / scalex; + spu->scaled_imageu[scaled_strides + x] = + spu->imageu[strides + unscaled_x]; + spu->scaled_imagev[scaled_strides + x] = + spu->imagev[strides + unscaled_x]; + spu->scaled_aimageuv[scaled_strides + x] = + spu->aimageuv[strides + unscaled_x]; + } + } + break; + case 1: + { + /* Intermediate antialiasing. */ + for (y = 0; y < spu->scaled_height; ++y) { + const unsigned int unscaled_top = + y * spu->orig_frame_height / dys; + unsigned int unscaled_bottom = + (y + 1) * spu->orig_frame_height / dys; + if (unscaled_bottom >= spu->height) + unscaled_bottom = spu->height - 1; + for (x = 0; x < spu->scaled_width; ++x) + { + const unsigned int unscaled_left = + x * spu->orig_frame_width / dxs; + unsigned int unscaled_right = + (x + 1) * spu->orig_frame_width / dxs; + unsigned int color = 0; + unsigned int alpha = 0; + unsigned int walkx, walky; + unsigned int base, tmp; + if (unscaled_right >= spu->width) + unscaled_right = spu->width - 1; + for (walky = unscaled_top; walky <= unscaled_bottom; ++walky) + for (walkx = unscaled_left; walkx <= unscaled_right; ++walkx) + { + base = walky * spu->stride + walkx; + tmp = canon_alpha(spu->aimage[base]); + alpha += tmp; + color += tmp * spu->image[base]; + } + base = y * spu->scaled_stride + x; + spu->scaled_image[base] = alpha ? color / alpha : 0; + spu->scaled_aimage[base] = + alpha * (1 + unscaled_bottom - unscaled_top) * + (1 + unscaled_right - unscaled_left); + /* spu->scaled_aimage[base] = + alpha * dxs * dys / spu->orig_frame_width / spu->orig_frame_height; */ + if (spu->scaled_aimage[base]) { + spu->scaled_aimage[base] = 256 - spu->scaled_aimage[base]; + if (spu->scaled_aimage[base] + spu->scaled_image[base] > 255) + spu->scaled_image[base] = 256 - spu->scaled_aimage[base]; + } + } + } + for (y = 0; y < spu->scaled_heightuv; ++y) { + const unsigned int unscaled_top = y * + (spu->orig_frame_height/2) / (dys/2); + unsigned int unscaled_bottom = (y + 1) * + (spu->orig_frame_height/2) / (dys/2); + if (unscaled_bottom >= spu->heightuv) + unscaled_bottom = spu->heightuv - 1; + for (x = 0; x < spu->scaled_widthuv; ++x) { + const unsigned int unscaled_left = x * + (spu->orig_frame_width/2) / (dxs/2); + unsigned int unscaled_right = (x + 1) * + (spu->orig_frame_width/2) / (dxs/2); + unsigned int coloru = 0; + unsigned int colorv = 0; + unsigned int alpha = 0; + unsigned int walkx, walky; + unsigned int base, tmp; + if (unscaled_right >= spu->widthuv) + unscaled_right = spu->widthuv - 1; + for (walky = unscaled_top; walky <= unscaled_bottom; ++walky) + for (walkx = unscaled_left; walkx <= unscaled_right; ++walkx) + { + base = walky * spu->strideuv + walkx; + tmp = canon_alpha(spu->aimageuv[base]); + alpha += tmp; + coloru += tmp * spu->imageu[base]; + colorv += tmp * spu->imagev[base]; + } + base = y * spu->scaled_strideuv + x; + spu->scaled_imageu[base] = alpha ? coloru / alpha : 0; + spu->scaled_imagev[base] = alpha ? colorv / alpha : 0; + spu->scaled_aimageuv[base] = + alpha * (1 + unscaled_bottom - unscaled_top) * + (1 + unscaled_right - unscaled_left); + /* spu->scaled_aimage[base] = + alpha * dxs * dys / spu->orig_frame_width / spu->orig_frame_height; */ + if (spu->scaled_aimageuv[base]) { + spu->scaled_aimageuv[base] = 256 - spu->scaled_aimageuv[base]; + if (spu->scaled_aimageuv[base] + spu->scaled_imageu[base] > 255) + spu->scaled_imageu[base] = 256 - spu->scaled_aimageuv[base]; + if (spu->scaled_aimageuv[base] + spu->scaled_imagev[base] > 255) + spu->scaled_imagev[base] = 256 - spu->scaled_aimageuv[base]; + } + } + } + } + break; + case 2: + { + /* Best antialiasing. Very slow. */ + /* Any pixel (x, y) represents pixels from the original + rectangular region comprised between the columns + unscaled_y and unscaled_y + 0x100 / scaley and the rows + unscaled_x and unscaled_x + 0x100 / scalex + + The original rectangular region that the scaled pixel + represents is cut in 9 rectangular areas like this: + + +---+-----------------+---+ + | 1 | 2 | 3 | + +---+-----------------+---+ + | | | | + | 4 | 5 | 6 | + | | | | + +---+-----------------+---+ + | 7 | 8 | 9 | + +---+-----------------+---+ + + The width of the left column is at most one pixel and + it is never null and its right column is at a pixel + boundary. The height of the top row is at most one + pixel it is never null and its bottom row is at a + pixel boundary. The width and height of region 5 are + integral values. The width of the right column is + what remains and is less than one pixel. The height + of the bottom row is what remains and is less than + one pixel. + + The row above 1, 2, 3 is unscaled_y. The row between + 1, 2, 3 and 4, 5, 6 is top_low_row. The row between 4, + 5, 6 and 7, 8, 9 is (unsigned int)unscaled_y_bottom. + The row beneath 7, 8, 9 is unscaled_y_bottom. + + The column left of 1, 4, 7 is unscaled_x. The column + between 1, 4, 7 and 2, 5, 8 is left_right_column. The + column between 2, 5, 8 and 3, 6, 9 is (unsigned + int)unscaled_x_right. The column right of 3, 6, 9 is + unscaled_x_right. */ + const double inv_scalex = (double) 0x100 / scalex; + const double inv_scaley = (double) 0x100 / scaley; + for (y = 0; y < spu->scaled_height; ++y) { + const double unscaled_y = y * inv_scaley; + const double unscaled_y_bottom = unscaled_y + inv_scaley; + const unsigned int top_low_row = FFMIN(unscaled_y_bottom, unscaled_y + 1.0); + const double top = top_low_row - unscaled_y; + const unsigned int height = unscaled_y_bottom > top_low_row + ? (unsigned int) unscaled_y_bottom - top_low_row + : 0; + const double bottom = unscaled_y_bottom > top_low_row + ? unscaled_y_bottom - floor(unscaled_y_bottom) + : 0.0; + for (x = 0; x < spu->scaled_width; ++x) { + const double unscaled_x = x * inv_scalex; + const double unscaled_x_right = unscaled_x + inv_scalex; + const unsigned int left_right_column = + FFMIN(unscaled_x_right, unscaled_x + 1.0); + const double left = left_right_column - unscaled_x; + const unsigned int width = unscaled_x_right > left_right_column + ? (unsigned int) unscaled_x_right - left_right_column + : 0; + const double right = unscaled_x_right > left_right_column + ? unscaled_x_right - floor(unscaled_x_right) + : 0.0; + double color = 0.0; + double alpha = 0.0; + double tmp; + unsigned int base; + /* Now use these informations to compute a good alpha, + and lightness. The sum is on each of the 9 + region's surface and alpha and lightness. + + transformed alpha = sum(surface * alpha) / sum(surface) + transformed color = sum(surface * alpha * color) / sum(surface * alpha) + */ + /* 1: top left part */ + base = spu->stride * (unsigned int) unscaled_y; + tmp = left * top * + canon_alpha(spu->aimage[base + (unsigned int) unscaled_x]); + alpha += tmp; + color += tmp * spu->image[base + (unsigned int) unscaled_x]; + /* 2: top center part */ + if (width > 0) { + unsigned int walkx; + for (walkx = left_right_column; + walkx < (unsigned int) unscaled_x_right; + ++walkx) + { + base = spu->stride * (unsigned int) unscaled_y + walkx; + tmp = /* 1.0 * */ top * canon_alpha(spu->aimage[base]); + alpha += tmp; + color += tmp * spu->image[base]; + } + } + /* 3: top right part */ + if (right > 0.0) { + base = spu->stride * (unsigned int) unscaled_y + + (unsigned int) unscaled_x_right; + tmp = right * top * canon_alpha(spu->aimage[base]); + alpha += tmp; + color += tmp * spu->image[base]; + } + /* 4: center left part */ + if (height > 0) { + unsigned int walky; + for (walky = top_low_row; + walky < (unsigned int) unscaled_y_bottom; + ++walky) + { + base = spu->stride * walky + (unsigned int) unscaled_x; + tmp = left /* * 1.0 */ * canon_alpha(spu->aimage[base]); + alpha += tmp; + color += tmp * spu->image[base]; + } + } + /* 5: center part */ + if (width > 0 && height > 0) { + unsigned int walky; + for (walky = top_low_row; + walky < (unsigned int) unscaled_y_bottom; + ++walky) + { + unsigned int walkx; + base = spu->stride * walky; + for (walkx = left_right_column; + walkx < (unsigned int) unscaled_x_right; + ++walkx) { + tmp = /* 1.0 * 1.0 * */ canon_alpha(spu->aimage[base + walkx]); + alpha += tmp; + color += tmp * spu->image[base + walkx]; + } + } + } + /* 6: center right part */ + if (right > 0.0 && height > 0) { + unsigned int walky; + for (walky = top_low_row; + walky < (unsigned int) unscaled_y_bottom; + ++walky) + { + base = spu->stride * walky + + (unsigned int) unscaled_x_right; + tmp = right /* * 1.0 */ * canon_alpha(spu->aimage[base]); + alpha += tmp; + color += tmp * spu->image[base]; + } + } + /* 7: bottom left part */ + if (bottom > 0.0) { + base = spu->stride * (unsigned int) unscaled_y_bottom + + (unsigned int) unscaled_x; + tmp = left * bottom * canon_alpha(spu->aimage[base]); + alpha += tmp; + color += tmp * spu->image[base]; + } + /* 8: bottom center part */ + if (width > 0 && bottom > 0.0) { + unsigned int walkx; + base = spu->stride * (unsigned int) unscaled_y_bottom; + for (walkx = left_right_column; + walkx < (unsigned int) unscaled_x_right; + ++walkx) + { + tmp = /* 1.0 * */ bottom * + canon_alpha(spu->aimage[base + walkx]); + alpha += tmp; + color += tmp * spu->image[base + walkx]; + } + } + /* 9: bottom right part */ + if (right > 0.0 && bottom > 0.0) { + base = spu->stride * (unsigned int) + unscaled_y_bottom + (unsigned int) unscaled_x_right; + tmp = right * bottom * canon_alpha(spu->aimage[base]); + alpha += tmp; + color += tmp * spu->image[base]; + } + /* Finally mix these transparency and brightness information suitably */ + base = spu->scaled_stride * y + x; + spu->scaled_image[base] = alpha > 0 ? color / alpha : 0; + spu->scaled_aimage[base] = alpha * scalex * scaley / 0x10000; + if (spu->scaled_aimage[base]) { + spu->scaled_aimage[base] = 256 - spu->scaled_aimage[base]; + if (spu->scaled_aimage[base] + spu->scaled_image[base] > 255) + spu->scaled_image[base] = 256 - spu->scaled_aimage[base]; + } + } + } + for (y = 0; y < spu->scaled_heightuv; ++y) { + const double unscaled_y = y * inv_scaley; + const double unscaled_y_bottom = unscaled_y + inv_scaley; + const unsigned int top_low_row = + FFMIN(unscaled_y_bottom, unscaled_y + 1.0); + const double top = top_low_row - unscaled_y; + const unsigned int height = unscaled_y_bottom > top_low_row + ? (unsigned int) unscaled_y_bottom - top_low_row + : 0; + const double bottom = unscaled_y_bottom > top_low_row + ? unscaled_y_bottom - floor(unscaled_y_bottom) + : 0.0; + for (x = 0; x < spu->scaled_widthuv; ++x) { + const double unscaled_x = x * inv_scalex; + const double unscaled_x_right = unscaled_x + inv_scalex; + const unsigned int left_right_column = + FFMIN(unscaled_x_right, unscaled_x + 1.0); + const double left = left_right_column - unscaled_x; + const unsigned int width = unscaled_x_right > left_right_column + ? (unsigned int) unscaled_x_right - left_right_column + : 0; + const double right = unscaled_x_right > left_right_column + ? unscaled_x_right - floor(unscaled_x_right) + : 0.0; + double coloru = 0.0; + double colorv = 0.0; + double alpha = 0.0; + double tmp; + unsigned int base; + /* Now use these informations to compute a good alpha, + and lightness. The sum is on each of the 9 + region's surface and alpha and lightness. + + transformed alpha = sum(surface * alpha) / sum(surface) + transformed color = sum(surface * alpha * color) / sum(surface * alpha) + */ + /* 1: top left part */ + base = spu->strideuv * (unsigned int) unscaled_y; + tmp = left * top * + canon_alpha(spu->aimageuv[base + (unsigned int) unscaled_x]); + alpha += tmp; + coloru += tmp * spu->imageu[base + (unsigned int) unscaled_x]; + colorv += tmp * spu->imagev[base + (unsigned int) unscaled_x]; + /* 2: top center part */ + if (width > 0) { + unsigned int walkx; + for (walkx = left_right_column; + walkx < (unsigned int) unscaled_x_right; + ++walkx) + { + base = spu->strideuv * (unsigned int) unscaled_y + walkx; + tmp = /* 1.0 * */ top * canon_alpha(spu->aimageuv[base]); + alpha += tmp; + coloru += tmp * spu->imageu[base]; + colorv += tmp * spu->imagev[base]; + } + } + /* 3: top right part */ + if (right > 0.0) { + base = spu->strideuv * (unsigned int) unscaled_y + + (unsigned int) unscaled_x_right; + tmp = right * top * canon_alpha(spu->aimageuv[base]); + alpha += tmp; + coloru += tmp * spu->imageu[base]; + colorv += tmp * spu->imagev[base]; + } + /* 4: center left part */ + if (height > 0) { + unsigned int walky; + for (walky = top_low_row; + walky < (unsigned int) unscaled_y_bottom; + ++walky) + { + base = spu->strideuv * walky + (unsigned int) unscaled_x; + tmp = left /* * 1.0 */ * canon_alpha(spu->aimageuv[base]); + alpha += tmp; + coloru += tmp * spu->imageu[base]; + colorv += tmp * spu->imagev[base]; + } + } + /* 5: center part */ + if (width > 0 && height > 0) { + unsigned int walky; + for (walky = top_low_row; + walky < (unsigned int) unscaled_y_bottom; + ++walky) + { + unsigned int walkx; + base = spu->strideuv * walky; + for (walkx = left_right_column; + walkx < (unsigned int) unscaled_x_right; + ++walkx) + { + tmp = /* 1.0 * 1.0 * */ canon_alpha(spu->aimageuv[base + walkx]); + alpha += tmp; + coloru += tmp * spu->imageu[base + walkx]; + colorv += tmp * spu->imagev[base + walkx]; + } + } + } + /* 6: center right part */ + if (right > 0.0 && height > 0) { + unsigned int walky; + for (walky = top_low_row; + walky < (unsigned int) unscaled_y_bottom; + ++walky) + { + base = spu->strideuv * walky + + (unsigned int) unscaled_x_right; + tmp = right /* * 1.0 */ * canon_alpha(spu->aimageuv[base]); + alpha += tmp; + coloru += tmp * spu->imageu[base]; + colorv += tmp * spu->imagev[base]; + } + } + /* 7: bottom left part */ + if (bottom > 0.0) { + base = spu->strideuv * (unsigned int) unscaled_y_bottom + + (unsigned int) unscaled_x; + tmp = left * bottom * canon_alpha(spu->aimageuv[base]); + alpha += tmp; + coloru += tmp * spu->imageu[base]; + colorv += tmp * spu->imagev[base]; + } + /* 8: bottom center part */ + if (width > 0 && bottom > 0.0) { + unsigned int walkx; + base = spu->strideuv * (unsigned int) unscaled_y_bottom; + for (walkx = left_right_column; + walkx < (unsigned int) unscaled_x_right; + ++walkx) { + tmp = /* 1.0 * */ bottom * canon_alpha(spu->aimageuv[base + walkx]); + alpha += tmp; + coloru += tmp * spu->imageu[base + walkx]; + colorv += tmp * spu->imagev[base + walkx]; + } + } + /* 9: bottom right part */ + if (right > 0.0 && bottom > 0.0) { + base = spu->strideuv * (unsigned int) unscaled_y_bottom + + (unsigned int) unscaled_x_right; + tmp = right * bottom * canon_alpha(spu->aimageuv[base]); + alpha += tmp; + coloru += tmp * spu->imageu[base]; + colorv += tmp * spu->imagev[base]; + } + /* Finally mix these transparency and brightness information suitably */ + base = spu->scaled_strideuv * y + x; + spu->scaled_imageu[base] = alpha > 0 ? coloru / alpha : 0; + spu->scaled_imagev[base] = alpha > 0 ? colorv / alpha : 0; + spu->scaled_aimageuv[base] = alpha * scalex * scaley / 0x10000; + if (spu->scaled_aimageuv[base]) { + spu->scaled_aimageuv[base] = 256 - spu->scaled_aimageuv[base]; + if (spu->scaled_aimageuv[base] + spu->scaled_imageu[base] > 255) + spu->scaled_imageu[base] = 256 - spu->scaled_aimageuv[base]; + if (spu->scaled_aimageuv[base] + spu->scaled_imagev[base] > 255) + spu->scaled_imagev[base] = 256 - spu->scaled_aimageuv[base]; + } + } + } + } + } +nothing_to_do: + /* Kludge: draw_alpha needs width multiple of 8. */ + if (spu->scaled_width < spu->scaled_stride) + for (y = 0; y < spu->scaled_height; ++y) { + memset(spu->scaled_aimage + y * spu->scaled_stride + + spu->scaled_width, 0, + spu->scaled_stride - spu->scaled_width); + } + spu->scaled_frame_width = dxs; + spu->scaled_frame_height = dys; + if (spu->scaled_widthuv < spu->scaled_strideuv) + for (y = 0; y < spu->scaled_heightuv; ++y) { + memset(spu->scaled_aimageuv + y * spu->scaled_stride + + spu->scaled_widthuv, 0, + spu->scaled_strideuv - spu->scaled_widthuv); + } + spu->scaled_frame_widthuv = dxs/2; + spu->scaled_frame_heightuv = dys/2; + } + } + if (spu->scaled_image){ + switch (spu_alignment) { + case 0: + spu->scaled_start_row = dys*sub_pos/100; + if (spu->scaled_start_row + spu->scaled_height > dys) + spu->scaled_start_row = dys - spu->scaled_height; + spu->scaled_start_rowuv = (dys/2)*sub_pos/100; + if (spu->scaled_start_rowuv + spu->scaled_heightuv > (dys/2)) + spu->scaled_start_rowuv = (dys/2) - spu->scaled_heightuv; + break; + case 1: + spu->scaled_start_row = dys*sub_pos/100 - spu->scaled_height/2; + if (sub_pos < 50) { + if (spu->scaled_start_row < 0) spu->scaled_start_row = 0; + } else { + if (spu->scaled_start_row + spu->scaled_height > dys) + spu->scaled_start_row = dys - spu->scaled_height; + } + spu->scaled_start_rowuv = (dys/2)*sub_pos/100 - spu->scaled_heightuv/2; + if (sub_pos < 50) { + if (spu->scaled_start_rowuv < 0) spu->scaled_start_rowuv = 0; + } else { + if (spu->scaled_start_rowuv + spu->scaled_heightuv > (dys/2)) + spu->scaled_start_rowuv = (dys/2) - spu->scaled_heightuv; + } + break; + case 2: + spu->scaled_start_row = dys*sub_pos/100 - spu->scaled_height; + if (spu->scaled_start_row < 0) spu->scaled_start_row = 0; + spu->scaled_start_rowuv = (dys/2)*sub_pos/100 - spu->scaled_heightuv; + if (spu->scaled_start_rowuv < 0) spu->scaled_start_rowuv = 0; + break; + } + if (spu->dvdnav_color_spu==DVDNAV_SPU_YUY) { + if (!spu->imageyuy) spudec_create_yuy(spu,1); + if (spu->imageyuy) draw_alpha(spu->scaled_start_col, + spu->scaled_start_row, + spu->scaled_width*2, + spu->scaled_height, + DEST_PLANES_YUYV, + spu->imageyuy, + spu->aimageyuy, + spu->strideyuy); + } else { + draw_alpha(spu->scaled_start_col, + spu->scaled_start_row, + spu->scaled_width, + spu->scaled_height, + DEST_PLANES_Y, + spu->scaled_image, + spu->scaled_aimage, + spu->scaled_stride); + draw_alpha(spu->scaled_start_coluv, + spu->scaled_start_rowuv, + spu->scaled_widthuv, + spu->scaled_heightuv, + DEST_PLANES_U, + spu->scaled_imageu, + spu->scaled_aimageuv, + spu->scaled_strideuv); + draw_alpha(spu->scaled_start_coluv, + spu->scaled_start_rowuv, + spu->scaled_widthuv, + spu->scaled_heightuv, + DEST_PLANES_V, + spu->scaled_imagev, + spu->scaled_aimageuv, + spu->scaled_strideuv); + } + spu->spu_changed = 0; + } + } + } + else + { + mp_msg(MSGT_SPUDEC,MSGL_DBG2, + "SPU not displayed: start_pts=%d end_pts=%d now_pts=%d\n", + spu->start_pts, spu->end_pts, spu->now_pts); + } +} + +void spudec_draw_scaled_rgb(void *me, unsigned int dxs, unsigned int dys, + void (*draw_alpha)(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride)) +{ + spudec_handle_t *spu = (spudec_handle_t *)me; + scale_pixel *table_x; + scale_pixel *table_y; + unsigned int scalex = 0; + unsigned int scaley = 0; + + if (spu->start_pts <= spu->now_pts && spu->now_pts < spu->end_pts) { + + // check if only forced subtitles are requested + if( (spu->forced_subs_only) && !(spu->is_forced_sub) ){ + return; + } + + if (!(spu_aamode&16) && (spu->orig_frame_width == 0 || + spu->orig_frame_height == 0 || + (spu->orig_frame_width == dxs && spu->orig_frame_height == dys))) { + if (spu->image) + { + draw_alpha(spu->start_col, + spu->start_row, + spu->width, + spu->height, + DEST_PLANES_RB, + spu->image, + spu->aimage, + spu->stride); + draw_alpha(spu->start_col, + spu->start_row, + spu->width, + spu->height, + DEST_PLANES_G, + spu->imageu, + spu->aimage, + spu->stride); + draw_alpha(spu->start_col, + spu->start_row, + spu->width, + spu->height, + DEST_PLANES_BR, + spu->imagev, + spu->aimage, + spu->stride); + spu->spu_changed = 0; + } + } + else { + if (spu->scaled_frame_width != dxs || spu->scaled_frame_height != dys) { /* Resizing is needed */ + /* scaled_x = scalex * x / 0x100 + scaled_y = scaley * y / 0x100 + order of operations is important because of rounding. */ + scalex = 0x100 * dxs / spu->orig_frame_width; + scaley = 0x100 * dys / spu->orig_frame_height; + + spu->scaled_start_col = spu->start_col * scalex / 0x100; + spu->scaled_start_row = spu->start_row * scaley / 0x100; + spu->scaled_width = spu->width * scalex / 0x100; + spu->scaled_height = spu->height * scaley / 0x100; + /* Kludge: draw_alpha needs width multiple of 8 */ + spu->scaled_stride = (spu->scaled_width + 7) & ~7; + if (spu->scaled_image_size < spu->scaled_stride * spu->scaled_height) { + if (spu->scaled_image) { + free(spu->scaled_image); + if (spu->scaled_imageu) + free(spu->scaled_imageu); + spu->scaled_image_size = 0; + } + spu->scaled_image = malloc(2 * spu->scaled_stride * spu->scaled_height); + spu->scaled_imageu = malloc(3 * spu->scaled_stride * spu->scaled_height); + if (spu->scaled_image) { + spu->scaled_image_size = spu->scaled_stride * spu->scaled_height; + spu->scaled_aimage = spu->scaled_image + spu->scaled_image_size; + } + if (spu->scaled_imageu) { + spu->scaled_imagev = spu->scaled_imageu + spu->scaled_image_size; + } + } + if (spu->scaled_image) { + unsigned int x, y; + if (spu->scaled_width <= 1 || spu->scaled_height <= 1) { + goto nothing_to_do; + } + switch(spu_aamode&15) { + case 4: + sws_spu_image_rgb(spu->scaled_image,spu->scaled_imageu, + spu->scaled_imagev, spu->scaled_aimage, + spu->scaled_width, spu->scaled_height, spu->scaled_stride, + spu->image, spu->imageu, spu->imagev, spu->aimage, + spu->width, spu->height, spu->stride); + break; + case 3: + table_x = calloc(spu->scaled_width, sizeof(scale_pixel)); + table_y = calloc(spu->scaled_height, sizeof(scale_pixel)); + if (!table_x || !table_y) { + mp_msg(MSGT_SPUDEC, MSGL_FATAL, + "Fatal: spudec_draw_scaled: calloc failed\n"); + } + scale_table(0, 0, spu->width - 1, spu->scaled_width - 1, table_x); + scale_table(0, 0, spu->height - 1, spu->scaled_height - 1, table_y); + for (y = 0; y < spu->scaled_height; y++) + for (x = 0; x < spu->scaled_width; x++) + scale_image_rgb(x, y, table_x, table_y, spu); + free(table_x); + free(table_y); + break; + case 0: + /* no antialiasing */ + for (y = 0; y < spu->scaled_height; ++y) { + int unscaled_y = y * 0x100 / scaley; + int strides = spu->stride * unscaled_y; + int scaled_strides = spu->scaled_stride * y; + for (x = 0; x < spu->scaled_width; ++x) { + int unscaled_x = x * 0x100 / scalex; + spu->scaled_image[scaled_strides + x] = + spu->image[strides + unscaled_x]; + spu->scaled_imageu[scaled_strides + x] = + spu->imageu[strides + unscaled_x]; + spu->scaled_imagev[scaled_strides + x] = + spu->imagev[strides + unscaled_x]; + spu->scaled_aimage[scaled_strides + x] = + spu->aimage[strides + unscaled_x]; + } + } + break; + case 1: + { + /* Intermediate antialiasing. */ + for (y = 0; y < spu->scaled_height; ++y) { + const unsigned int unscaled_top = y * + spu->orig_frame_height / dys; + unsigned int unscaled_bottom = (y + 1) * + spu->orig_frame_height / dys; + if (unscaled_bottom >= spu->height) + unscaled_bottom = spu->height - 1; + for (x = 0; x < spu->scaled_width; ++x) { + const unsigned int unscaled_left = x * + spu->orig_frame_width / dxs; + unsigned int unscaled_right = (x + 1) * + spu->orig_frame_width / dxs; + unsigned int colorr = 0; + unsigned int colorg = 0; + unsigned int colorb = 0; + unsigned int alpha = 0; + unsigned int walkx, walky; + unsigned int base, tmp; + if (unscaled_right >= spu->width) + unscaled_right = spu->width - 1; + for (walky = unscaled_top; walky <= unscaled_bottom; ++walky) + for (walkx = unscaled_left; walkx <= unscaled_right; ++walkx) { + base = walky * spu->stride + walkx; + tmp = canon_alpha(spu->aimage[base]); + alpha += tmp; + colorr += tmp * spu->image[base]; + colorg += tmp * spu->imageu[base]; + colorb += tmp * spu->imagev[base]; + } + base = y * spu->scaled_stride + x; + spu->scaled_image[base] = alpha ? colorr / alpha : 0; + spu->scaled_imageu[base] = alpha ? colorg / alpha : 0; + spu->scaled_imagev[base] = alpha ? colorb / alpha : 0; + spu->scaled_aimage[base] = + alpha * (1 + unscaled_bottom - unscaled_top) * (1 + unscaled_right - unscaled_left); + /* spu->scaled_aimage[base] = + alpha * dxs * dys / spu->orig_frame_width / spu->orig_frame_height; */ + if (spu->scaled_aimage[base]) { + spu->scaled_aimage[base] = 256 - spu->scaled_aimage[base]; + if (spu->scaled_aimage[base] + spu->scaled_image[base] > 255) + spu->scaled_image[base] = 256 - spu->scaled_aimage[base]; + if (spu->scaled_aimage[base] + spu->scaled_imageu[base] > 255) + spu->scaled_imageu[base] = 256 - spu->scaled_aimage[base]; + if (spu->scaled_aimage[base] + spu->scaled_imagev[base] > 255) + spu->scaled_imagev[base] = 256 - spu->scaled_aimage[base]; + } + } + } + } + break; + case 2: + { + /* Best antialiasing. Very slow. */ + /* Any pixel (x, y) represents pixels from the original + rectangular region comprised between the columns + unscaled_y and unscaled_y + 0x100 / scaley and the rows + unscaled_x and unscaled_x + 0x100 / scalex + + The original rectangular region that the scaled pixel + represents is cut in 9 rectangular areas like this: + + +---+-----------------+---+ + | 1 | 2 | 3 | + +---+-----------------+---+ + | | | | + | 4 | 5 | 6 | + | | | | + +---+-----------------+---+ + | 7 | 8 | 9 | + +---+-----------------+---+ + + The width of the left column is at most one pixel and + it is never null and its right column is at a pixel + boundary. The height of the top row is at most one + pixel it is never null and its bottom row is at a + pixel boundary. The width and height of region 5 are + integral values. The width of the right column is + what remains and is less than one pixel. The height + of the bottom row is what remains and is less than + one pixel. + + The row above 1, 2, 3 is unscaled_y. The row between + 1, 2, 3 and 4, 5, 6 is top_low_row. The row between 4, + 5, 6 and 7, 8, 9 is (unsigned int)unscaled_y_bottom. + The row beneath 7, 8, 9 is unscaled_y_bottom. + + The column left of 1, 4, 7 is unscaled_x. The column + between 1, 4, 7 and 2, 5, 8 is left_right_column. The + column between 2, 5, 8 and 3, 6, 9 is (unsigned + int)unscaled_x_right. The column right of 3, 6, 9 is + unscaled_x_right. */ + const double inv_scalex = (double) 0x100 / scalex; + const double inv_scaley = (double) 0x100 / scaley; + for (y = 0; y < spu->scaled_height; ++y) { + const double unscaled_y = y * inv_scaley; + const double unscaled_y_bottom = unscaled_y + inv_scaley; + const unsigned int top_low_row = + FFMIN(unscaled_y_bottom, unscaled_y + 1.0); + const double top = top_low_row - unscaled_y; + const unsigned int height = unscaled_y_bottom > top_low_row + ? (unsigned int) unscaled_y_bottom - top_low_row + : 0; + const double bottom = unscaled_y_bottom > top_low_row + ? unscaled_y_bottom - floor(unscaled_y_bottom) + : 0.0; + for (x = 0; x < spu->scaled_width; ++x) { + const double unscaled_x = x * inv_scalex; + const double unscaled_x_right = unscaled_x + inv_scalex; + const unsigned int left_right_column = + FFMIN(unscaled_x_right, unscaled_x + 1.0); + const double left = left_right_column - unscaled_x; + const unsigned int width = unscaled_x_right > left_right_column + ? (unsigned int) unscaled_x_right - left_right_column + : 0; + const double right = unscaled_x_right > left_right_column + ? unscaled_x_right - floor(unscaled_x_right) + : 0.0; + double colorr = 0.0; + double colorg = 0.0; + double colorb = 0.0; + double alpha = 0.0; + double tmp; + unsigned int base; + /* Now use these informations to compute a good alpha, + and lightness. The sum is on each of the 9 + region's surface and alpha and lightness. + + transformed alpha = sum(surface * alpha) / sum(surface) + transformed color = sum(surface * alpha * color) / sum(surface * alpha) + */ + /* 1: top left part */ + base = spu->stride * (unsigned int) unscaled_y; + tmp = left * top * canon_alpha(spu->aimage[base + (unsigned int) unscaled_x]); + alpha += tmp; + colorr += tmp * spu->image[base + (unsigned int) unscaled_x]; + colorg += tmp * spu->imageu[base + (unsigned int) unscaled_x]; + colorb += tmp * spu->imagev[base + (unsigned int) unscaled_x]; + /* 2: top center part */ + if (width > 0) { + unsigned int walkx; + for (walkx = left_right_column; + walkx < (unsigned int) unscaled_x_right; + ++walkx) { + base = spu->stride * (unsigned int) unscaled_y + walkx; + tmp = /* 1.0 * */ top * canon_alpha(spu->aimage[base]); + alpha += tmp; + colorr += tmp * spu->image[base]; + colorg += tmp * spu->imageu[base]; + colorb += tmp * spu->imagev[base]; + } + } + /* 3: top right part */ + if (right > 0.0) { + base = spu->stride * (unsigned int) unscaled_y + + (unsigned int) unscaled_x_right; + tmp = right * top * canon_alpha(spu->aimage[base]); + alpha += tmp; + colorr += tmp * spu->image[base]; + colorg += tmp * spu->imageu[base]; + colorb += tmp * spu->imagev[base]; + } + /* 4: center left part */ + if (height > 0) { + unsigned int walky; + for (walky = top_low_row; + walky < (unsigned int) unscaled_y_bottom; + ++walky) { + base = spu->stride * walky + (unsigned int) unscaled_x; + tmp = left /* * 1.0 */ * canon_alpha(spu->aimage[base]); + alpha += tmp; + colorr += tmp * spu->image[base]; + colorg += tmp * spu->imageu[base]; + colorb += tmp * spu->imagev[base]; + } + } + /* 5: center part */ + if (width > 0 && height > 0) { + unsigned int walky; + for (walky = top_low_row; + walky < (unsigned int) unscaled_y_bottom; + ++walky) { + unsigned int walkx; + base = spu->stride * walky; + for (walkx = left_right_column; + walkx < (unsigned int) unscaled_x_right; + ++walkx) { + tmp = /* 1.0 * 1.0 * */ canon_alpha(spu->aimage[base + walkx]); + alpha += tmp; + colorr += tmp * spu->image[base + walkx]; + colorg += tmp * spu->imageu[base + walkx]; + colorb += tmp * spu->imagev[base + walkx]; + } + } + } + /* 6: center right part */ + if (right > 0.0 && height > 0) { + unsigned int walky; + for (walky = top_low_row; + walky < (unsigned int) unscaled_y_bottom; + ++walky) { + base = spu->stride * walky + (unsigned int) unscaled_x_right; + tmp = right /* * 1.0 */ * canon_alpha(spu->aimage[base]); + alpha += tmp; + colorr += tmp * spu->image[base]; + colorg += tmp * spu->imageu[base]; + colorb += tmp * spu->imagev[base]; + } + } + /* 7: bottom left part */ + if (bottom > 0.0) { + base = spu->stride * (unsigned int) unscaled_y_bottom + + (unsigned int) unscaled_x; + tmp = left * bottom * canon_alpha(spu->aimage[base]); + alpha += tmp; + colorr += tmp * spu->image[base]; + colorg += tmp * spu->imageu[base]; + colorb += tmp * spu->imagev[base]; + } + /* 8: bottom center part */ + if (width > 0 && bottom > 0.0) { + unsigned int walkx; + base = spu->stride * (unsigned int) unscaled_y_bottom; + for (walkx = left_right_column; + walkx < (unsigned int) unscaled_x_right; + ++walkx) { + tmp = /* 1.0 * */ bottom * canon_alpha(spu->aimage[base + walkx]); + alpha += tmp; + colorr += tmp * spu->image[base + walkx]; + colorg += tmp * spu->imageu[base + walkx]; + colorb += tmp * spu->imagev[base + walkx]; + } + } + /* 9: bottom right part */ + if (right > 0.0 && bottom > 0.0) { + base = spu->stride * (unsigned int) unscaled_y_bottom + + (unsigned int) unscaled_x_right; + tmp = right * bottom * canon_alpha(spu->aimage[base]); + alpha += tmp; + colorr += tmp * spu->image[base]; + colorg += tmp * spu->imageu[base]; + colorb += tmp * spu->imagev[base]; + } + /* Finally mix these transparency and brightness information suitably */ + base = spu->scaled_stride * y + x; + spu->scaled_image[base] = alpha > 0 ? colorr / alpha : 0; + spu->scaled_imageu[base] = alpha > 0 ? colorg / alpha : 0; + spu->scaled_imagev[base] = alpha > 0 ? colorb / alpha : 0; + spu->scaled_aimage[base] = alpha * scalex * scaley / 0x10000; + if (spu->scaled_aimage[base]) { + spu->scaled_aimage[base] = 256 - spu->scaled_aimage[base]; + if (spu->scaled_aimage[base] + spu->scaled_image[base] > 255) + spu->scaled_image[base] = 256 - spu->scaled_aimage[base]; + if (spu->scaled_aimage[base] + spu->scaled_imageu[base] > 255) + spu->scaled_imageu[base] = 256 - spu->scaled_aimage[base]; + if (spu->scaled_aimage[base] + spu->scaled_imagev[base] > 255) + spu->scaled_imagev[base] = 256 - spu->scaled_aimage[base]; + } + } + } + } + } +nothing_to_do: + /* Kludge: draw_alpha needs width multiple of 8. */ + if (spu->scaled_width < spu->scaled_stride) + for (y = 0; y < spu->scaled_height; ++y) { + memset(spu->scaled_aimage + y * spu->scaled_stride + + spu->scaled_width, 0, + spu->scaled_stride - spu->scaled_width); + } + spu->scaled_frame_width = dxs; + spu->scaled_frame_height = dys; + } + } + if (spu->scaled_image){ + switch (spu_alignment) { + case 0: + spu->scaled_start_row = dys*sub_pos/100; + if (spu->scaled_start_row + spu->scaled_height > dys) + spu->scaled_start_row = dys - spu->scaled_height; + break; + case 1: + spu->scaled_start_row = dys*sub_pos/100 - spu->scaled_height/2; + if (sub_pos < 50) { + if (spu->scaled_start_row < 0) spu->scaled_start_row = 0; + } else { + if (spu->scaled_start_row + spu->scaled_height > dys) + spu->scaled_start_row = dys - spu->scaled_height; + } + break; + case 2: + spu->scaled_start_row = dys*sub_pos/100 - spu->scaled_height; + if (spu->scaled_start_row < 0) spu->scaled_start_row = 0; + break; + } + draw_alpha(spu->scaled_start_col, + spu->scaled_start_row, + spu->scaled_width, + spu->scaled_height, + DEST_PLANES_RB, + spu->scaled_image, + spu->scaled_aimage, + spu->scaled_stride); + draw_alpha(spu->scaled_start_col, + spu->scaled_start_row, + spu->scaled_width, + spu->scaled_height, + DEST_PLANES_G, + spu->scaled_imageu, + spu->scaled_aimage, + spu->scaled_stride); + draw_alpha(spu->scaled_start_col, + spu->scaled_start_row, + spu->scaled_width, + spu->scaled_height, + DEST_PLANES_BR, + spu->scaled_imagev, + spu->scaled_aimage, + spu->scaled_stride); + spu->spu_changed = 0; + } + } + } + else + { + mp_msg(MSGT_SPUDEC,MSGL_DBG2, + "SPU not displayed: start_pts=%d end_pts=%d now_pts=%d\n", + spu->start_pts, spu->end_pts, spu->now_pts); + } +} + +void spudec_update_palette(void * this, unsigned int *palette) +{ + spudec_handle_t *spu = (spudec_handle_t *) this; + if (spu && palette) { + memcpy(spu->global_palette, palette, sizeof(spu->global_palette)); + if(spu->hw_spu) + spu->hw_spu->control(VOCTRL_SET_SPU_PALETTE,spu->global_palette); + } +} + +void spudec_set_font_factor(void * this, double factor) +{ + spudec_handle_t *spu = (spudec_handle_t *) this; + spu->font_start_level = (int)(0xF0-(0xE0*factor)); +} + +void *spudec_new_scaled(unsigned int *palette, unsigned int frame_width, unsigned int frame_height) +{ + return spudec_new_scaled_vobsub(palette, NULL, 0, frame_width, frame_height); +} + +/* get palette custom color, width, height from .idx file */ +void *spudec_new_scaled_vobsub(unsigned int *palette, unsigned int *cuspal, unsigned int custom, unsigned int frame_width, unsigned int frame_height) +{ + spudec_handle_t *this = calloc(1, sizeof(spudec_handle_t)); + if (this){ + //(fprintf(stderr,"VobSub Custom Palette: %d,%d,%d,%d", this->cuspal[0], this->cuspal[1], this->cuspal[2],this->cuspal[3]); + this->packet = NULL; + this->image = NULL; + this->scaled_image = NULL; + /* XXX Although the video frame is some size, the SPU frame is + always maximum size i.e. 720 wide and 576 or 480 high */ + this->orig_frame_width = 720; + this->orig_frame_height = (frame_height == 480 || frame_height == 240) ? 480 : 576; + this->custom = custom; + // set up palette: + this->auto_palette = 1; + if (palette){ + memcpy(this->global_palette, palette, sizeof(this->global_palette)); + this->auto_palette = 0; + } + this->custom = custom; + if (custom && cuspal) { + memcpy(this->cuspal, cuspal, sizeof(this->cuspal)); + this->auto_palette = 0; + } + // forced subtitles default: show all subtitles + this->forced_subs_only=0; + this->is_forced_sub=0; + } + else + mp_msg(MSGT_SPUDEC,MSGL_FATAL, "FATAL: spudec_init: calloc"); + return this; +} + +void *spudec_new(unsigned int *palette) +{ + return spudec_new_scaled(palette, 0, 0); +} + +void spudec_free(void *this) +{ + spudec_handle_t *spu = (spudec_handle_t*)this; + if (spu) { + while (spu->queue_head) + spudec_free_packet(spudec_dequeue_packet(spu)); + if (spu->packet) + free(spu->packet); + if (spu->scaled_image) + free(spu->scaled_image); + if (spu->image) + free(spu->image); + if (spu->dvdnav_image) + free(spu->dvdnav_image); + if (spu->dvdnav_aimage) + free(spu->dvdnav_aimage); + + if (spu->imageu) + free(spu->imageu); + if (spu->imageyuy) + free(spu->imageyuy); + spu->imageyuy=NULL; + if (spu->scaled_imageu) + free(spu->scaled_imageu); + + if (spu->last_packet) {spudec_free_packet(spu->last_packet); spu->last_packet=NULL;} + spu->dvdnav_allocated = 0; free(spu); } } diff -Naur MPlayer-r23256.orig/spudec.h MPlayer-r23256/spudec.h --- MPlayer-r23256.orig/spudec.h 2007-05-08 02:43:32.000000000 +0200 +++ MPlayer-r23256/spudec.h 2007-05-08 02:56:36.000000000 +0200 @@ -5,8 +5,31 @@ void spudec_heartbeat(void *this, unsigned int pts100); void spudec_assemble(void *this, unsigned char *packet, unsigned int len, unsigned int pts100); -void spudec_draw(void *this, void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride)); -void spudec_draw_scaled(void *this, unsigned int dxs, unsigned int dys, void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride)); +#define DVDNAV_SPU_YUV 1 +#define DVDNAV_SPU_RGB 2 +#define DVDNAV_SPU_BGR 3 +#define DVDNAV_SPU_YUY 4 + +void spu_yuv_to_rgb(unsigned int y,unsigned int u,unsigned int v, + unsigned int *r,unsigned int *g,unsigned int *b); +void spudec_dvdnav_mode(void *this, int mode, int cflg); +void spudec_dvdnav_area(void *this, uint16_t sx, uint16_t sy, + uint16_t ex, uint16_t ey, uint32_t palette); +void spudec_dvdnav_palette(void *this, uint32_t palette); +int spudec_dvdnav_menu_box(void *this, int scaled, unsigned int scalex, + unsigned int scaley); +void spudec_new_scaled_yuv(unsigned int *palette, unsigned int frame_width, + unsigned int frame_height); +void spudec_new_scaled_rgb(unsigned int *palette, unsigned int frame_width, + unsigned int frame_height); +void spudec_draw_scaled_yuv(void *me, unsigned int dxs, unsigned int dys, + void (*draw_alpha)(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride)); +void spudec_draw_scaled_rgb(void *me, unsigned int dxs, unsigned int dys, + void (*draw_alpha)(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride)); +void spudec_create_yuy(void *this, int spu_scaled); + +void spudec_draw(void *this, void (*draw_alpha)(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride)); +void spudec_draw_scaled(void *this, unsigned int dxs, unsigned int dys, void (*draw_alpha)(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride)); void spudec_update_palette(void *this, unsigned int *palette); void *spudec_new_scaled(unsigned int *palette, unsigned int frame_width, unsigned int frame_height); void *spudec_new_scaled_vobsub(unsigned int *palette, unsigned int *cuspal, unsigned int custom, unsigned int frame_width, unsigned int frame_height); @@ -18,7 +41,7 @@ void spudec_set_hw_spu(void *this, vo_functions_t *hw_spu); int spudec_changed(void *this); void spudec_calc_bbox(void *me, unsigned int dxs, unsigned int dys, unsigned int* bbox); -void spudec_draw_scaled(void *me, unsigned int dxs, unsigned int dys, void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride)); +void spudec_draw_scaled(void *me, unsigned int dxs, unsigned int dys, void (*draw_alpha)(int x0,int y0, int w,int h, int dp, unsigned char* src, unsigned char *srca, int stride)); void spudec_set_forced_subs_only(void * const this, const unsigned int flag); #endif geexbox-1.1/packages/MPlayer/patches/800_crosscompile.diff0000644000175000017500000000502010641745504021612 0ustar benbenDont define missing functions when compiling programs on host-side. because it conflict with host headers. (32bit vs 64bit) The problematic case is when target uses glibc, which doesn't have strlcpy/strlcat and MPlayer provided declarations conflict with host system headers. diff -Nur MPlayer-1.0pre8.orig/codec-cfg.c MPlayer-1.0pre8/codec-cfg.c --- MPlayer-1.0pre8.orig/codec-cfg.c Fri Sep 29 22:43:05 2006 +++ MPlayer-1.0pre8/codec-cfg.c Fri Sep 29 22:43:13 2006 @@ -25,6 +25,7 @@ #include #include +#define HOSTSIDE #include "config.h" #include "mp_msg.h" #ifdef CODECS2HTML diff -Nur MPlayer-1.0pre8.orig/configure MPlayer-1.0pre8/configure --- MPlayer-1.0pre8.orig/configure Fri Sep 29 22:40:03 2006 +++ MPlayer-1.0pre8/configure Fri Sep 29 22:41:29 2006 @@ -7924,25 +7924,9 @@ /* Define this if your system has ftello() */ -$_def_ftello -#ifndef HAVE_FTELLO -/* Need these for FILE and off_t an config.h is usually before other includes*/ -#include -#include -off_t ftello(FILE *); -#endif - /* Define this if your system has the "malloc.h" header file */ $_def_malloc -/* memalign is mapped to malloc if unsupported */ -$_def_memalign -$_def_map_memalign -$_def_memalign_hack - -/* assembler handling of .align */ -$_def_asmalign_pot - /* Define this if your system has the "alloca.h" header file */ $_def_alloca @@ -7971,6 +7971,26 @@ /* Define this if your system has strsep */ $_def_strsep +#ifndef HOSTSIDE + +$_def_ftello +#ifndef HAVE_FTELLO +/* Need these for FILE and off_t an config.h is usually before other includes*/ +#include +#include +off_t ftello(FILE *); +#endif + +/* memalign is mapped to malloc if unsupported */ +$_def_memalign +#ifndef HAVE_MEMALIGN +# define memalign(a,b) malloc(b) +#define MEMALIGN_HACK 1 +#endif + +/* assembler handling of .align */ +$_def_asmalign_pot + /* Define this if your system has strlcpy */ $_def_strlcpy #ifndef HAVE_STRLCPY @@ -7992,6 +7992,14 @@ int fseeko(FILE *, off_t, int); #endif +/* Define this if your system has setenv */ +$_def_setenv +#ifndef HAVE_SETENV +int setenv(const char *name, const char *val, int overwrite); +#endif + +#endif + $_def_localtime_r /* Define this if your system has vsscanf */ @@ -8008,12 +8008,6 @@ /* Define this if your system has glob */ $_def_glob - -/* Define this if your system has setenv */ -$_def_setenv -#ifndef HAVE_SETENV -int setenv(const char *name, const char *val, int overwrite); -#endif /* Define this if your system has sysi86 */ $_def_sysi86 geexbox-1.1/packages/MPlayer/patches/810_vidix_configure.diff0000644000175000017500000000136110641745504022301 0ustar benben* already applied upstream Modified: trunk/configure ============================================================================== --- trunk/configure (original) +++ trunk/configure Tue Jun 5 20:35:34 2007 @@ -7233,7 +7233,7 @@ if test "$_vidix" = yes ; then _def_vidix='#define CONFIG_VIDIX 1' _vosrc="$_vosrc vo_cvidix.c" _vomodules="cvidix $_vomodules" - test $_vidix_drivers || _vidix_drivers="cyberblade ivtv mach64 mga mga_crtc2 nvidia pm2 pm3 radeon rage128 savage sis unichrome" + test "$_vidix_drivers" || _vidix_drivers="cyberblade ivtv mach64 mga mga_crtc2 nvidia pm2 pm3 radeon rage128 savage sis unichrome" test $_ivtv = "yes" || _vidix_drivers=`echo $_vidix_drivers | sed s/ivtv//` for driver in $_vidix_drivers ; do geexbox-1.1/packages/MPlayer/patches/820_vidix-ati-i420.diff0000644000175000017500000000331410641745504021470 0ustar benben* applied upstream Index: trunk/vidix/radeon_vid.c =================================================================== --- trunk/vidix/radeon_vid.c (revision 23664) +++ trunk/vidix/radeon_vid.c (working copy) @@ -3055,8 +3055,16 @@ } else { - besr.vid_buf_base_adrs_v[i]=((radeon_overlay_off+config->offsets[i]+config->offset.v)&VIF_BUF1_BASE_ADRS_MASK)|VIF_BUF1_PITCH_SEL; - besr.vid_buf_base_adrs_u[i]=((radeon_overlay_off+config->offsets[i]+config->offset.u)&VIF_BUF2_BASE_ADRS_MASK)|VIF_BUF2_PITCH_SEL; + if (besr.fourcc == IMGFMT_I420 || besr.fourcc == IMGFMT_IYUV) + { + besr.vid_buf_base_adrs_u[i]=((radeon_overlay_off+config->offsets[i]+config->offset.v)&VIF_BUF1_BASE_ADRS_MASK)|VIF_BUF1_PITCH_SEL; + besr.vid_buf_base_adrs_v[i]=((radeon_overlay_off+config->offsets[i]+config->offset.u)&VIF_BUF2_BASE_ADRS_MASK)|VIF_BUF2_PITCH_SEL; + } + else + { + besr.vid_buf_base_adrs_v[i]=((radeon_overlay_off+config->offsets[i]+config->offset.v)&VIF_BUF1_BASE_ADRS_MASK)|VIF_BUF1_PITCH_SEL; + besr.vid_buf_base_adrs_u[i]=((radeon_overlay_off+config->offsets[i]+config->offset.u)&VIF_BUF2_BASE_ADRS_MASK)|VIF_BUF2_PITCH_SEL; + } } } config->offset.y = ((besr.vid_buf_base_adrs_y[0])&VIF_BUF0_BASE_ADRS_MASK) - radeon_overlay_off; @@ -3070,13 +3078,6 @@ config->offset.v = ((besr.vid_buf_base_adrs_v[0])&VIF_BUF1_BASE_ADRS_MASK) - radeon_overlay_off; config->offset.u = ((besr.vid_buf_base_adrs_u[0])&VIF_BUF2_BASE_ADRS_MASK) - radeon_overlay_off; } - if(besr.fourcc == IMGFMT_I420 || besr.fourcc == IMGFMT_IYUV) - { - uint32_t tmp; - tmp = config->offset.u; - config->offset.u = config->offset.v; - config->offset.v = tmp; - } } else { geexbox-1.1/packages/MPlayer/patches/830_vidix-ati-old-driver.diff0000644000175000017500000036104310641745504023070 0ustar benbendiff -Naur MPlayer-r23418.orig/vidix/radeon_vid.c MPlayer-r23418/vidix/radeon_vid.c --- MPlayer-r23418.orig/vidix/radeon_vid.c 2007-06-30 16:40:14.000000000 +0200 +++ MPlayer-r23418/vidix/radeon_vid.c 2007-06-30 16:40:25.000000000 +0200 @@ -1,33 +1,13 @@ /* - * VIDIX driver for ATI Rage128 and Radeon chipsets. - * Copyright (C) 2002 Nick Kurshev - * - * This file is part of MPlayer. - * - * MPlayer 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; either version 2 of the License, or - * (at your option) any later version. - * - * MPlayer is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with MPlayer; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * This file is based on sources from - * GATOS (gatos.sf.net) and X11 (www.xfree86.org) - * - * Changes: - * - 31.12.2002 - * added support for fglrx drivers by Marcel Naziri (zwobbl@zwobbl.de) - * - 6.04.2004 - * fixes to allow compiling vidix without X11 (broken in original patch) - * - PowerPC support by Alex Beregszaszi - */ + radeon_vid - VIDIX based video driver for Radeon and Rage128 chips + Copyrights 2002 Nick Kurshev. This file is based on sources from + GATOS (gatos.sf.net) and X11 (www.xfree86.org) + Licence: GPL + + 31.12.2002 added support for fglrx drivers by Marcel Naziri (zwobbl@zwobbl.de) + 6.04.2004 fixes to allow compiling vidix without X11 (broken in original patch) + PPC support by Alex Beregszaszi +*/ #include #include @@ -47,9 +27,8 @@ #include "dha.h" #include "radeon.h" -#if !defined(RAGE128) && defined(HAVE_X11) +#ifdef HAVE_X11 #include -static uint32_t firegl_shift = 0; #endif #ifdef RAGE128 @@ -57,26 +36,22 @@ #define X_ADJUST 0 #else #define RADEON_MSG "[radeon]" -#define X_ADJUST (((besr.chip_flags&R_OVL_SHIFT)==R_OVL_SHIFT)?8:0) +#define X_ADJUST (is_shift_required ? 8 : 0) #ifndef RADEON #define RADEON #endif #endif -#define RADEON_ASSERT(msg) printf(RADEON_MSG"################# FATAL:"msg); - -#define VERBOSE_LEVEL 0 static int __verbose = 0; +#ifdef RADEON +static int is_shift_required = 0; +#endif + typedef struct bes_registers_s { /* base address of yuv framebuffer */ uint32_t yuv_base; uint32_t fourcc; - uint32_t surf_id; - int load_prg_start; - int horz_pick_nearest; - int vert_pick_nearest; - int swap_uv; /* for direct support of bgr fourccs */ uint32_t dest_bpp; /* YUV BES registers */ uint32_t reg_load_cntl; @@ -106,7 +81,6 @@ uint32_t exclusive_horz; uint32_t auto_flip_cntl; uint32_t filter_cntl; - uint32_t four_tap_coeff[5]; uint32_t key_cntl; uint32_t test; /* Configurable stuff */ @@ -119,12 +93,10 @@ uint32_t graphics_key_clr; uint32_t graphics_key_msk; uint32_t ckey_cntl; - uint32_t merge_cntl; int deinterlace_on; uint32_t deinterlace_pattern; - unsigned chip_flags; } bes_registers_t; typedef struct video_registers_s @@ -135,6 +107,9 @@ }video_registers_t; static bes_registers_t besr; +#ifndef RAGE128 +static int RadeonFamily=100; +#endif #define DECLARE_VREG(name) { #name, name, 0 } static video_registers_t vregs[] = { @@ -145,8 +120,6 @@ DECLARE_VREG(VIPPAD1_Y), DECLARE_VREG(OV0_Y_X_START), DECLARE_VREG(OV0_Y_X_END), - DECLARE_VREG(OV1_Y_X_START), - DECLARE_VREG(OV1_Y_X_END), DECLARE_VREG(OV0_PIPELINE_CNTL), DECLARE_VREG(OV0_EXCLUSIVE_HORZ), DECLARE_VREG(OV0_EXCLUSIVE_VERT), @@ -231,381 +204,47 @@ DECLARE_VREG(IDCT_AUTH_CONTROL), DECLARE_VREG(IDCT_AUTH), DECLARE_VREG(IDCT_CONTROL), -#ifdef RAGE128 - DECLARE_VREG(BM_FRAME_BUF_OFFSET), - DECLARE_VREG(BM_SYSTEM_MEM_ADDR), - DECLARE_VREG(BM_COMMAND), - DECLARE_VREG(BM_STATUS), - DECLARE_VREG(BM_QUEUE_STATUS), - DECLARE_VREG(BM_QUEUE_FREE_STATUS), - DECLARE_VREG(BM_CHUNK_0_VAL), - DECLARE_VREG(BM_CHUNK_1_VAL), - DECLARE_VREG(BM_VIP0_BUF), - DECLARE_VREG(BM_VIP0_ACTIVE), - DECLARE_VREG(BM_VIP1_BUF), - DECLARE_VREG(BM_VIP1_ACTIVE), - DECLARE_VREG(BM_VIP2_BUF), - DECLARE_VREG(BM_VIP2_ACTIVE), - DECLARE_VREG(BM_VIP3_BUF), - DECLARE_VREG(BM_VIP3_ACTIVE), - DECLARE_VREG(BM_VIDCAP_BUF0), - DECLARE_VREG(BM_VIDCAP_BUF1), - DECLARE_VREG(BM_VIDCAP_BUF2), - DECLARE_VREG(BM_VIDCAP_ACTIVE), - DECLARE_VREG(BM_GUI), - DECLARE_VREG(BM_ABORT) -#else - DECLARE_VREG(DMA_GUI_TABLE_ADDR), - DECLARE_VREG(DMA_GUI_SRC_ADDR), - DECLARE_VREG(DMA_GUI_DST_ADDR), - DECLARE_VREG(DMA_GUI_COMMAND), - DECLARE_VREG(DMA_GUI_STATUS), - DECLARE_VREG(DMA_GUI_ACT_DSCRPTR), - DECLARE_VREG(DMA_VID_SRC_ADDR), - DECLARE_VREG(DMA_VID_DST_ADDR), - DECLARE_VREG(DMA_VID_COMMAND), - DECLARE_VREG(DMA_VID_STATUS), - DECLARE_VREG(DMA_VID_ACT_DSCRPTR), -#endif + DECLARE_VREG(CONFIG_CNTL) }; -#define R_FAMILY 0x000000FF -#define R_100 0x00000001 -#define R_120 0x00000002 -#define R_150 0x00000003 -#define R_200 0x00000004 -#define R_250 0x00000005 -#define R_280 0x00000006 -#define R_300 0x00000007 -#define R_350 0x00000008 -#define R_370 0x00000010 -#define R_380 0x00000020 -#define R_420 0x00000040 -#define R_430 0x00000080 -#define R_480 0x00000100 -#define R_520 0x00000200 -#define R_530 0x00000400 -#define R_580 0x00000800 -#define R_OVL_SHIFT 0x01000000 -#define R_INTEGRATED 0x02000000 -#define R_PCIE 0x04000000 - -typedef struct ati_card_ids_s -{ - unsigned short id; - unsigned flags; -}ati_card_ids_t; - -static const ati_card_ids_t ati_card_ids[] = -{ -#ifdef RAGE128 - /* - This driver should be compatible with Rage128 (pro) chips. - (include adaptive deinterlacing!!!). - Moreover: the same logic can be used with Mach64 chips. - (I mean: mach64xx, 3d rage, 3d rage IIc, 3D rage pro, 3d rage mobility). - but they are incompatible by i/o ports. So if enthusiasts will want - then they can redefine OUTREG and INREG macros and redefine OV0_* - constants. Also it seems that mach64 chips supports only: YUY2, YV12, UYVY - fourccs (422 and 420 formats only). - */ -/* Rage128 Pro GL */ - { DEVICE_ATI_RAGE_128_PA_PRO, 0 }, - { DEVICE_ATI_RAGE_128_PB_PRO, 0 }, - { DEVICE_ATI_RAGE_128_PC_PRO, 0 }, - { DEVICE_ATI_RAGE_128_PD_PRO, 0 }, - { DEVICE_ATI_RAGE_128_PE_PRO, 0 }, - { DEVICE_ATI_RAGE_128_PF_PRO, 0 }, -/* Rage128 Pro VR */ - { DEVICE_ATI_RAGE_128_PG_PRO, 0 }, - { DEVICE_ATI_RAGE_128_PH_PRO, 0 }, - { DEVICE_ATI_RAGE_128_PI_PRO, 0 }, - { DEVICE_ATI_RAGE_128_PJ_PRO, 0 }, - { DEVICE_ATI_RAGE_128_PK_PRO, 0 }, - { DEVICE_ATI_RAGE_128_PL_PRO, 0 }, - { DEVICE_ATI_RAGE_128_PM_PRO, 0 }, - { DEVICE_ATI_RAGE_128_PN_PRO, 0 }, - { DEVICE_ATI_RAGE_128_PO_PRO, 0 }, - { DEVICE_ATI_RAGE_128_PP_PRO, 0 }, - { DEVICE_ATI_RAGE_128_PQ_PRO, 0 }, - { DEVICE_ATI_RAGE_128_PR_PRO, 0 }, - { DEVICE_ATI_RAGE_128_PS_PRO, 0 }, - { DEVICE_ATI_RAGE_128_PT_PRO, 0 }, - { DEVICE_ATI_RAGE_128_PU_PRO, 0 }, - { DEVICE_ATI_RAGE_128_PV_PRO, 0 }, - { DEVICE_ATI_RAGE_128_PW_PRO, 0 }, - { DEVICE_ATI_RAGE_128_PX_PRO, 0 }, -/* Rage128 GL */ - { DEVICE_ATI_RAGE_128_RE_SG, 0 }, - { DEVICE_ATI_RAGE_128_RF_SG, 0 }, - { DEVICE_ATI_RAGE_128_RG, 0 }, - { DEVICE_ATI_RAGE_128_RK_VR, 0 }, - { DEVICE_ATI_RAGE_128_RL_VR, 0 }, - { DEVICE_ATI_RAGE_128_SE_4X, 0 }, - { DEVICE_ATI_RAGE_128_SF_4X, 0 }, - { DEVICE_ATI_RAGE_128_SG_4X, 0 }, - { DEVICE_ATI_RAGE_128_SH, 0 }, - { DEVICE_ATI_RAGE_128_SK_4X, 0 }, - { DEVICE_ATI_RAGE_128_SL_4X, 0 }, - { DEVICE_ATI_RAGE_128_SM_4X, 0 }, - { DEVICE_ATI_RAGE_128_4X, 0 }, - { DEVICE_ATI_RAGE_128_PRO, 0 }, - { DEVICE_ATI_RAGE_128_PRO2, 0 }, - { DEVICE_ATI_RAGE_128_PRO3, 0 }, -/* these seem to be based on rage 128 instead of mach64 */ - { DEVICE_ATI_RAGE_MOBILITY_M3, 0 }, - { DEVICE_ATI_RAGE_MOBILITY_M32, 0 }, -#else -/* Radeon1 (indeed: Rage 256 Pro ;) */ - { DEVICE_ATI_RADEON_R100_QD, R_100|R_OVL_SHIFT }, - { DEVICE_ATI_RADEON_R100_QE, R_100|R_OVL_SHIFT }, - { DEVICE_ATI_RADEON_R100_QF, R_100|R_OVL_SHIFT }, - { DEVICE_ATI_RADEON_R100_QG, R_100|R_OVL_SHIFT }, - { DEVICE_ATI_RADEON_IGP_320, R_150|R_OVL_SHIFT|R_INTEGRATED }, - { DEVICE_ATI_RADEON_MOBILITY_U1, R_150|R_OVL_SHIFT|R_INTEGRATED }, - { DEVICE_ATI_RADEON_RV100_QY, R_120|R_OVL_SHIFT }, - { DEVICE_ATI_RADEON_RV100_QZ, R_120|R_OVL_SHIFT }, - { DEVICE_ATI_RADEON_MOBILITY_M7, R_150|R_OVL_SHIFT }, - { DEVICE_ATI_RADEON_RV200_LX, R_150|R_OVL_SHIFT }, - { DEVICE_ATI_RADEON_MOBILITY_M6, R_120|R_OVL_SHIFT }, - { DEVICE_ATI_RADEON_MOBILITY_M62, R_120|R_OVL_SHIFT }, -/* Radeon2 (indeed: Rage 512 Pro ;) */ - { DEVICE_ATI_R200_BB_RADEON, R_200 }, - { DEVICE_ATI_R200_BC_RADEON, R_200 }, - { DEVICE_ATI_RADEON_R200_QH, R_200 }, - { DEVICE_ATI_RADEON_R200_QI, R_200 }, - { DEVICE_ATI_RADEON_R200_QJ, R_200 }, - { DEVICE_ATI_RADEON_R200_QK, R_200 }, - { DEVICE_ATI_RADEON_R200_QL, R_200 }, - { DEVICE_ATI_RADEON_R200_QM, R_200 }, - { DEVICE_ATI_RADEON_R200_QN, R_200 }, - { DEVICE_ATI_RADEON_R200_QO, R_200 }, - { DEVICE_ATI_RADEON_R200_QH2, R_200 }, - { DEVICE_ATI_RADEON_R200_QI2, R_200 }, - { DEVICE_ATI_RADEON_R200_QJ2, R_200 }, - { DEVICE_ATI_RADEON_R200_QK2, R_200 }, - { DEVICE_ATI_RADEON_R200_QL2, R_200 }, - { DEVICE_ATI_RADEON_RV200_QW, R_150|R_OVL_SHIFT }, - { DEVICE_ATI_RADEON_RV200_QX, R_150|R_OVL_SHIFT }, - { DEVICE_ATI_RADEON_IGP330_340_350,R_200|R_INTEGRATED }, - { DEVICE_ATI_RADEON_IGP_330M_340M_350M,R_200|R_INTEGRATED }, - { DEVICE_ATI_RADEON_RV250_IG, R_250|R_OVL_SHIFT }, - { DEVICE_ATI_RADEON_7000_IGP, R_250|R_OVL_SHIFT|R_INTEGRATED }, - { DEVICE_ATI_RADEON_MOBILITY_7000, R_250|R_OVL_SHIFT|R_INTEGRATED }, - { DEVICE_ATI_RADEON_RV250_ID, R_250|R_OVL_SHIFT }, - { DEVICE_ATI_RADEON_RV250_IE, R_250|R_OVL_SHIFT }, - { DEVICE_ATI_RADEON_RV250_IF, R_250|R_OVL_SHIFT }, - { DEVICE_ATI_RADEON_RV250_IG, R_250|R_OVL_SHIFT }, - { DEVICE_ATI_RADEON_R250_LD, R_250|R_OVL_SHIFT }, - { DEVICE_ATI_RADEON_R250_LE, R_250|R_OVL_SHIFT }, - { DEVICE_ATI_RADEON_R250_MOBILITY, R_250|R_OVL_SHIFT }, - { DEVICE_ATI_RADEON_R250_LG, R_250|R_OVL_SHIFT }, - { DEVICE_ATI_RV250_RADEON_9000, R_250|R_OVL_SHIFT }, - { DEVICE_ATI_RADEON_RV250_RADEON2, R_250|R_OVL_SHIFT }, - { DEVICE_ATI_RV280_RADEON_9200, R_280 }, - { DEVICE_ATI_RV280_RADEON_92002, R_280 }, - { DEVICE_ATI_RV280_RADEON_92003, R_280 }, - { DEVICE_ATI_RV280_RADEON_92004, R_280 }, - { DEVICE_ATI_RV280_RADEON_92005, R_280 }, - { DEVICE_ATI_RV280_RADEON_92006, R_280 }, - { DEVICE_ATI_RV280_RADEON_92007, R_280 }, - { DEVICE_ATI_M9_5C61_RADEON, R_280 }, - { DEVICE_ATI_M9_5C63_RADEON, R_280 }, -/* Radeon3 (indeed: Rage 1024 Pro ;) */ - { DEVICE_ATI_R300_AG_FIREGL, R_300 }, - { DEVICE_ATI_RADEON_R300_ND, R_300 }, - { DEVICE_ATI_RADEON_R300_NE, R_300 }, - { DEVICE_ATI_RADEON_R300_NG, R_300 }, - { DEVICE_ATI_R300_AD_RADEON, R_300 }, - { DEVICE_ATI_R300_AE_RADEON, R_300 }, - { DEVICE_ATI_R300_AF_RADEON, R_300 }, - { DEVICE_ATI_RADEON_9100_IGP2, R_300|R_OVL_SHIFT|R_INTEGRATED }, - { DEVICE_ATI_RS300M_AGP_RADEON, R_300|R_INTEGRATED }, - { DEVICE_ATI_RS482_RADEON_XPRESS, R_350|R_INTEGRATED }, - { DEVICE_ATI_R350_AH_RADEON, R_350 }, - { DEVICE_ATI_R350_AI_RADEON, R_350 }, - { DEVICE_ATI_R350_AJ_RADEON, R_350 }, - { DEVICE_ATI_R350_AK_FIRE, R_350 }, - { DEVICE_ATI_RADEON_R350_RADEON2, R_350 }, - { DEVICE_ATI_RADEON_R350_RADEON3, R_350 }, - { DEVICE_ATI_RV350_NJ_RADEON, R_350 }, - { DEVICE_ATI_R350_NK_FIRE, R_350 }, - { DEVICE_ATI_RV350_AP_RADEON, R_350 }, - { DEVICE_ATI_RV350_AQ_RADEON, R_350 }, - { DEVICE_ATI_RV350_AR_RADEON, R_350 }, - { DEVICE_ATI_RV350_AS_RADEON, R_350 }, - { DEVICE_ATI_RV350_AT_FIRE, R_350 }, - { DEVICE_ATI_RV350_AU_FIRE, R_350 }, - { DEVICE_ATI_RV350_AV_FIRE, R_350 }, - { DEVICE_ATI_RV350_AW_FIRE, R_350 }, - { DEVICE_ATI_RV350_MOBILITY_RADEON, R_350 }, - { DEVICE_ATI_RV350_NF_RADEON, R_300 }, - { DEVICE_ATI_RV350_NJ_RADEON, R_300 }, - { DEVICE_ATI_RV350_AS_RADEON2, R_350 }, - { DEVICE_ATI_M10_NQ_RADEON, R_350 }, - { DEVICE_ATI_M10_NQ_RADEON2, R_350 }, - { DEVICE_ATI_RV350_MOBILITY_RADEON2, R_350 }, - { DEVICE_ATI_M10_NS_RADEON, R_350 }, - { DEVICE_ATI_M10_NT_FIREGL, R_350 }, - { DEVICE_ATI_M11_NV_FIREGL, R_350 }, - { DEVICE_ATI_RV370_5B60_RADEON, R_370|R_PCIE }, - { DEVICE_ATI_RV370_SAPPHIRE_X550, R_370 }, - { DEVICE_ATI_RV370_5B64_FIREGL, R_370|R_PCIE }, - { DEVICE_ATI_RV370_5B65_FIREGL, R_370|R_PCIE }, - { DEVICE_ATI_M24_1P_RADEON, R_370 }, - { DEVICE_ATI_M22_RADEON_MOBILITY, R_370 }, - { DEVICE_ATI_M24_1T_FIREGL, R_370 }, - { DEVICE_ATI_M24_RADEON_MOBILITY, R_370 }, - { DEVICE_ATI_RV370_RADEON_X300SE, R_370 }, - { DEVICE_ATI_RV370_SECONDARY_SAPPHIRE, R_370 }, - { DEVICE_ATI_RV370_5B64_FIREGL2, R_370 }, - { DEVICE_ATI_RV380_0X3E50_RADEON, R_380|R_PCIE }, - { DEVICE_ATI_RV380_0X3E54_FIREGL, R_380|R_PCIE }, - { DEVICE_ATI_RV380_RADEON_X600, R_380|R_PCIE }, - { DEVICE_ATI_RV380_RADEON_X6002, R_380 }, - { DEVICE_ATI_RV380_RADEON_X6003, R_380 }, - { DEVICE_ATI_RV410_FIREGL_V5000, R_420 }, - { DEVICE_ATI_RV410_FIREGL_V3300, R_420 }, - { DEVICE_ATI_RV410_RADEON_X700XT, R_420 }, - { DEVICE_ATI_RV410_RADEON_X700, R_420|R_PCIE }, - { DEVICE_ATI_RV410_RADEON_X700SE, R_420 }, - { DEVICE_ATI_RV410_RADEON_X7002, R_420|R_PCIE }, - { DEVICE_ATI_RV410_RADEON_X7003, R_420 }, - { DEVICE_ATI_RV410_RADEON_X7004, R_420|R_PCIE }, - { DEVICE_ATI_RV410_RADEON_X7005, R_420|R_PCIE }, - { DEVICE_ATI_M26_MOBILITY_FIREGL, R_420 }, - { DEVICE_ATI_M26_MOBILITY_FIREGL2, R_420 }, - { DEVICE_ATI_M26_RADEON_MOBILITY, R_420 }, - { DEVICE_ATI_M26_RADEON_MOBILITY2, R_420 }, - { DEVICE_ATI_RADEON_MOBILITY_X700, R_420 }, - { DEVICE_ATI_R420_JH_RADEON, R_420|R_PCIE }, - { DEVICE_ATI_R420_JI_RADEON, R_420|R_PCIE }, - { DEVICE_ATI_R420_JJ_RADEON, R_420|R_PCIE }, - { DEVICE_ATI_R420_JK_RADEON, R_420|R_PCIE }, - { DEVICE_ATI_R420_JL_RADEON, R_420|R_PCIE }, - { DEVICE_ATI_R420_JM_FIREGL, R_420|R_PCIE }, - { DEVICE_ATI_M18_JN_RADEON, R_420|R_PCIE }, - { DEVICE_ATI_R420_JP_RADEON, R_420|R_PCIE }, - { DEVICE_ATI_R420_RADEON_X800, R_420|R_PCIE }, - { DEVICE_ATI_R420_RADEON_X8002, R_420|R_PCIE }, - { DEVICE_ATI_R420_RADEON_X8003, R_420|R_PCIE }, - { DEVICE_ATI_R420_RADEON_X8004, R_420|R_PCIE }, - { DEVICE_ATI_R420_RADEON_X8005, R_420|R_PCIE }, - { DEVICE_ATI_R420_JM_FIREGL, R_420|R_PCIE }, - { DEVICE_ATI_R423_5F57_RADEON, R_420|R_PCIE }, - { DEVICE_ATI_R423_5F57_RADEON2, R_420|R_PCIE }, - { DEVICE_ATI_R423_UH_RADEON, R_420|R_PCIE }, - { DEVICE_ATI_R423_UI_RADEON, R_420|R_PCIE }, - { DEVICE_ATI_R423_UJ_RADEON, R_420|R_PCIE }, - { DEVICE_ATI_R423_UK_RADEON, R_420|R_PCIE }, - { DEVICE_ATI_R423_FIRE_GL, R_420|R_PCIE }, - { DEVICE_ATI_R423_UQ_FIREGL, R_420|R_PCIE }, - { DEVICE_ATI_R423_UR_FIREGL, R_420|R_PCIE }, - { DEVICE_ATI_R423_UT_FIREGL, R_420|R_PCIE }, - { DEVICE_ATI_R423_UI_RADEON2, R_420|R_PCIE }, - { DEVICE_ATI_R423GL_SE_ATI_FIREGL, R_420|R_PCIE }, - { DEVICE_ATI_R423_RADEON_X800XT, R_420|R_PCIE }, - { DEVICE_ATI_RADEON_R423_UK, R_420|R_PCIE }, - { DEVICE_ATI_M28_RADEON_MOBILITY, R_420 }, - { DEVICE_ATI_M28_MOBILITY_FIREGL, R_420 }, - { DEVICE_ATI_MOBILITY_RADEON_X800, R_420 }, - { DEVICE_ATI_R430_RADEON_X800, R_430|R_PCIE }, - { DEVICE_ATI_R430_RADEON_X8002, R_430|R_PCIE }, - { DEVICE_ATI_R430_RADEON_X8003, R_430|R_PCIE }, - { DEVICE_ATI_R430_RADEON_X8004, R_430|R_PCIE }, - { DEVICE_ATI_R480_RADEON_X800, R_480 }, - { DEVICE_ATI_R480_RADEON_X8002, R_480 }, - { DEVICE_ATI_R480_RADEON_X850XT, R_480 }, - { DEVICE_ATI_R480_RADEON_X850PRO, R_480 }, - { DEVICE_ATI_R481_RADEON_X850XT_PE, R_480|R_PCIE }, - { DEVICE_ATI_R480_RADEON_X850XT2, R_480 }, - { DEVICE_ATI_R480_RADEON_X850PRO2, R_480 }, - { DEVICE_ATI_R481_RADEON_X850XT_PE2, R_480|R_PCIE }, - { DEVICE_ATI_R480_RADEON_X850XT3, R_480|R_PCIE }, - { DEVICE_ATI_R480_RADEON_X850XT4, R_480|R_PCIE }, - { DEVICE_ATI_R480_RADEON_X850XT5, R_480|R_PCIE }, - { DEVICE_ATI_R480_RADEON_X850XT6, R_480|R_PCIE }, - { DEVICE_ATI_R520_FIREGL, R_520 }, - { DEVICE_ATI_R520_GL_ATI, R_520 }, - { DEVICE_ATI_R520_GL_ATI2, R_520 }, - { DEVICE_ATI_R520_RADEON_X1800, R_520 }, - { DEVICE_ATI_R520_RADEON_X18002, R_520 }, - { DEVICE_ATI_R520_RADEON_X18003, R_520 }, - { DEVICE_ATI_R520_RADEON_X18004, R_520 }, - { DEVICE_ATI_R520_RADEON_X18005, R_520 }, - { DEVICE_ATI_R520_RADEON_X18006, R_520 }, - { DEVICE_ATI_R520_RADEON_X18007, R_520 }, - { DEVICE_ATI_M58_RADEON_MOBILITY, R_520 }, - { DEVICE_ATI_M58_RADEON_MOBILITY2, R_520 }, - { DEVICE_ATI_M58_MOBILITY_FIREGL, R_520 }, - { DEVICE_ATI_M58_MOBILITY_FIREGL2, R_520 }, - { DEVICE_ATI_RV515_RADEON_X1600, R_520 }, - { DEVICE_ATI_RV515_RADEON_X1300, R_520 }, - { DEVICE_ATI_RV515_RADEON_X13002, R_520 }, - { DEVICE_ATI_RV515_RADEON_X13003, R_520 }, - { DEVICE_ATI_RV515_RADEON_X13004, R_520 }, - { DEVICE_ATI_RV515_RADEON_X13005, R_520 }, - { DEVICE_ATI_RV515_RADEON_X13006, R_520 }, - { DEVICE_ATI_RV515_RADEON_X13007, R_520 }, - { DEVICE_ATI_RV515_GL_ATI, R_520 }, - { DEVICE_ATI_RV515_GL_ATI2, R_520 }, - { DEVICE_ATI_RADEON_MOBILITY_X1400, R_520 }, - { DEVICE_ATI_M52_ATI_MOBILITY, R_520 }, - { DEVICE_ATI_M52_ATI_MOBILITY2, R_520 }, - { DEVICE_ATI_M52_ATI_MOBILITY3, R_520 }, - { DEVICE_ATI_M52_ATI_MOBILITY4, R_520 }, - { DEVICE_ATI_RV516_RADEON_X1300, R_520 }, - { DEVICE_ATI_RV516_RADEON_X13002, R_520 }, - { DEVICE_ATI_RV516_XT_RADEON, R_520 }, - { DEVICE_ATI_RV516_XT_RADEON2, R_520 }, - { DEVICE_ATI_RV530_RADEON_X1600, R_520 }, - { DEVICE_ATI_RV530_RADEON_X16002, R_520 }, - { DEVICE_ATI_M56GL_ATI_MOBILITY, R_520 }, - { DEVICE_ATI_M56P_RADEON_MOBILITY, R_520 }, - { DEVICE_ATI_M66_P_ATI_MOBILITY, R_520 }, - { DEVICE_ATI_M66_XT_ATI_MOBILITY, R_520 }, - { DEVICE_ATI_RV530LE_RADEON_X1600, R_520 }, - { DEVICE_ATI_RV530LE_RADEON_X16002, R_520 }, - { DEVICE_ATI_RV530LE_RADEON_X16003, R_520 }, - { DEVICE_ATI_RV530_RADEON_X16003, R_520 }, - { DEVICE_ATI_RV530_RADEON_X16004, R_520 }, - { DEVICE_ATI_R580_RADEON_X1900, R_520 }, - { DEVICE_ATI_R580_RADEON_X19002, R_520 }, - { DEVICE_ATI_R580_RADEON_X19003, R_520 }, - { DEVICE_ATI_R580_RADEON_X19004, R_520 }, - { DEVICE_ATI_R580_RADEON_X19005, R_520 }, - { DEVICE_ATI_R580_RADEON_X19006, R_520 }, - { DEVICE_ATI_R580_RADEON_X19007, R_520 }, - { DEVICE_ATI_R580_RADEON_X19008, R_520 }, - { DEVICE_ATI_R580_RADEON_X19009, R_520 }, - { DEVICE_ATI_R580_RADEON_X190010, R_520 }, - { DEVICE_ATI_R580_RADEON_X190011, R_520 }, - { DEVICE_ATI_R580_RADEON_X190012, R_520 }, - { DEVICE_ATI_R580_RADEON_X190013, R_520 }, - { DEVICE_ATI_R580_RADEON_X190014, R_520 }, - { DEVICE_ATI_R580_RADEON_X190015, R_520 }, - { DEVICE_ATI_R580_FIREGL_V7300_V7350, R_520 }, - { DEVICE_ATI_R580_FIREGL_V7300_V73502, R_520 }, +#ifdef HAVE_X11 +static uint32_t firegl_shift = 0; #endif -}; - - static void * radeon_mmio_base = 0; static void * radeon_mem_base = 0; static int32_t radeon_overlay_off = 0; static uint32_t radeon_ram_size = 0; +/* Restore on exit */ +static uint32_t SAVED_OV0_GRAPHICS_KEY_CLR = 0; +static uint32_t SAVED_OV0_GRAPHICS_KEY_MSK = 0; +static uint32_t SAVED_OV0_VID_KEY_CLR = 0; +static uint32_t SAVED_OV0_VID_KEY_MSK = 0; +static uint32_t SAVED_OV0_KEY_CNTL = 0; +#ifdef WORDS_BIGENDIAN +static uint32_t SAVED_CONFIG_CNTL = 0; +#if defined(RAGE128) +#define APER_0_BIG_ENDIAN_16BPP_SWAP (1<<0) +#define APER_0_BIG_ENDIAN_32BPP_SWAP (2<<0) +#else +#define RADEON_SURFACE_CNTL 0x0b00 +#define RADEON_NONSURF_AP0_SWP_16BPP (1 << 20) +#define RADEON_NONSURF_AP0_SWP_32BPP (1 << 21) +#endif +#endif #define GETREG(TYPE,PTR,OFFZ) (*((volatile TYPE*)((PTR)+(OFFZ)))) #define SETREG(TYPE,PTR,OFFZ,VAL) (*((volatile TYPE*)((PTR)+(OFFZ))))=VAL -#define INREG8(addr) GETREG(uint8_t,(uint8_t *)(radeon_mmio_base),addr) -#define OUTREG8(addr,val) SETREG(uint8_t,(uint8_t *)(radeon_mmio_base),addr,val) +#define INREG8(addr) GETREG(uint8_t,(uint8_t*)(radeon_mmio_base),addr) +#define OUTREG8(addr,val) SETREG(uint8_t,(uint8_t*)(radeon_mmio_base),addr,val) + static inline uint32_t INREG (uint32_t addr) { - uint32_t tmp = GETREG(uint32_t,(uint8_t *)(radeon_mmio_base),addr); - return le2me_32(tmp); + uint32_t tmp = GETREG(uint32_t,(uint8_t*)(radeon_mmio_base),addr); + return le2me_32(tmp); } -#define OUTREG(addr,val) SETREG(uint32_t,(uint8_t *)(radeon_mmio_base),addr,le2me_32(val)) -#define OUTREGP(addr,val,mask) \ +//#define OUTREG(addr,val) SETREG(uint32_t,(uint8_t*)(radeon_mmio_base),addr,val) +#define OUTREG(addr,val) SETREG(uint32_t,(uint8_t*)(radeon_mmio_base),addr,le2me_32(val)) +#define OUTREGP(addr,val,mask) \ do { \ unsigned int _tmp = INREG(addr); \ _tmp &= (mask); \ @@ -621,7 +260,7 @@ #define OUTPLL(addr,val) OUTREG8(CLOCK_CNTL_INDEX, (addr & 0x0000001f) | 0x00000080); \ OUTREG(CLOCK_CNTL_DATA, val) -#define OUTPLLP(addr,val,mask) \ +#define OUTPLLP(addr,val,mask) \ do { \ unsigned int _tmp = INPLL(addr); \ _tmp &= (mask); \ @@ -629,85 +268,6 @@ OUTPLL(addr, _tmp); \ } while (0) -#ifndef RAGE128 -enum radeon_montype -{ - MT_NONE, - MT_CRT, /* CRT-(cathode ray tube) analog monitor. (15-pin VGA connector) */ - MT_LCD, /* Liquid Crystal Display */ - MT_DFP, /* DFP-digital flat panel monitor. (24-pin DVI-I connector) */ - MT_CTV, /* Composite TV out (not in VE) */ - MT_STV /* S-Video TV out (probably in VE only) */ -}; - -typedef struct radeon_info_s -{ - int hasCRTC2; - int crtDispType; - int dviDispType; -}rinfo_t; - -static rinfo_t rinfo; - -static char * GET_MON_NAME(int type) -{ - char *pret; - switch(type) - { - case MT_NONE: pret = "no"; break; - case MT_CRT: pret = "CRT"; break; - case MT_DFP: pret = "DFP"; break; - case MT_LCD: pret = "LCD"; break; - case MT_CTV: pret = "CTV"; break; - case MT_STV: pret = "STV"; break; - default: pret = "Unknown"; - } - return pret; -} - -static void radeon_get_moninfo (rinfo_t *rinfo) -{ - unsigned int tmp; - - tmp = INREG(RADEON_BIOS_4_SCRATCH); - - if (rinfo->hasCRTC2) { - /* primary DVI port */ - if (tmp & 0x08) - rinfo->dviDispType = MT_DFP; - else if (tmp & 0x4) - rinfo->dviDispType = MT_LCD; - else if (tmp & 0x200) - rinfo->dviDispType = MT_CRT; - else if (tmp & 0x10) - rinfo->dviDispType = MT_CTV; - else if (tmp & 0x20) - rinfo->dviDispType = MT_STV; - - /* secondary CRT port */ - if (tmp & 0x2) - rinfo->crtDispType = MT_CRT; - else if (tmp & 0x800) - rinfo->crtDispType = MT_DFP; - else if (tmp & 0x400) - rinfo->crtDispType = MT_LCD; - else if (tmp & 0x1000) - rinfo->crtDispType = MT_CTV; - else if (tmp & 0x2000) - rinfo->crtDispType = MT_STV; - } else { - rinfo->dviDispType = MT_NONE; - - tmp = INREG(FP_GEN_CNTL); - - if (tmp & FP_EN_TMDS) - rinfo->crtDispType = MT_DFP; - else - rinfo->crtDispType = MT_CRT; - } -} -#endif - static uint32_t radeon_vid_get_dbpp( void ) { uint32_t dbpp,retval; @@ -735,32 +295,35 @@ static uint32_t radeon_get_xres( void ) { + /* FIXME: currently we extract that from CRTC!!!*/ uint32_t xres,h_total; -#ifndef RAGE128 - if(rinfo.hasCRTC2 && - (rinfo.dviDispType == MT_CTV || rinfo.dviDispType == MT_STV)) - h_total = INREG(CRTC2_H_TOTAL_DISP); - else -#endif - h_total = INREG(CRTC_H_TOTAL_DISP); + h_total = INREG(CRTC_H_TOTAL_DISP); xres = (h_total >> 16) & 0xffff; return (xres + 1)*8; } static uint32_t radeon_get_yres( void ) { + /* FIXME: currently we extract that from CRTC!!!*/ uint32_t yres,v_total; -#ifndef RAGE128 - if(rinfo.hasCRTC2 && - (rinfo.dviDispType == MT_CTV || rinfo.dviDispType == MT_STV)) - v_total = INREG(CRTC2_V_TOTAL_DISP); - else -#endif - v_total = INREG(CRTC_V_TOTAL_DISP); + v_total = INREG(CRTC_V_TOTAL_DISP); yres = (v_total >> 16) & 0xffff; return yres + 1; } +/* get flat panel x resolution*/ +static uint32_t radeon_get_fp_xres( void ){ + uint32_t xres=(INREG(FP_HORZ_STRETCH)&0x00fff000)>>16; + xres=(xres+1)*8; + return xres; +} + +/* get flat panel y resolution*/ +static uint32_t radeon_get_fp_yres( void ){ + uint32_t yres=(INREG(FP_VERT_STRETCH)&0x00fff000)>>12; + return yres+1; +} + static void radeon_wait_vsync(void) { int i; @@ -798,7 +361,7 @@ radeon_engine_flush(); clock_cntl_index = INREG(CLOCK_CNTL_INDEX); - mclk_cntl = INPLL(MCLK_CNTL); + mclk_cntl = INPLL(MCLK_CNTL); OUTPLL(MCLK_CNTL, mclk_cntl | FORCE_GCP | FORCE_PIPE3D_CP); @@ -810,7 +373,7 @@ gen_reset_cntl & (uint32_t)(~SOFT_RESET_GUI)); INREG(GEN_RESET_CNTL); - OUTPLL(MCLK_CNTL, mclk_cntl); + OUTPLL(MCLK_CNTL, mclk_cntl); OUTREG(CLOCK_CNTL_INDEX, clock_cntl_index); OUTREG(GEN_RESET_CNTL, gen_reset_cntl); } @@ -822,7 +385,7 @@ /* initiate flush */ OUTREGP(RB2D_DSTCACHE_CTLSTAT, RB2D_DC_FLUSH_ALL, - ~RB2D_DC_FLUSH_ALL); + ~RB2D_DC_FLUSH_ALL); for (i=0; i < 2000000; i++) { if (!(INREG(RB2D_DSTCACHE_CTLSTAT) & RB2D_DC_BUSY)) @@ -901,8 +464,9 @@ radeon_fifo_wait(1); #if defined(WORDS_BIGENDIAN) - OUTREGP(DP_DATATYPE, - HOST_BIG_ENDIAN_EN, ~HOST_BIG_ENDIAN_EN); +#ifdef RADEON + OUTREGP(DP_DATATYPE, HOST_BIG_ENDIAN_EN, ~HOST_BIG_ENDIAN_EN); +#endif #else OUTREGP(DP_DATATYPE, 0, ~HOST_BIG_ENDIAN_EN); #endif @@ -1014,19 +578,19 @@ {1.1678, 0.0, 1.7980, -0.2139, -0.5345, 2.1186, 0.0} /* BT.709 */ }; /**************************************************************************** - * SetTransform * - * Function: Calculates and sets color space transform from supplied * - * reference transform, gamma, brightness, contrast, hue and * - * saturation. * - * Inputs: bright - brightness * - * cont - contrast * - * sat - saturation * - * hue - hue * - * red_intensity - intense of red component * - * green_intensity - intense of green component * - * blue_intensity - intense of blue component * - * ref - index to the table of refernce transforms * - * Outputs: NONE * + * SetTransform * + * Function: Calculates and sets color space transform from supplied * + * reference transform, gamma, brightness, contrast, hue and * + * saturation. * + * Inputs: bright - brightness * + * cont - contrast * + * sat - saturation * + * hue - hue * + * red_intensity - intense of red component * + * green_intensity - intense of green component * + * blue_intensity - intense of blue component * + * ref - index to the table of refernce transforms * + * Outputs: NONE * ****************************************************************************/ static void radeon_set_transform(float bright, float cont, float sat, @@ -1070,6 +634,16 @@ CAdjBCb = sat * OvHueCos * trans[ref].RefBCb; CAdjBCr = sat * OvHueSin * trans[ref].RefBCb; +#if 0 /* default constants */ + CAdjLuma = 1.16455078125; + + CAdjRCb = 0.0; + CAdjRCr = 1.59619140625; + CAdjGCb = -0.39111328125; + CAdjGCr = -0.8125; + CAdjBCb = 2.01708984375; + CAdjBCr = 0; +#endif OvLuma = CAdjLuma; OvRCb = CAdjRCb; OvRCr = CAdjRCr; @@ -1083,13 +657,21 @@ OvLuma * Loff - (OvGCb + OvGCr) * Coff; OvBOff = BlueAdj + CAdjOff - OvLuma * Loff - (OvBCb + OvBCr) * Coff; +#if 0 /* default constants */ + OvROff = -888.5; + OvGOff = 545; + OvBOff = -1104; +#endif dwOvROff = ((int)(OvROff * 2.0)) & 0x1fff; dwOvGOff = (int)(OvGOff * 2.0) & 0x1fff; dwOvBOff = (int)(OvBOff * 2.0) & 0x1fff; /* Whatever docs say about R200 having 3.8 format instead of 3.11 as in Radeon is a lie */ - +#if 0 + if(RadeonFamily == 100) + { +#endif dwOvLuma =(((int)(OvLuma * 2048.0))&0x7fff)<<17; dwOvRCb = (((int)(OvRCb * 2048.0))&0x7fff)<<1; dwOvRCr = (((int)(OvRCr * 2048.0))&0x7fff)<<17; @@ -1097,7 +679,19 @@ dwOvGCr = (((int)(OvGCr * 2048.0))&0x7fff)<<17; dwOvBCb = (((int)(OvBCb * 2048.0))&0x7fff)<<1; dwOvBCr = (((int)(OvBCr * 2048.0))&0x7fff)<<17; - +#if 0 + } + else + { + dwOvLuma = (((int)(OvLuma * 256.0))&0x7ff)<<20; + dwOvRCb = (((int)(OvRCb * 256.0))&0x7ff)<<4; + dwOvRCr = (((int)(OvRCr * 256.0))&0x7ff)<<20; + dwOvGCb = (((int)(OvGCb * 256.0))&0x7ff)<<4; + dwOvGCr = (((int)(OvGCr * 256.0))&0x7ff)<<20; + dwOvBCb = (((int)(OvBCb * 256.0))&0x7ff)<<4; + dwOvBCr = (((int)(OvBCr * 256.0))&0x7ff)<<20; + } +#endif OUTREG(OV0_LIN_TRANS_A, dwOvRCb | dwOvLuma); OUTREG(OV0_LIN_TRANS_B, dwOvROff | dwOvRCr); OUTREG(OV0_LIN_TRANS_C, dwOvGCb | dwOvLuma); @@ -1150,9 +744,7 @@ static void make_default_gamma_correction( void ) { size_t i; - if((besr.chip_flags & R_100)==R_100|| - (besr.chip_flags & R_120)==R_120|| - (besr.chip_flags & R_150)==R_150){ + if(RadeonFamily == 100) { OUTREG(OV0_LIN_TRANS_A, 0x12A00000); OUTREG(OV0_LIN_TRANS_B, 0x199018FE); OUTREG(OV0_LIN_TRANS_C, 0x12A0F9B0); @@ -1162,23 +754,24 @@ for(i=0; i<6; i++){ OUTREG(r100_def_gamma[i].gammaReg, (r100_def_gamma[i].gammaSlope<<16) | - r100_def_gamma[i].gammaOffset); + r100_def_gamma[i].gammaOffset); } } else{ - OUTREG(OV0_LIN_TRANS_A, 0x12a20000); - OUTREG(OV0_LIN_TRANS_B, 0x198a190e); - OUTREG(OV0_LIN_TRANS_C, 0x12a2f9da); - OUTREG(OV0_LIN_TRANS_D, 0xf2fe0442); - OUTREG(OV0_LIN_TRANS_E, 0x12a22046); + OUTREG(OV0_LIN_TRANS_A, 0x12a00000); + OUTREG(OV0_LIN_TRANS_B, 0x1990190e); + OUTREG(OV0_LIN_TRANS_C, 0x12a0f9c0); + OUTREG(OV0_LIN_TRANS_D, 0xf3000442); + OUTREG(OV0_LIN_TRANS_E, 0x12a02040); OUTREG(OV0_LIN_TRANS_F, 0x175f); + /* Default Gamma, Of 18 segments for gamma cure, all segments in R200 are programmable, while only lower 4 and upper 2 segments are programmable in Radeon*/ for(i=0; i<18; i++){ OUTREG(r200_def_gamma[i].gammaReg, (r200_def_gamma[i].gammaSlope<<16) | - r200_def_gamma[i].gammaOffset); + r200_def_gamma[i].gammaOffset); } } } @@ -1187,9 +780,7 @@ static void radeon_vid_make_default(void) { #ifdef RAGE128 - besr.saturation = 0x0F; - besr.brightness = 0; - OUTREG(OV0_COLOUR_CNTL,0x000F0F00UL); /* Default brihgtness and saturation for Rage128 */ + OUTREG(OV0_COLOUR_CNTL,0x00101000UL); /* Default brightness and saturation for Rage128 */ #else make_default_gamma_correction(); #endif @@ -1203,12 +794,133 @@ besr.ckey_cntl = VIDEO_KEY_FN_TRUE|GRAPHIC_KEY_FN_TRUE|CMP_MIX_AND; } +static unsigned short ati_card_ids[] = +{ +#ifdef RAGE128 + /* + This driver should be compatible with Rage128 (pro) chips. + (include adaptive deinterlacing!!!). + Moreover: the same logic can be used with Mach64 chips. + (I mean: mach64xx, 3d rage, 3d rage IIc, 3D rage pro, 3d rage mobility). + but they are incompatible by i/o ports. So if enthusiasts will want + then they can redefine OUTREG and INREG macros and redefine OV0_* + constants. Also it seems that mach64 chips supports only: YUY2, YV12, UYVY + fourccs (422 and 420 formats only). + */ +/* Rage128 Pro GL */ + DEVICE_ATI_RAGE_128_PA_PRO, + DEVICE_ATI_RAGE_128_PB_PRO, + DEVICE_ATI_RAGE_128_PC_PRO, + DEVICE_ATI_RAGE_128_PD_PRO, + DEVICE_ATI_RAGE_128_PE_PRO, + DEVICE_ATI_RAGE_128_PF_PRO, +/* Rage128 Pro VR */ + DEVICE_ATI_RAGE_128_PG_PRO, + DEVICE_ATI_RAGE_128_PH_PRO, + DEVICE_ATI_RAGE_128_PI_PRO, + DEVICE_ATI_RAGE_128_PJ_PRO, + DEVICE_ATI_RAGE_128_PK_PRO, + DEVICE_ATI_RAGE_128_PL_PRO, + DEVICE_ATI_RAGE_128_PM_PRO, + DEVICE_ATI_RAGE_128_PN_PRO, + DEVICE_ATI_RAGE_128_PO_PRO, + DEVICE_ATI_RAGE_128_PP_PRO, + DEVICE_ATI_RAGE_128_PQ_PRO, + DEVICE_ATI_RAGE_128_PR_PRO, + DEVICE_ATI_RAGE_128_PS_PRO, + DEVICE_ATI_RAGE_128_PT_PRO, + DEVICE_ATI_RAGE_128_PU_PRO, + DEVICE_ATI_RAGE_128_PV_PRO, + DEVICE_ATI_RAGE_128_PW_PRO, + DEVICE_ATI_RAGE_128_PX_PRO, +/* Rage128 GL */ + DEVICE_ATI_RAGE_128_RE_SG, + DEVICE_ATI_RAGE_128_RF_SG, + DEVICE_ATI_RAGE_128_RG, + DEVICE_ATI_RAGE_128_RK_VR, + DEVICE_ATI_RAGE_128_RL_VR, + DEVICE_ATI_RAGE_128_SE_4X, + DEVICE_ATI_RAGE_128_SF_4X, + DEVICE_ATI_RAGE_128_SG_4X, + DEVICE_ATI_RAGE_128_SH, + DEVICE_ATI_RAGE_128_SK_4X, + DEVICE_ATI_RAGE_128_SL_4X, + DEVICE_ATI_RAGE_128_SM_4X, + DEVICE_ATI_RAGE_128_4X, + DEVICE_ATI_RAGE_128_PRO, + DEVICE_ATI_RAGE_128_PRO2, + DEVICE_ATI_RAGE_128_PRO3, +/* these seem to be based on rage 128 instead of mach64 */ + DEVICE_ATI_RAGE_MOBILITY_M3, + DEVICE_ATI_RAGE_MOBILITY_M32 +#else +/* Radeons (indeed: Rage 256 Pro ;) */ + DEVICE_ATI_RADEON_R100_QD, + DEVICE_ATI_RADEON_R100_QE, + DEVICE_ATI_RADEON_R100_QF, + DEVICE_ATI_RADEON_R100_QG, + DEVICE_ATI_RADEON_RV100_QY, + DEVICE_ATI_RADEON_RV100_QZ, + DEVICE_ATI_RADEON_MOBILITY_M7, + DEVICE_ATI_RADEON_RV200_LX, + DEVICE_ATI_RADEON_MOBILITY_M6, + DEVICE_ATI_RADEON_MOBILITY_M62, + DEVICE_ATI_RADEON_MOBILITY_U1, + DEVICE_ATI_R200_BB_RADEON, + DEVICE_ATI_RADEON_R200_QH, + DEVICE_ATI_RADEON_R200_QI, + DEVICE_ATI_RADEON_R200_QJ, + DEVICE_ATI_RADEON_R200_QK, + DEVICE_ATI_RADEON_R200_QL, + DEVICE_ATI_RADEON_R200_QM, + DEVICE_ATI_RADEON_R200_QH2, + DEVICE_ATI_RADEON_R200_QI2, + DEVICE_ATI_RADEON_R200_QJ2, + DEVICE_ATI_RADEON_R200_QK2, + DEVICE_ATI_RADEON_RV200_QW, + DEVICE_ATI_RADEON_RV200_QX, + DEVICE_ATI_RADEON_RV250_ID, + DEVICE_ATI_RADEON_RV250_IE, + DEVICE_ATI_RADEON_RV250_IF, + DEVICE_ATI_RADEON_RV250_IG, + DEVICE_ATI_RADEON_R250_LD, + DEVICE_ATI_RADEON_R250_LE, + DEVICE_ATI_RADEON_R250_MOBILITY, + DEVICE_ATI_RADEON_R250_LG, + DEVICE_ATI_RV370_5B60_RADEON, + DEVICE_ATI_M9_5C61_RADEON, + DEVICE_ATI_M9_5C63_RADEON, + DEVICE_ATI_RV280_RADEON_9200, + DEVICE_ATI_RV280_RADEON_92002, + DEVICE_ATI_RV280_RADEON_92003, + DEVICE_ATI_RV280_RADEON_92004, + DEVICE_ATI_RV280_RADEON_92005, + DEVICE_ATI_RV280_RADEON_92006, + DEVICE_ATI_RADEON_R300_ND, + DEVICE_ATI_RADEON_R300_NE, + DEVICE_ATI_RV350_NF_RADEON, + DEVICE_ATI_RADEON_R300_NG, + DEVICE_ATI_R300_AE_RADEON, + DEVICE_ATI_R300_AF_RADEON, + DEVICE_ATI_RV350_AP_RADEON, + DEVICE_ATI_RV350_AQ_RADEON, + DEVICE_ATI_RV350_AR_RADEON, + DEVICE_ATI_RV350_AS_RADEON, + DEVICE_ATI_R350_AH_RADEON, + DEVICE_ATI_R350_AI_RADEON, + DEVICE_ATI_RADEON_R350_RADEON2, + DEVICE_ATI_RV350_NJ_RADEON, + DEVICE_ATI_RV350_MOBILITY_RADEON, + DEVICE_ATI_RV350_MOBILITY_RADEON2 +#endif +}; + static int find_chip(unsigned chip_id) { unsigned i; - for(i = 0;i < sizeof(ati_card_ids)/sizeof(ati_card_ids_t);i++) + for(i = 0;i < sizeof(ati_card_ids)/sizeof(unsigned short);i++) { - if(chip_id == ati_card_ids[i].id) return i; + if(chip_id == ati_card_ids[i]) return i; } return -1; } @@ -1237,7 +949,8 @@ { 0, 0, 0, 0} }; -#if !defined(RAGE128) && defined(HAVE_X11) +#ifndef RAGE128 +#ifdef HAVE_X11 static void probe_fireGL_driver(void) { Display *dp = XOpenDisplay ((void*)0); int n = 0; @@ -1259,15 +972,16 @@ firegl_shift = 0x500000; if (!ext_fglrx) { printf(", but DRI seems not to be activated\n"); - printf(RADEON_MSG" Output may not work correctly, check your DRI configration!"); + printf(RADEON_MSG" Output may not work correctly, check your DRI configuration!"); } printf("\n"); } } } #endif +#endif -static int radeon_probe(int verbose, int force) +static int radeon_probe( int verbose,int force ) { pciinfo_t lst[MAX_PCI_DEVICES]; unsigned i,num_pci; @@ -1286,7 +1000,7 @@ { if(lst[i].vendor == VENDOR_ATI) { - int idx; + int idx; const char *dname; idx = find_chip(lst[i].device); if(idx == -1 && force == PROBE_NORMAL) continue; @@ -1294,13 +1008,113 @@ dname = dname ? dname : "Unknown chip"; printf(RADEON_MSG" Found chip: %s\n",dname); #if 0 - if ((lst[i].command & PCI_COMMAND_IO) == 0) - { - printf("[radeon] Device is disabled, ignoring\n"); - continue; - } + if ((lst[i].command & PCI_COMMAND_IO) == 0) + { + printf("[radeon] Device is disabled, ignoring\n"); + continue; + } +#endif +#ifndef RAGE128 + if(idx != -1) +#ifdef HAVE_X11 + probe_fireGL_driver(); +#endif + { + switch(ati_card_ids[idx]) { + /* Original radeon */ + case DEVICE_ATI_RADEON_R100_QD: + case DEVICE_ATI_RADEON_R100_QE: + case DEVICE_ATI_RADEON_R100_QF: + case DEVICE_ATI_RADEON_R100_QG: + RadeonFamily = 100; + break; + + /* Radeon VE / Radeon Mobility */ + case DEVICE_ATI_RADEON_RV100_QY: + case DEVICE_ATI_RADEON_RV100_QZ: + case DEVICE_ATI_RADEON_MOBILITY_M6: + case DEVICE_ATI_RADEON_MOBILITY_M62: + case DEVICE_ATI_RADEON_MOBILITY_U1: + RadeonFamily = 120; + break; + + /* Radeon 7500 / Radeon Mobility 7500 */ + case DEVICE_ATI_RADEON_RV200_QW: + case DEVICE_ATI_RADEON_RV200_QX: + case DEVICE_ATI_RADEON_MOBILITY_M7: + case DEVICE_ATI_RADEON_RV200_LX: + RadeonFamily = 150; + break; + + /* Radeon 8500 */ + case DEVICE_ATI_R200_BB_RADEON: + case DEVICE_ATI_RADEON_R200_QH: + case DEVICE_ATI_RADEON_R200_QI: + case DEVICE_ATI_RADEON_R200_QJ: + case DEVICE_ATI_RADEON_R200_QK: + case DEVICE_ATI_RADEON_R200_QL: + case DEVICE_ATI_RADEON_R200_QM: + case DEVICE_ATI_RADEON_R200_QH2: + case DEVICE_ATI_RADEON_R200_QI2: + case DEVICE_ATI_RADEON_R200_QJ2: + case DEVICE_ATI_RADEON_R200_QK2: + RadeonFamily = 200; + break; + + /* Radeon 9000 */ + case DEVICE_ATI_RADEON_RV250_ID: + case DEVICE_ATI_RADEON_RV250_IE: + case DEVICE_ATI_RADEON_RV250_IF: + case DEVICE_ATI_RADEON_RV250_IG: + case DEVICE_ATI_RADEON_R250_LD: + case DEVICE_ATI_RADEON_R250_LE: + case DEVICE_ATI_RADEON_R250_MOBILITY: + case DEVICE_ATI_RADEON_R250_LG: + case DEVICE_ATI_M9_5C61_RADEON: + case DEVICE_ATI_M9_5C63_RADEON: + RadeonFamily = 250; + break; + + /* Radeon 9200 */ + case DEVICE_ATI_RV280_RADEON_9200: + case DEVICE_ATI_RV280_RADEON_92002: + case DEVICE_ATI_RV280_RADEON_92003: + case DEVICE_ATI_RV280_RADEON_92004: + case DEVICE_ATI_RV280_RADEON_92005: + case DEVICE_ATI_RV280_RADEON_92006: + RadeonFamily = 280; + break; + + /* Radeon 9700 */ + case DEVICE_ATI_RADEON_R300_ND: + case DEVICE_ATI_RADEON_R300_NE: + case DEVICE_ATI_RV350_NF_RADEON: + case DEVICE_ATI_RADEON_R300_NG: + case DEVICE_ATI_R300_AE_RADEON: + case DEVICE_ATI_R300_AF_RADEON: + RadeonFamily = 300; + break; + + /* Radeon 9600/9800 */ + case DEVICE_ATI_RV370_5B60_RADEON: + case DEVICE_ATI_RV350_AP_RADEON: + case DEVICE_ATI_RV350_AQ_RADEON: + case DEVICE_ATI_RV350_AR_RADEON: + case DEVICE_ATI_RV350_AS_RADEON: + case DEVICE_ATI_RADEON_R350_RADEON2: + case DEVICE_ATI_R350_AH_RADEON: + case DEVICE_ATI_R350_AI_RADEON: + case DEVICE_ATI_RV350_NJ_RADEON: + case DEVICE_ATI_RV350_MOBILITY_RADEON: + case DEVICE_ATI_RV350_MOBILITY_RADEON2: + RadeonFamily = 350; + break; + + default: + break; + } + } #endif - memset(&besr,0,sizeof(bes_registers_t)); if(force > PROBE_NORMAL) { printf(RADEON_MSG" Driver was forced. Was found %sknown chip\n",idx == -1 ? "un" : ""); @@ -1310,12 +1124,7 @@ #else printf(RADEON_MSG" Assuming it as Radeon1\n"); #endif - besr.chip_flags=R_100|R_OVL_SHIFT; } -#if !defined(RAGE128) && defined(HAVE_X11) - probe_fireGL_driver(); -#endif - if(idx != -1) besr.chip_flags=ati_card_ids[idx].flags; def_cap.device_id = lst[i].device; err = 0; memcpy(&pci_info,&lst[i],sizeof(pciinfo_t)); @@ -1328,45 +1137,11 @@ return err; } -typedef struct saved_regs_s -{ - uint32_t ov0_vid_key_clr; - uint32_t ov0_vid_key_msk; - uint32_t ov0_graphics_key_clr; - uint32_t ov0_graphics_key_msk; - uint32_t ov0_key_cntl; - uint32_t disp_merge_cntl; -}saved_regs_t; -static saved_regs_t savreg; - -static void save_regs( void ) -{ - radeon_fifo_wait(6); - savreg.ov0_vid_key_clr = INREG(OV0_VID_KEY_CLR); - savreg.ov0_vid_key_msk = INREG(OV0_VID_KEY_MSK); - savreg.ov0_graphics_key_clr = INREG(OV0_GRAPHICS_KEY_CLR); - savreg.ov0_graphics_key_msk = INREG(OV0_GRAPHICS_KEY_MSK); - savreg.ov0_key_cntl = INREG(OV0_KEY_CNTL); - savreg.disp_merge_cntl = INREG(DISP_MERGE_CNTL); -} - -static void restore_regs( void ) -{ - radeon_fifo_wait(6); - OUTREG(OV0_VID_KEY_CLR,savreg.ov0_vid_key_clr); - OUTREG(OV0_VID_KEY_MSK,savreg.ov0_vid_key_msk); - OUTREG(OV0_GRAPHICS_KEY_CLR,savreg.ov0_graphics_key_clr); - OUTREG(OV0_GRAPHICS_KEY_MSK,savreg.ov0_graphics_key_msk); - OUTREG(OV0_KEY_CNTL,savreg.ov0_key_cntl); - OUTREG(DISP_MERGE_CNTL,savreg.disp_merge_cntl); -} +static void radeon_vid_dump_regs( void ); /* forward declaration */ -static int radeon_init(void) +static int radeon_init( void ) { int err; - - if(__verbose>0) printf("[radeon_vid] version %d\n", VIDIX_VERSION); - if(!probed) { printf(RADEON_MSG" Driver was not probed but is being initializing\n"); @@ -1382,52 +1157,109 @@ (def_cap.device_id == DEVICE_ATI_RADEON_MOBILITY_M6 || def_cap.device_id == DEVICE_ATI_RADEON_MOBILITY_M62)) { - printf(RADEON_MSG" Working around buggy Radeon Mobility M6 (0 vs. 8MB ram)\n"); + printf(RADEON_MSG" Workarounding buggy Radeon Mobility M6 (0 vs. 8MB ram)\n"); radeon_ram_size = 8192*1024; } - else if (radeon_ram_size == 0 && - (def_cap.device_id == DEVICE_ATI_RS482_RADEON_XPRESS)) - { - printf(RADEON_MSG" Working around buggy RS482 Radeon Xpress 200 Memory Detection\n"); - radeon_ram_size = (INREG(CONFIG_MEMSIZE) + 0x100000) << 2; - radeon_ram_size &= CONFIG_MEMSIZE_MASK; - } #else /* Rage Mobility (rage128) also has memsize bug */ if (radeon_ram_size == 0 && (def_cap.device_id == DEVICE_ATI_RAGE_MOBILITY_M3 || + def_cap.device_id == DEVICE_ATI_RAGE_128_RL_VR || def_cap.device_id == DEVICE_ATI_RAGE_MOBILITY_M32)) { - printf(RADEON_MSG" Working around Rage Mobility M3 (0 vs. 8MB ram)\n"); + printf(RADEON_MSG" Workarounding buggy Rage Mobility M3 (0 vs. 8MB ram)\n"); radeon_ram_size = 8192*1024; } #endif + printf(RADEON_MSG" Video memory = %uMb\n",radeon_ram_size/0x100000); +#ifdef WIN32 + //mapping large areas of video ram will fail on windows + if(radeon_ram_size > 16*1024*1024)radeon_ram_size=16*1024*1024; +#endif if((radeon_mem_base = map_phys_mem(pci_info.base0,radeon_ram_size))==(void *)-1) return ENOMEM; + memset(&besr,0,sizeof(bes_registers_t)); radeon_vid_make_default(); - printf(RADEON_MSG" Video memory = %uMb\n",radeon_ram_size/0x100000); err = mtrr_set_type(pci_info.base0,radeon_ram_size,MTRR_TYPE_WRCOMB); if(!err) printf(RADEON_MSG" Set write-combining type of video memory\n"); -#ifndef RAGE128 - { - memset(&rinfo,0,sizeof(rinfo_t)); - if((besr.chip_flags&R_100) != R_100) rinfo.hasCRTC2 = 1; - - radeon_get_moninfo(&rinfo); - if(rinfo.hasCRTC2) { - printf(RADEON_MSG" DVI port has %s monitor connected\n",GET_MON_NAME(rinfo.dviDispType)); - printf(RADEON_MSG" CRT port has %s monitor connected\n",GET_MON_NAME(rinfo.crtDispType)); - } - else - printf(RADEON_MSG" CRT port has %s monitor connected\n",GET_MON_NAME(rinfo.crtDispType)); - } + + radeon_fifo_wait(3); + SAVED_OV0_GRAPHICS_KEY_CLR = INREG(OV0_GRAPHICS_KEY_CLR); + SAVED_OV0_GRAPHICS_KEY_MSK = INREG(OV0_GRAPHICS_KEY_MSK); + SAVED_OV0_VID_KEY_CLR = INREG(OV0_VID_KEY_CLR); + SAVED_OV0_VID_KEY_MSK = INREG(OV0_VID_KEY_MSK); + SAVED_OV0_KEY_CNTL = INREG(OV0_KEY_CNTL); + printf(RADEON_MSG" Saved overlay colorkey settings\n"); + +#ifdef RADEON + switch(RadeonFamily) + { + case 100: + case 120: + case 150: + case 250: + case 280: + is_shift_required=1; + break; + default: + break; + } #endif - save_regs(); + +/* XXX: hack, but it works for me (tm) */ +#ifdef WORDS_BIGENDIAN +#if defined(RAGE128) + /* code from gatos */ + { + SAVED_CONFIG_CNTL = INREG(CONFIG_CNTL); + OUTREG(CONFIG_CNTL, SAVED_CONFIG_CNTL & + ~(APER_0_BIG_ENDIAN_16BPP_SWAP|APER_0_BIG_ENDIAN_32BPP_SWAP)); + +// printf("saved: %x, current: %x\n", SAVED_CONFIG_CNTL, +// INREG(CONFIG_CNTL)); + } +#else + /*code from radeon_video.c*/ + { + SAVED_CONFIG_CNTL = INREG(RADEON_SURFACE_CNTL); +/* OUTREG(RADEON_SURFACE_CNTL, (SAVED_CONFIG_CNTL | + RADEON_NONSURF_AP0_SWP_32BPP) & ~RADEON_NONSURF_AP0_SWP_16BPP); +*/ + OUTREG(RADEON_SURFACE_CNTL, SAVED_CONFIG_CNTL & ~(RADEON_NONSURF_AP0_SWP_32BPP + | RADEON_NONSURF_AP0_SWP_16BPP)); + +/* + OUTREG(RADEON_SURFACE_CNTL, (SAVED_CONFIG_CNTL | RADEON_NONSURF_AP0_SWP_32BPP) + & ~RADEON_NONSURF_AP0_SWP_16BPP); +*/ + } +#endif +#endif + + if(__verbose > 1) radeon_vid_dump_regs(); return 0; } -static void radeon_destroy(void) +static void radeon_destroy( void ) { - restore_regs(); + /* remove colorkeying */ + radeon_fifo_wait(3); + OUTREG(OV0_GRAPHICS_KEY_CLR, SAVED_OV0_GRAPHICS_KEY_CLR); + OUTREG(OV0_GRAPHICS_KEY_MSK, SAVED_OV0_GRAPHICS_KEY_MSK); + OUTREG(OV0_VID_KEY_CLR, SAVED_OV0_VID_KEY_CLR); + OUTREG(OV0_VID_KEY_MSK, SAVED_OV0_VID_KEY_MSK); + OUTREG(OV0_KEY_CNTL, SAVED_OV0_KEY_CNTL); + printf(RADEON_MSG" Restored overlay colorkey settings\n"); + +#ifdef WORDS_BIGENDIAN +#if defined(RAGE128) + OUTREG(CONFIG_CNTL, SAVED_CONFIG_CNTL); +// printf("saved: %x, restored: %x\n", SAVED_CONFIG_CNTL, +// INREG(CONFIG_CNTL)); +#else + OUTREG(RADEON_SURFACE_CNTL, SAVED_CONFIG_CNTL); +#endif +#endif + unmap_phys_mem(radeon_mem_base,radeon_ram_size); unmap_phys_mem(radeon_mmio_base,0xFFFF); } @@ -1439,42 +1271,26 @@ } /* - Full list of fourcc which are supported by Win2K radeon driver: + Full list of fourcc which are supported by Win2K redeon driver: YUY2, UYVY, DDES, OGLT, OGL2, OGLS, OGLB, OGNT, OGNZ, OGNS, IF09, YVU9, IMC4, M2IA, IYUV, VBID, DXT1, DXT2, DXT3, DXT4, DXT5 */ -typedef struct fourcc_desc_s +static uint32_t supported_fourcc[] = { - uint32_t fourcc; - unsigned max_srcw; -}fourcc_desc_t; - -static fourcc_desc_t supported_fourcc[] = -{ - { IMGFMT_Y800, 1567 }, - { IMGFMT_YVU9, 1567 }, - { IMGFMT_IF09, 1567 }, - { IMGFMT_YV12, 1567 }, - { IMGFMT_I420, 1567 }, - { IMGFMT_IYUV, 1567 }, - { IMGFMT_UYVY, 1551 }, - { IMGFMT_YUY2, 1551 }, - { IMGFMT_YVYU, 1551 }, - { IMGFMT_RGB15, 1551 }, - { IMGFMT_BGR15, 1551 }, - { IMGFMT_RGB16, 1551 }, - { IMGFMT_BGR16, 1551 }, - { IMGFMT_RGB32, 775 }, - { IMGFMT_BGR32, 775 } + IMGFMT_Y800, IMGFMT_Y8, IMGFMT_YVU9, IMGFMT_IF09, + IMGFMT_YV12, IMGFMT_I420, IMGFMT_IYUV, + IMGFMT_UYVY, IMGFMT_YUY2, IMGFMT_YVYU, + IMGFMT_RGB15, IMGFMT_BGR15, + IMGFMT_RGB16, IMGFMT_BGR16, + IMGFMT_RGB32, IMGFMT_BGR32 }; -__inline__ static int is_supported_fourcc(uint32_t fourcc) +inline static int is_supported_fourcc(uint32_t fourcc) { - unsigned i; - for(i=0;ifourcc)) { - to->depth = VID_DEPTH_ALL; - to->flags = VID_CAP_EXPAND | VID_CAP_SHRINK | VID_CAP_COLORKEY | - VID_CAP_BLEND; + to->depth = VID_DEPTH_1BPP | VID_DEPTH_2BPP | + VID_DEPTH_4BPP | VID_DEPTH_8BPP | + VID_DEPTH_12BPP| VID_DEPTH_15BPP| + VID_DEPTH_16BPP| VID_DEPTH_24BPP| + VID_DEPTH_32BPP; + to->flags = VID_CAP_EXPAND | VID_CAP_SHRINK | VID_CAP_COLORKEY; return 0; } else to->depth = to->flags = 0; return ENOSYS; } -static double H_scale_ratio; static void radeon_vid_dump_regs( void ) { size_t i; @@ -1502,7 +1320,7 @@ printf(RADEON_MSG"radeon_overlay_off=%08X\n",radeon_overlay_off); printf(RADEON_MSG"radeon_ram_size=%08X\n",radeon_ram_size); printf(RADEON_MSG"video mode: %ux%u@%u\n",radeon_get_xres(),radeon_get_yres(),radeon_vid_get_dbpp()); - printf(RADEON_MSG"H_scale_ratio=%8.2f\n",H_scale_ratio); + printf(RADEON_MSG"flatpanel size: %ux%u\n",radeon_get_fp_xres(),radeon_get_fp_yres()); printf(RADEON_MSG"*** Begin of OV0 registers dump ***\n"); for(i=0;i VERBOSE_LEVEL) printf(RADEON_MSG"we wanted: scaler=%08X\n",bes_flags); - if(__verbose > VERBOSE_LEVEL) radeon_vid_dump_regs(); -} - -/* Goal of this function: hide RGB background and provide black screen around movie. - Useful in '-vo fbdev:vidix -fs -zoom' mode. - Reverse effect to colorkey */ -#ifdef RAGE128 -static void radeon_vid_exclusive( void ) -{ -/* this function works only with Rage128. - Radeon should has something the same */ - unsigned screenw,screenh; - screenw = radeon_get_xres(); - screenh = radeon_get_yres(); - radeon_fifo_wait(2); - OUTREG(OV0_EXCLUSIVE_VERT,(((screenh-1)<<16)&EXCL_VERT_END_MASK)); - OUTREG(OV0_EXCLUSIVE_HORZ,(((screenw/8+1)<<8)&EXCL_HORZ_END_MASK)|EXCL_HORZ_EXCLUSIVE_EN); -} - -static void radeon_vid_non_exclusive( void ) -{ - OUTREG(OV0_EXCLUSIVE_HORZ,0); + if(__verbose > 1) printf(RADEON_MSG"we wanted: scaler=%08X\n",bes_flags); + if(__verbose > 1) radeon_vid_dump_regs(); } -#endif static unsigned radeon_query_pitch(unsigned fourcc,const vidix_yuv_t *spitch) { @@ -1681,9 +1519,10 @@ if(spy > 16 && spu == spy/2 && spv == spy/2) pitch = spy; else pitch = 32; break; + /* 4:1:0 */ case IMGFMT_IF09: case IMGFMT_YVU9: - if(spy >= 64 && spu == spy/4 && spv == spy/4) pitch = spy; + if(spy > 32 && spu == spy/4 && spv == spy/4) pitch = spy; else pitch = 64; break; default: @@ -1694,971 +1533,41 @@ return pitch; } -static void Calc_H_INC_STEP_BY ( - int fieldvalue_OV0_SURFACE_FORMAT, - double H_scale_ratio, - int DisallowFourTapVertFiltering, - int DisallowFourTapUVVertFiltering, - uint32_t *val_OV0_P1_H_INC, - uint32_t *val_OV0_P1_H_STEP_BY, - uint32_t *val_OV0_P23_H_INC, - uint32_t *val_OV0_P23_H_STEP_BY, - int *P1GroupSize, - int *P1StepSize, - int *P23StepSize ) -{ - - double ClocksNeededFor16Pixels; - - switch (fieldvalue_OV0_SURFACE_FORMAT) - { - case 3: - case 4: /*16BPP (ARGB1555 and RGB565) */ - /* All colour components are fetched in pairs */ - *P1GroupSize = 2; - /* We don't support four tap in this mode because G's are split between two bytes. In theory we could support it if */ - /* we saved part of the G when fetching the R, and then filter the G, followed by the B in the following cycles. */ - if (H_scale_ratio>=.5) - { - /* We are actually generating two pixels (but 3 colour components) per tick. Thus we don't have to skip */ - /* until we reach .5. P1 and P23 are the same. */ - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 1; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 1; - *P1StepSize = 1; - *P23StepSize = 1; - } - else if (H_scale_ratio>=.25) - { - /* Step by two */ - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*2)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 2; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*2)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 2; - *P1StepSize = 2; - *P23StepSize = 2; - } - else if (H_scale_ratio>=.125) - { - /* Step by four */ - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*4)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 3; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*4)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 3; - *P1StepSize = 4; - *P23StepSize = 4; - } - else if (H_scale_ratio>=.0625) - { - /* Step by eight */ - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*8)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 4; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*8)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 4; - *P1StepSize = 8; - *P23StepSize = 8; - } - else if (H_scale_ratio>=0.03125) - { - /* Step by sixteen */ - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*16)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 5; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*16)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 5; - *P1StepSize = 16; - *P23StepSize = 16; - } - else - { - H_scale_ratio=0.03125; - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*16)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 5; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*16)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 5; - *P1StepSize = 16; - *P23StepSize = 16; - } - break; - case 6: /*32BPP RGB */ - if (H_scale_ratio>=1.5 && !DisallowFourTapVertFiltering) - { - /* All colour components are fetched in pairs */ - *P1GroupSize = 2; - /* With four tap filtering, we can generate two colour components every clock, or two pixels every three */ - /* clocks. This means that we will have four tap filtering when scaling 1.5 or more. */ - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 0; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 0; - *P1StepSize = 1; - *P23StepSize = 1; - } - else if (H_scale_ratio>=0.75) - { - /* Four G colour components are fetched at once */ - *P1GroupSize = 4; - /* R and B colour components are fetched in pairs */ - /* With two tap filtering, we can generate four colour components every clock. */ - /* This means that we will have two tap filtering when scaling 1.0 or more. */ - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 1; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 1; - *P1StepSize = 1; - *P23StepSize = 1; - } - else if (H_scale_ratio>=0.375) - { - /* Step by two. */ - /* Four G colour components are fetched at once */ - *P1GroupSize = 4; - /* R and B colour components are fetched in pairs */ - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*2)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 2; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*2)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 2; - *P1StepSize = 2; - *P23StepSize = 2; - } - else if (H_scale_ratio>=0.25) - { - /* Step by two. */ - /* Four G colour components are fetched at once */ - *P1GroupSize = 4; - /* R and B colour components are fetched in pairs */ - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*2)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 2; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*4)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 3; - *P1StepSize = 2; - *P23StepSize = 4; - } - else if (H_scale_ratio>=0.1875) - { - /* Step by four */ - /* Four G colour components are fetched at once */ - *P1GroupSize = 4; - /* R and B colour components are fetched in pairs */ - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*4)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 3; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*4)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 3; - *P1StepSize = 4; - *P23StepSize = 4; - } - else if (H_scale_ratio>=0.125) - { - /* Step by four */ - /* Four G colour components are fetched at once */ - *P1GroupSize = 4; - /* R and B colour components are fetched in pairs */ - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*4)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 3; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*8)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 4; - *P1StepSize = 4; - *P23StepSize = 8; - } - else if (H_scale_ratio>=0.09375) - { - /* Step by eight */ - /* Four G colour components are fetched at once */ - *P1GroupSize = 4; - /* R and B colour components are fetched in pairs */ - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*8)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 4; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*8)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 4; - *P1StepSize = 8; - *P23StepSize = 8; - } - else if (H_scale_ratio>=0.0625) - { - /* Step by eight */ - /* Four G colour components are fetched at once */ - *P1GroupSize = 4; - /* R and B colour components are fetched in pairs */ - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*16)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 5; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*16)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 5; - *P1StepSize = 16; - *P23StepSize = 16; - } - else - { - H_scale_ratio=0.0625; - *P1GroupSize = 4; - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*16)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 5; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*16)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 5; - *P1StepSize = 16; - *P23StepSize = 16; - } - break; - case 9: - /*ToDo_Active: In mode 9 there is a possibility that HScale ratio may be set to an illegal value, so we have extra conditions in the if statement. For consistancy, these conditions be added to the other modes as well. */ - /* four tap on both (unless Y is too wide) */ - if ((H_scale_ratio>=(ClocksNeededFor16Pixels=8+2+2) / 16.0) && - ((uint16_t)((1/(H_scale_ratio)) * (1<<0xc) + 0.5)<=0x3000) && - ((uint16_t)((1/(H_scale_ratio*4)) * (1<<0xc) + 0.5)<=0x2000) && - !DisallowFourTapVertFiltering && !DisallowFourTapUVVertFiltering) - { /*0.75 */ - /* Colour components are fetched in pairs */ - *P1GroupSize = 2; - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 0; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*4)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 0; - *P1StepSize = 1; - *P23StepSize = 1; - } - /* two tap on Y (because it is too big for four tap), four tap on UV */ - else if ((H_scale_ratio>=(ClocksNeededFor16Pixels=4+2+2) / 16.0) && - ((uint16_t)((1/(H_scale_ratio)) * (1<<0xc) + 0.5)<=0x3000) && - ((uint16_t)((1/(H_scale_ratio*4)) * (1<<0xc) + 0.5)<=0x2000) && - DisallowFourTapVertFiltering && !DisallowFourTapUVVertFiltering) - { /*0.75 */ - *P1GroupSize = 4; - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 1; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*4)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 0; - *P1StepSize = 1; - *P23StepSize = 1; - } - /* We scale the Y with the four tap filters, but UV's are generated - with dual two tap configuration. */ - else if ((H_scale_ratio>=(ClocksNeededFor16Pixels=8+1+1) / 16.0) && - ((uint16_t)((1/(H_scale_ratio)) * (1<<0xc) + 0.5)<=0x3000) && - ((uint16_t)((1/(H_scale_ratio*4)) * (1<<0xc) + 0.5)<=0x2000) && - !DisallowFourTapVertFiltering) - { /*0.625 */ - *P1GroupSize = 2; - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 0; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*4)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 1; - *P1StepSize = 1; - *P23StepSize = 1; - } - /* We scale the Y, U, and V with the two tap filters */ - else if ((H_scale_ratio>=(ClocksNeededFor16Pixels=4+1+1) / 16.0) && - ((uint16_t)((1/(H_scale_ratio)) * (1<<0xc) + 0.5)<=0x3000) && - ((uint16_t)((1/(H_scale_ratio*4)) * (1<<0xc) + 0.5)<=0x2000)) - { /*0.375 */ - *P1GroupSize = 4; - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 1; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*4)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 1; - *P1StepSize = 1; - *P23StepSize = 1; - } - /* We scale step the U and V by two to allow more bandwidth for fetching Y's, - thus we won't drop Y's yet. */ - else if ((H_scale_ratio>=(ClocksNeededFor16Pixels=4+.5+.5) / 16.0) && - ((uint16_t)((1/(H_scale_ratio)) * (1<<0xc) + 0.5)<=0x3000) && - ((uint16_t)((1/(H_scale_ratio*4*2)) * (1<<0xc) + 0.5)<=0x2000)) - { /*>=0.3125 and >.333333~ */ - *P1GroupSize = 4; - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 1; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*4*2)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 2; - *P1StepSize = 1; - *P23StepSize = 2; - } - /* We step the Y, U, and V by two. */ - else if ((H_scale_ratio>=(ClocksNeededFor16Pixels=2+.5+.5) / 16.0) && - ((uint16_t)((1/(H_scale_ratio*2)) * (1<<0xc) + 0.5)<=0x3000) && - ((uint16_t)((1/(H_scale_ratio*4*2)) * (1<<0xc) + 0.5)<=0x2000)) - { - *P1GroupSize = 4; - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*2)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 2; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*4*2)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 2; - *P1StepSize = 2; - *P23StepSize = 2; - } - /* We step the Y by two and the U and V by four. */ - else if ((H_scale_ratio>=(ClocksNeededFor16Pixels=2+.25+.25) / 16.0) && - ((uint16_t)((1/(H_scale_ratio)) * (1<<0xc) + 0.5)<=0x3000) && - ((uint16_t)((1/(H_scale_ratio*4*4)) * (1<<0xc) + 0.5)<=0x2000)) - { - *P1GroupSize = 4; - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*2)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 2; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*4*4)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 3; - *P1StepSize = 2; - *P23StepSize = 4; - } - /* We step the Y, U, and V by four. */ - else if ((H_scale_ratio>=(ClocksNeededFor16Pixels=1+.25+.25) / 16.0) && - ((uint16_t)((1/(H_scale_ratio*4)) * (1<<0xc) + 0.5)<=0x3000) && - ((uint16_t)((1/(H_scale_ratio*4*4)) * (1<<0xc) + 0.5)<=0x2000)) - { - *P1GroupSize = 4; - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*4)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 3; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*4*4)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 3; - *P1StepSize = 4; - *P23StepSize = 4; - } - /* We would like to step the Y by four and the U and V by eight, but we can't mix step by 3 and step by 4 for packed modes */ - - /* We step the Y, U, and V by eight. */ - else if ((H_scale_ratio>=(ClocksNeededFor16Pixels=.5+.125+.125) / 16.0) && - ((uint16_t)((1/(H_scale_ratio*8)) * (1<<0xc) + 0.5)<=0x3000) && - ((uint16_t)((1/(H_scale_ratio*4*8)) * (1<<0xc) + 0.5)<=0x2000)) - { - *P1GroupSize = 4; - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*8)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 4; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*4*8)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 4; - *P1StepSize = 8; - *P23StepSize = 8; - } - /* We step the Y by eight and the U and V by sixteen. */ - else if ((H_scale_ratio>=(ClocksNeededFor16Pixels=.5+.0625+.0625) / 16.0) && - ((uint16_t)((1/(H_scale_ratio*8)) * (1<<0xc) + 0.5)<=0x3000) && - ((uint16_t)((1/(H_scale_ratio*4*16)) * (1<<0xc) + 0.5)<=0x2000)) - { - *P1GroupSize = 4; - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*8)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 4; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*4*16)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 5; - *P1StepSize = 8; - *P23StepSize = 16; - } - /* We step the Y, U, and V by sixteen. */ - else if ((H_scale_ratio>=(ClocksNeededFor16Pixels=.25+.0625+.0625) / 16.0) && - ((uint16_t)((1/(H_scale_ratio*16)) * (1<<0xc) + 0.5)<=0x3000) && - ((uint16_t)((1/(H_scale_ratio*4*16)) * (1<<0xc) + 0.5)<=0x2000)) - { - *P1GroupSize = 4; - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*16)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 5; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*4*16)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 5; - *P1StepSize = 16; - *P23StepSize = 16; - } - else - { - H_scale_ratio=(ClocksNeededFor16Pixels=.25+.0625+.0625) / 16; - *P1GroupSize = 4; - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*16)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 5; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*4*16)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 5; - *P1StepSize = 16; - *P23StepSize = 16; - } - break; - case 10: - case 11: - case 12: - case 13: - case 14: /* YUV12, VYUY422, YUYV422, YOverPkCRCB12, YWovenWithPkCRCB12 */ - /* We scale the Y, U, and V with the four tap filters */ - /* four tap on both (unless Y is too wide) */ - if ((H_scale_ratio>=(ClocksNeededFor16Pixels=8+4+4) / 16.0) && - !DisallowFourTapVertFiltering && !DisallowFourTapUVVertFiltering) - { /*0.75 */ - *P1GroupSize = 2; - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 0; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*2)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 0; - *P1StepSize = 1; - *P23StepSize = 1; - } - /* two tap on Y (because it is too big for four tap), four tap on UV */ - else if ((H_scale_ratio>=(ClocksNeededFor16Pixels=4+4+4) / 16.0) && - DisallowFourTapVertFiltering && !DisallowFourTapUVVertFiltering) - { /*0.75 */ - *P1GroupSize = 4; - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 1; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*2)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 0; - *P1StepSize = 1; - *P23StepSize = 1; - } - /* We scale the Y with the four tap filters, but UV's are generated - with dual two tap configuration. */ - else if ((H_scale_ratio>=(ClocksNeededFor16Pixels=8+2+2) / 16.0) && - !DisallowFourTapVertFiltering) - { /*0.625 */ - *P1GroupSize = 2; - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 0; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*2)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 1; - *P1StepSize = 1; - *P23StepSize = 1; - } - /* We scale the Y, U, and V with the two tap filters */ - else if (H_scale_ratio>=(ClocksNeededFor16Pixels=4+2+2) / 16.0) - { /*0.375 */ - *P1GroupSize = 4; - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 1; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*2)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 1; - *P1StepSize = 1; - *P23StepSize = 1; - } - /* We scale step the U and V by two to allow more bandwidth for - fetching Y's, thus we won't drop Y's yet. */ - else if (H_scale_ratio>=(ClocksNeededFor16Pixels=4+1+1) / 16.0) - { /*0.312 */ - *P1GroupSize = 4; - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 1; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*2*2)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 2; - *P1StepSize = 1; - *P23StepSize = 2; - } - /* We step the Y, U, and V by two. */ - else if (H_scale_ratio>=(ClocksNeededFor16Pixels=2+1+1) / 16.0) - { - *P1GroupSize = 4; - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*2)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 2; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*2*2)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 2; - *P1StepSize = 2; - *P23StepSize = 2; - } - /* We step the Y by two and the U and V by four. */ - else if (H_scale_ratio>=(ClocksNeededFor16Pixels=2+.5+.5) / 16.0) - { - *P1GroupSize = 4; - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*2)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 2; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*2*4)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 3; - *P1StepSize = 2; - *P23StepSize = 4; - } - /* We step the Y, U, and V by four. */ - else if (H_scale_ratio>=(ClocksNeededFor16Pixels=1+.5+.5) / 16.0) - { - *P1GroupSize = 4; - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*4)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 3; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*2*4)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 3; - *P1StepSize = 4; - *P23StepSize = 4; - } - /* We step the Y by four and the U and V by eight. */ - else if ((H_scale_ratio>=(ClocksNeededFor16Pixels=1+.25+.25) / 16.0) && - (fieldvalue_OV0_SURFACE_FORMAT==10)) - { - *P1GroupSize = 4; - /* Can't mix step by 3 and step by 4 for packed modes */ - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*4)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 3; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*2*8)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 4; - *P1StepSize = 4; - *P23StepSize = 8; - } - /* We step the Y, U, and V by eight. */ - else if (H_scale_ratio>=(ClocksNeededFor16Pixels=.5+.25+.25) / 16.0) - { - *P1GroupSize = 4; - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*8)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 4; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*2*8)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 4; - *P1StepSize = 8; - *P23StepSize = 8; - } - /* We step the Y by eight and the U and V by sixteen. */ - else if ((H_scale_ratio>=(ClocksNeededFor16Pixels=.5+.125+.125) / 16.0) && (fieldvalue_OV0_SURFACE_FORMAT==10)) - { - *P1GroupSize = 4; - /* Step by 5 not supported for packed modes */ - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*8)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 4; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*2*16)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 5; - *P1StepSize = 8; - *P23StepSize = 16; - } - /* We step the Y, U, and V by sixteen. */ - else if ((H_scale_ratio>=(ClocksNeededFor16Pixels=.25+.125+.125) / 16.0) && - (fieldvalue_OV0_SURFACE_FORMAT==10)) - { - *P1GroupSize = 4; - /* Step by 5 not supported for packed modes */ - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*16)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 5; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*2*16)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 5; - *P1StepSize = 16; - *P23StepSize = 16; - } - else - { - if (fieldvalue_OV0_SURFACE_FORMAT==10) - { - H_scale_ratio=(ClocksNeededFor16Pixels=.25+.125+.125) / 16; - *P1GroupSize = 4; - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*16)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 5; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*2*16)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 5; - *P1StepSize = 16; - *P23StepSize = 16; - } - else - { - H_scale_ratio=(ClocksNeededFor16Pixels=.5+.25+.25) / 16; - *P1GroupSize = 4; - *val_OV0_P1_H_INC = (uint16_t)((1/(H_scale_ratio*8)) * (1<<0xc) + 0.5); - *val_OV0_P1_H_STEP_BY = 4; - *val_OV0_P23_H_INC = (uint16_t)((1/(H_scale_ratio*2*8)) * (1<<0xc) + 0.5); - *val_OV0_P23_H_STEP_BY = 4; - *P1StepSize = 8; - *P23StepSize = 8; - } - } - break; - default: break; - - } - besr.h_inc = (*(val_OV0_P1_H_INC)&0x3fff) | ((*(val_OV0_P23_H_INC)&0x3fff)<<16); - besr.step_by = (*(val_OV0_P1_H_STEP_BY)&0x7) | ((*(val_OV0_P23_H_STEP_BY)&0x7)<<8); -} - -/* ********************************************************* */ -/* ** Setup Black Bordering */ -/* ********************************************************* */ - -static void ComputeBorders( vidix_playback_t *config, int VertUVSubSample ) -{ - double tempBLANK_LINES_AT_TOP; - unsigned TopLine,BottomLine,SourceLinesUsed,TopUVLine,BottomUVLine,SourceUVLinesUsed; - uint32_t val_OV0_P1_ACTIVE_LINES_M1,val_OV0_P1_BLNK_LN_AT_TOP_M1; - uint32_t val_OV0_P23_ACTIVE_LINES_M1,val_OV0_P23_BLNK_LN_AT_TOP_M1; - - if (floor(config->src.y)<0) { - tempBLANK_LINES_AT_TOP = -floor(config->src.y); - TopLine = 0; - } - else { - tempBLANK_LINES_AT_TOP = 0; - TopLine = (int)floor(config->src.y); - } - /* Round rSrcBottom up and subtract one */ - if (ceil(config->src.y+config->src.h) > config->src.h) - { - BottomLine = config->src.h - 1; - } - else - { - BottomLine = (int)ceil(config->src.y+config->src.h) - 1; - } - - if (BottomLine >= TopLine) - { - SourceLinesUsed = BottomLine - TopLine + 1; - } - else - { - /*CYCACC_ASSERT(0, "SourceLinesUsed less than or equal to zero.") */ - SourceLinesUsed = 1; - } - - { - int SourceHeightInPixels; - SourceHeightInPixels = BottomLine - TopLine + 1; - } - - val_OV0_P1_ACTIVE_LINES_M1 = SourceLinesUsed - 1; - val_OV0_P1_BLNK_LN_AT_TOP_M1 = ((int)tempBLANK_LINES_AT_TOP-1) & 0xfff; - - TopUVLine = ((int)(config->src.y/VertUVSubSample) < 0) ? 0: (int)(config->src.y/VertUVSubSample); /* Round rSrcTop down */ - BottomUVLine = (ceil(((config->src.y+config->src.h)/VertUVSubSample)) > (config->src.h/VertUVSubSample)) - ? (config->src.h/VertUVSubSample)-1 : (unsigned int)ceil(((config->src.y+config->src.h)/VertUVSubSample))-1; - - if (BottomUVLine >= TopUVLine) - { - SourceUVLinesUsed = BottomUVLine - TopUVLine + 1; - } - else - { - /*CYCACC_ASSERT(0, "SourceUVLinesUsed less than or equal to zero.") */ - SourceUVLinesUsed = 1; - } - val_OV0_P23_ACTIVE_LINES_M1 = SourceUVLinesUsed - 1; - val_OV0_P23_BLNK_LN_AT_TOP_M1 = ((int)(tempBLANK_LINES_AT_TOP/VertUVSubSample)-1) & 0x7ff; - besr.p1_blank_lines_at_top = (val_OV0_P1_BLNK_LN_AT_TOP_M1 & 0xfff) | - ((val_OV0_P1_ACTIVE_LINES_M1 & 0xfff) << 16); - besr.p23_blank_lines_at_top = (val_OV0_P23_BLNK_LN_AT_TOP_M1 & 0x7ff) | - ((val_OV0_P23_ACTIVE_LINES_M1 & 0x7ff) << 16); -} - - -static void ComputeXStartEnd( - int is_400, - uint32_t LeftPixel,uint32_t LeftUVPixel, - uint32_t MemWordsInBytes,uint32_t BytesPerPixel, - uint32_t SourceWidthInPixels, uint32_t P1StepSize, - uint32_t BytesPerUVPixel,uint32_t SourceUVWidthInPixels, - uint32_t P23StepSize, uint32_t *p1_x_start, uint32_t *p2_x_start ) -{ - uint32_t val_OV0_P1_X_START,val_OV0_P2_X_START,val_OV0_P3_X_START; - uint32_t val_OV0_P1_X_END,val_OV0_P2_X_END,val_OV0_P3_X_END; - /* ToDo_Active: At the moment we are not using iOV0_VID_BUF?_START_PIX, but instead // are using iOV0_P?_X_START and iOV0_P?_X_END. We should use "start pix" and // "width" to derive the start and end. */ - - val_OV0_P1_X_START = (int)LeftPixel % (MemWordsInBytes/BytesPerPixel); - val_OV0_P1_X_END = (int)((val_OV0_P1_X_START + SourceWidthInPixels - 1) / P1StepSize) * P1StepSize; - - val_OV0_P2_X_START = val_OV0_P2_X_END = 0; - switch (besr.surf_id) - { - case 9: - case 10: - case 13: - case 14: /* ToDo_Active: The driver must insure that the initial value is */ - /* a multiple of a power of two when decimating */ - val_OV0_P2_X_START = (int)LeftUVPixel % - (MemWordsInBytes/BytesPerUVPixel); - val_OV0_P2_X_END = (int)((val_OV0_P2_X_START + - SourceUVWidthInPixels - 1) / P23StepSize) * P23StepSize; - break; - case 11: - case 12: val_OV0_P2_X_START = (int)LeftUVPixel % (MemWordsInBytes/(BytesPerPixel*2)); - val_OV0_P2_X_END = (int)((val_OV0_P2_X_START + SourceUVWidthInPixels - 1) / P23StepSize) * P23StepSize; - break; - case 3: - case 4: val_OV0_P2_X_START = val_OV0_P1_X_START; - /* This value is needed only to allow proper setting of */ - /* val_OV0_PRESHIFT_P23_TO */ - /* val_OV0_P2_X_END = 0; */ - break; - case 6: val_OV0_P2_X_START = (int)LeftPixel % (MemWordsInBytes/BytesPerPixel); - val_OV0_P2_X_END = (int)((val_OV0_P1_X_START + SourceWidthInPixels - 1) / P23StepSize) * P23StepSize; - break; - default: /* insert debug statement here. */ - RADEON_ASSERT("unknown fourcc\n"); - break; - } - val_OV0_P3_X_START = val_OV0_P2_X_START; - val_OV0_P3_X_END = val_OV0_P2_X_END; - - besr.p1_x_start_end = (val_OV0_P1_X_END&0x7ff) | ((val_OV0_P1_X_START&0x7ff)<<16); - besr.p2_x_start_end = (val_OV0_P2_X_END&0x7ff) | ((val_OV0_P2_X_START&0x7ff)<<16); - besr.p3_x_start_end = (val_OV0_P3_X_END&0x7ff) | ((val_OV0_P3_X_START&0x7ff)<<16); - if(is_400) - { - besr.p2_x_start_end = 0; - besr.p3_x_start_end = 0; - } - *p1_x_start = val_OV0_P1_X_START; - *p2_x_start = val_OV0_P2_X_START; -} - -static void ComputeAccumInit( - uint32_t val_OV0_P1_X_START,uint32_t val_OV0_P2_X_START, - uint32_t val_OV0_P1_H_INC,uint32_t val_OV0_P23_H_INC, - uint32_t val_OV0_P1_H_STEP_BY,uint32_t val_OV0_P23_H_STEP_BY, - uint32_t CRT_V_INC, - uint32_t P1GroupSize, uint32_t P23GroupSize, - uint32_t val_OV0_P1_MAX_LN_IN_PER_LN_OUT, - uint32_t val_OV0_P23_MAX_LN_IN_PER_LN_OUT) -{ - uint32_t val_OV0_P1_H_ACCUM_INIT,val_OV0_PRESHIFT_P1_TO; - uint32_t val_OV0_P23_H_ACCUM_INIT,val_OV0_PRESHIFT_P23_TO; - uint32_t val_OV0_P1_V_ACCUM_INIT,val_OV0_P23_V_ACCUM_INIT; - /* 2.5 puts the kernal 50% of the way between the source pixel that is off screen */ - /* and the first on-screen source pixel. "(float)valOV0_P?_H_INC / (1<<0xc)" is */ - /* the distance (in source pixel coordinates) to the center of the first */ - /* destination pixel. Need to add additional pixels depending on how many pixels */ - /* are fetched at a time and how many pixels in a set are masked. */ - /* P23 values are always fetched in groups of two or four. If the start */ - /* pixel does not fall on the boundary, then we need to shift preshift for */ - /* some additional pixels */ - - { - double ExtraHalfPixel; - double tempAdditionalShift; - double tempP1HStartPoint; - double tempP23HStartPoint; - double tempP1Init; - double tempP23Init; - - if (besr.horz_pick_nearest) ExtraHalfPixel = 0.5; - else ExtraHalfPixel = 0.0; - tempAdditionalShift = val_OV0_P1_X_START % P1GroupSize + ExtraHalfPixel; - tempP1HStartPoint = tempAdditionalShift + 2.5 + ((float)val_OV0_P1_H_INC / (1<<0xd)); - tempP1Init = (double)((int)(tempP1HStartPoint * (1<<0x5) + 0.5)) / (1<<0x5); - - /* P23 values are always fetched in pairs. If the start pixel is odd, then we */ - /* need to shift an additional pixel */ - /* Note that if the pitch is a multiple of two, and if we store fields using */ - /* the traditional planer format where the V plane and the U plane share the */ - /* same pitch, then OverlayRegFields->val_OV0_P2_X_START % P23Group */ - /* OverlayRegFields->val_OV0_P3_X_START % P23GroupSize. Either way */ - /* it is a requirement that the U and V start on the same polarity byte */ - /* (even or odd). */ - tempAdditionalShift = val_OV0_P2_X_START % P23GroupSize + ExtraHalfPixel; - tempP23HStartPoint = tempAdditionalShift + 2.5 + ((float)val_OV0_P23_H_INC / (1<<0xd)); - tempP23Init = (double)((int)(tempP23HStartPoint * (1<<0x5) + 0.5)) / (1 << 0x5); - val_OV0_P1_H_ACCUM_INIT = (int)((tempP1Init - (int)tempP1Init) * (1<<0x5)); - val_OV0_PRESHIFT_P1_TO = (int)tempP1Init; - val_OV0_P23_H_ACCUM_INIT = (int)((tempP23Init - (int)tempP23Init) * (1<<0x5)); - val_OV0_PRESHIFT_P23_TO = (int)tempP23Init; - } - - /* ************************************************************** */ - /* ** Calculate values for initializing the vertical accumulators */ - /* ************************************************************** */ - - { - double ExtraHalfLine; - double ExtraFullLine; - double tempP1VStartPoint; - double tempP23VStartPoint; - - if (besr.vert_pick_nearest) ExtraHalfLine = 0.5; - else ExtraHalfLine = 0.0; - - if (val_OV0_P1_H_STEP_BY==0)ExtraFullLine = 1.0; - else ExtraFullLine = 0.0; - - tempP1VStartPoint = 1.5 + ExtraFullLine + ExtraHalfLine + ((float)CRT_V_INC / (1<<0xd)); - if (tempP1VStartPoint>2.5 + 2*ExtraFullLine) - { - tempP1VStartPoint = 2.5 + 2*ExtraFullLine; - } - val_OV0_P1_V_ACCUM_INIT = (int)(tempP1VStartPoint * (1<<0x5) + 0.5); - - if (val_OV0_P23_H_STEP_BY==0)ExtraFullLine = 1.0; - else ExtraFullLine = 0.0; - - switch (besr.surf_id) - { - case 10: - case 13: - case 14: tempP23VStartPoint = 1.5 + ExtraFullLine + ExtraHalfLine + - ((float)CRT_V_INC / (1<<0xe)); - break; - case 9: tempP23VStartPoint = 1.5 + ExtraFullLine + ExtraHalfLine + - ((float)CRT_V_INC / (1<<0xf)); - break; - case 3: - case 4: - case 6: - case 11: - case 12: tempP23VStartPoint = 0; - break; - default: tempP23VStartPoint = 0xFFFF;/* insert debug statement here */ - break; - } - - if (tempP23VStartPoint>2.5 + 2*ExtraFullLine) - { - tempP23VStartPoint = 2.5 + 2*ExtraFullLine; - } - - val_OV0_P23_V_ACCUM_INIT = (int)(tempP23VStartPoint * (1<<0x5) + 0.5); - } - besr.p1_h_accum_init = ((val_OV0_P1_H_ACCUM_INIT&0x1f)<<15) |((val_OV0_PRESHIFT_P1_TO&0xf)<<28); - besr.p1_v_accum_init = (val_OV0_P1_MAX_LN_IN_PER_LN_OUT&0x3) |((val_OV0_P1_V_ACCUM_INIT&0x7ff)<<15); - besr.p23_h_accum_init= ((val_OV0_P23_H_ACCUM_INIT&0x1f)<<15) |((val_OV0_PRESHIFT_P23_TO&0xf)<<28); - besr.p23_v_accum_init= (val_OV0_P23_MAX_LN_IN_PER_LN_OUT&0x3)|((val_OV0_P23_V_ACCUM_INIT&0x3ff)<<15); -} - -typedef struct RangeAndCoefSet { - double Range; - signed char CoefSet[5][4]; -} RANGEANDCOEFSET; - -/* Filter Setup Routine */ -static void FilterSetup ( uint32_t val_OV0_P1_H_INC ) -{ - static RANGEANDCOEFSET ArrayOfSets[] = { - {0.25, {{ 7, 16, 9, 0}, { 7, 16, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 3, 13, 13, 3}, }}, - {0.26, {{ 7, 16, 9, 0}, { 7, 16, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 3, 13, 13, 3}, }}, - {0.27, {{ 7, 16, 9, 0}, { 7, 16, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 3, 13, 13, 3}, }}, - {0.28, {{ 7, 16, 9, 0}, { 7, 16, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 3, 13, 13, 3}, }}, - {0.29, {{ 7, 16, 9, 0}, { 7, 16, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 3, 13, 13, 3}, }}, - {0.30, {{ 7, 16, 9, 0}, { 7, 16, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 3, 13, 13, 3}, }}, - {0.31, {{ 7, 16, 9, 0}, { 7, 16, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 3, 13, 13, 3}, }}, - {0.32, {{ 7, 16, 9, 0}, { 7, 16, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 3, 13, 13, 3}, }}, - {0.33, {{ 7, 16, 9, 0}, { 7, 16, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 3, 13, 13, 3}, }}, - {0.34, {{ 7, 16, 9, 0}, { 7, 16, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 3, 13, 13, 3}, }}, - {0.35, {{ 7, 16, 9, 0}, { 7, 16, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 3, 13, 13, 3}, }}, - {0.36, {{ 7, 16, 9, 0}, { 7, 16, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 3, 13, 13, 3}, }}, - {0.37, {{ 7, 16, 9, 0}, { 7, 16, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 3, 13, 13, 3}, }}, - {0.38, {{ 7, 16, 9, 0}, { 7, 16, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 3, 13, 13, 3}, }}, - {0.39, {{ 7, 16, 9, 0}, { 7, 16, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 3, 13, 13, 3}, }}, - {0.40, {{ 7, 16, 9, 0}, { 7, 16, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 3, 13, 13, 3}, }}, - {0.41, {{ 7, 16, 9, 0}, { 7, 16, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 3, 13, 13, 3}, }}, - {0.42, {{ 7, 16, 9, 0}, { 7, 16, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 3, 13, 13, 3}, }}, - {0.43, {{ 7, 16, 9, 0}, { 7, 16, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 3, 13, 13, 3}, }}, - {0.44, {{ 7, 16, 9, 0}, { 7, 16, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 3, 13, 13, 3}, }}, - {0.45, {{ 7, 16, 9, 0}, { 7, 16, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 3, 13, 13, 3}, }}, - {0.46, {{ 7, 16, 9, 0}, { 7, 16, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 3, 13, 13, 3}, }}, - {0.47, {{ 7, 16, 9, 0}, { 7, 16, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 3, 13, 13, 3}, }}, - {0.48, {{ 7, 16, 9, 0}, { 7, 16, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 3, 13, 13, 3}, }}, - {0.49, {{ 7, 16, 9, 0}, { 7, 16, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 3, 13, 13, 3}, }}, - {0.50, {{ 7, 16, 9, 0}, { 7, 16, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 3, 13, 13, 3}, }}, - {0.51, {{ 7, 17, 8, 0}, { 6, 17, 9, 0}, { 5, 15, 11, 1}, { 4, 15, 12, 1}, { 2, 14, 14, 2}, }}, - {0.52, {{ 7, 17, 8, 0}, { 6, 17, 9, 0}, { 5, 16, 11, 0}, { 3, 15, 13, 1}, { 2, 14, 14, 2}, }}, - {0.53, {{ 7, 17, 8, 0}, { 6, 17, 9, 0}, { 5, 16, 11, 0}, { 3, 15, 13, 1}, { 2, 14, 14, 2}, }}, - {0.54, {{ 7, 17, 8, 0}, { 6, 17, 9, 0}, { 4, 17, 11, 0}, { 3, 15, 13, 1}, { 2, 14, 14, 2}, }}, - {0.55, {{ 7, 18, 7, 0}, { 6, 17, 9, 0}, { 4, 17, 11, 0}, { 3, 15, 13, 1}, { 1, 15, 15, 1}, }}, - {0.56, {{ 7, 18, 7, 0}, { 5, 18, 9, 0}, { 4, 17, 11, 0}, { 2, 17, 13, 0}, { 1, 15, 15, 1}, }}, - {0.57, {{ 7, 18, 7, 0}, { 5, 18, 9, 0}, { 4, 17, 11, 0}, { 2, 17, 13, 0}, { 1, 15, 15, 1}, }}, - {0.58, {{ 7, 18, 7, 0}, { 5, 18, 9, 0}, { 4, 17, 11, 0}, { 2, 17, 13, 0}, { 1, 15, 15, 1}, }}, - {0.59, {{ 7, 18, 7, 0}, { 5, 18, 9, 0}, { 4, 17, 11, 0}, { 2, 17, 13, 0}, { 1, 15, 15, 1}, }}, - {0.60, {{ 7, 18, 8, -1}, { 6, 17, 10, -1}, { 4, 17, 11, 0}, { 2, 17, 13, 0}, { 1, 15, 15, 1}, }}, - {0.61, {{ 7, 18, 8, -1}, { 6, 17, 10, -1}, { 4, 17, 11, 0}, { 2, 17, 13, 0}, { 1, 15, 15, 1}, }}, - {0.62, {{ 7, 18, 8, -1}, { 6, 17, 10, -1}, { 4, 17, 11, 0}, { 2, 17, 13, 0}, { 1, 15, 15, 1}, }}, - {0.63, {{ 7, 18, 8, -1}, { 6, 17, 10, -1}, { 4, 17, 11, 0}, { 2, 17, 13, 0}, { 1, 15, 15, 1}, }}, - {0.64, {{ 7, 18, 8, -1}, { 6, 17, 10, -1}, { 4, 17, 12, -1}, { 2, 17, 13, 0}, { 1, 15, 15, 1}, }}, - {0.65, {{ 7, 18, 8, -1}, { 6, 17, 10, -1}, { 4, 17, 12, -1}, { 2, 17, 13, 0}, { 0, 16, 16, 0}, }}, - {0.66, {{ 7, 18, 8, -1}, { 6, 18, 10, -2}, { 4, 17, 12, -1}, { 2, 17, 13, 0}, { 0, 16, 16, 0}, }}, - {0.67, {{ 7, 20, 7, -2}, { 5, 19, 10, -2}, { 3, 18, 12, -1}, { 2, 17, 13, 0}, { 0, 16, 16, 0}, }}, - {0.68, {{ 7, 20, 7, -2}, { 5, 19, 10, -2}, { 3, 19, 12, -2}, { 1, 18, 14, -1}, { 0, 16, 16, 0}, }}, - {0.69, {{ 7, 20, 7, -2}, { 5, 19, 10, -2}, { 3, 19, 12, -2}, { 1, 18, 14, -1}, { 0, 16, 16, 0}, }}, - {0.70, {{ 7, 20, 7, -2}, { 5, 20, 9, -2}, { 3, 19, 12, -2}, { 1, 18, 14, -1}, { 0, 16, 16, 0}, }}, - {0.71, {{ 7, 20, 7, -2}, { 5, 20, 9, -2}, { 3, 19, 12, -2}, { 1, 18, 14, -1}, { 0, 16, 16, 0}, }}, - {0.72, {{ 7, 20, 7, -2}, { 5, 20, 9, -2}, { 2, 20, 12, -2}, { 0, 19, 15, -2}, {-1, 17, 17, -1}, }}, - {0.73, {{ 7, 20, 7, -2}, { 4, 21, 9, -2}, { 2, 20, 12, -2}, { 0, 19, 15, -2}, {-1, 17, 17, -1}, }}, - {0.74, {{ 6, 22, 6, -2}, { 4, 21, 9, -2}, { 2, 20, 12, -2}, { 0, 19, 15, -2}, {-1, 17, 17, -1}, }}, - {0.75, {{ 6, 22, 6, -2}, { 4, 21, 9, -2}, { 1, 21, 12, -2}, { 0, 19, 15, -2}, {-1, 17, 17, -1}, }}, - {0.76, {{ 6, 22, 6, -2}, { 4, 21, 9, -2}, { 1, 21, 12, -2}, { 0, 19, 15, -2}, {-1, 17, 17, -1}, }}, - {0.77, {{ 6, 22, 6, -2}, { 3, 22, 9, -2}, { 1, 22, 12, -3}, { 0, 19, 15, -2}, {-2, 18, 18, -2}, }}, - {0.78, {{ 6, 21, 6, -1}, { 3, 22, 9, -2}, { 1, 22, 12, -3}, { 0, 19, 15, -2}, {-2, 18, 18, -2}, }}, - {0.79, {{ 5, 23, 5, -1}, { 3, 22, 9, -2}, { 0, 23, 12, -3}, {-1, 21, 15, -3}, {-2, 18, 18, -2}, }}, - {0.80, {{ 5, 23, 5, -1}, { 3, 23, 8, -2}, { 0, 23, 12, -3}, {-1, 21, 15, -3}, {-2, 18, 18, -2}, }}, - {0.81, {{ 5, 23, 5, -1}, { 2, 24, 8, -2}, { 0, 23, 12, -3}, {-1, 21, 15, -3}, {-2, 18, 18, -2}, }}, - {0.82, {{ 5, 23, 5, -1}, { 2, 24, 8, -2}, { 0, 23, 12, -3}, {-1, 21, 15, -3}, {-3, 19, 19, -3}, }}, - {0.83, {{ 5, 23, 5, -1}, { 2, 24, 8, -2}, { 0, 23, 11, -2}, {-2, 22, 15, -3}, {-3, 19, 19, -3}, }}, - {0.84, {{ 4, 25, 4, -1}, { 1, 25, 8, -2}, { 0, 23, 11, -2}, {-2, 22, 15, -3}, {-3, 19, 19, -3}, }}, - {0.85, {{ 4, 25, 4, -1}, { 1, 25, 8, -2}, { 0, 23, 11, -2}, {-2, 22, 15, -3}, {-3, 19, 19, -3}, }}, - {0.86, {{ 4, 24, 4, 0}, { 1, 25, 7, -1}, {-1, 24, 11, -2}, {-2, 22, 15, -3}, {-3, 19, 19, -3}, }}, - {0.87, {{ 4, 24, 4, 0}, { 1, 25, 7, -1}, {-1, 24, 11, -2}, {-2, 22, 15, -3}, {-3, 19, 19, -3}, }}, - {0.88, {{ 3, 26, 3, 0}, { 0, 26, 7, -1}, {-1, 24, 11, -2}, {-3, 23, 15, -3}, {-3, 19, 19, -3}, }}, - {0.89, {{ 3, 26, 3, 0}, { 0, 26, 7, -1}, {-1, 24, 11, -2}, {-3, 23, 15, -3}, {-3, 19, 19, -3}, }}, - {0.90, {{ 3, 26, 3, 0}, { 0, 26, 7, -1}, {-2, 25, 11, -2}, {-3, 23, 15, -3}, {-3, 19, 19, -3}, }}, - {0.91, {{ 3, 26, 3, 0}, { 0, 27, 6, -1}, {-2, 25, 11, -2}, {-3, 23, 15, -3}, {-3, 19, 19, -3}, }}, - {0.92, {{ 2, 28, 2, 0}, { 0, 27, 6, -1}, {-2, 25, 11, -2}, {-3, 23, 15, -3}, {-3, 19, 19, -3}, }}, - {0.93, {{ 2, 28, 2, 0}, { 0, 26, 6, 0}, {-2, 25, 10, -1}, {-3, 23, 15, -3}, {-3, 19, 19, -3}, }}, - {0.94, {{ 2, 28, 2, 0}, { 0, 26, 6, 0}, {-2, 25, 10, -1}, {-3, 23, 15, -3}, {-3, 19, 19, -3}, }}, - {0.95, {{ 1, 30, 1, 0}, {-1, 28, 5, 0}, {-3, 26, 10, -1}, {-3, 23, 14, -2}, {-3, 19, 19, -3}, }}, - {0.96, {{ 1, 30, 1, 0}, {-1, 28, 5, 0}, {-3, 26, 10, -1}, {-3, 23, 14, -2}, {-3, 19, 19, -3}, }}, - {0.97, {{ 1, 30, 1, 0}, {-1, 28, 5, 0}, {-3, 26, 10, -1}, {-3, 23, 14, -2}, {-3, 19, 19, -3}, }}, - {0.98, {{ 1, 30, 1, 0}, {-2, 29, 5, 0}, {-3, 27, 9, -1}, {-3, 23, 14, -2}, {-3, 19, 19, -3}, }}, - {0.99, {{ 0, 32, 0, 0}, {-2, 29, 5, 0}, {-3, 27, 9, -1}, {-4, 24, 14, -2}, {-3, 19, 19, -3}, }}, - {1.00, {{ 0, 32, 0, 0}, {-2, 29, 5, 0}, {-3, 27, 9, -1}, {-4, 24, 14, -2}, {-3, 19, 19, -3}, }} - }; - - double DSR; - - unsigned ArrayElement; - - DSR = (double)(1<<0xc)/val_OV0_P1_H_INC; - if (DSR<.25) DSR=.25; - if (DSR>1) DSR=1; - - ArrayElement = (int)((DSR-0.25) * 100); - besr.four_tap_coeff[0] = (ArrayOfSets[ArrayElement].CoefSet[0][0] & 0xf) | - ((ArrayOfSets[ArrayElement].CoefSet[0][1] & 0x7f)<<8) | - ((ArrayOfSets[ArrayElement].CoefSet[0][2] & 0x7f)<<16) | - ((ArrayOfSets[ArrayElement].CoefSet[0][3] & 0xf)<<24); - besr.four_tap_coeff[1] = (ArrayOfSets[ArrayElement].CoefSet[1][0] & 0xf) | - ((ArrayOfSets[ArrayElement].CoefSet[1][1] & 0x7f)<<8) | - ((ArrayOfSets[ArrayElement].CoefSet[1][2] & 0x7f)<<16) | - ((ArrayOfSets[ArrayElement].CoefSet[1][3] & 0xf)<<24); - besr.four_tap_coeff[2] = (ArrayOfSets[ArrayElement].CoefSet[2][0] & 0xf) | - ((ArrayOfSets[ArrayElement].CoefSet[2][1] & 0x7f)<<8) | - ((ArrayOfSets[ArrayElement].CoefSet[2][2] & 0x7f)<<16) | - ((ArrayOfSets[ArrayElement].CoefSet[2][3] & 0xf)<<24); - besr.four_tap_coeff[3] = (ArrayOfSets[ArrayElement].CoefSet[3][0] & 0xf) | - ((ArrayOfSets[ArrayElement].CoefSet[3][1] & 0x7f)<<8) | - ((ArrayOfSets[ArrayElement].CoefSet[3][2] & 0x7f)<<16) | - ((ArrayOfSets[ArrayElement].CoefSet[3][3] & 0xf)<<24); - besr.four_tap_coeff[4] = (ArrayOfSets[ArrayElement].CoefSet[4][0] & 0xf) | - ((ArrayOfSets[ArrayElement].CoefSet[4][1] & 0x7f)<<8) | - ((ArrayOfSets[ArrayElement].CoefSet[4][2] & 0x7f)<<16) | - ((ArrayOfSets[ArrayElement].CoefSet[4][3] & 0xf)<<24); -/* - For more details, refer to Microsoft's draft of PC99. -*/ -} - -/* The minimal value of horizontal scale ratio when hard coded coefficients - are suitable for the best quality. */ -/* FIXME: Should it be 0.9 for Rage128 ??? */ -static const double MinHScaleHard=0.75; - static int radeon_vid_init_video( vidix_playback_t *config ) { - double V_scale_ratio; - uint32_t i,src_w,src_h,dest_w,dest_h,pitch,left,leftUV,top,h_inc; - uint32_t val_OV0_P1_H_INC=0,val_OV0_P1_H_STEP_BY=0,val_OV0_P23_H_INC=0,val_OV0_P23_H_STEP_BY=0; - uint32_t val_OV0_P1_X_START,val_OV0_P2_X_START; - uint32_t val_OV0_P1_MAX_LN_IN_PER_LN_OUT,val_OV0_P23_MAX_LN_IN_PER_LN_OUT; - uint32_t CRT_V_INC; - uint32_t BytesPerOctWord,LogMemWordsInBytes,MemWordsInBytes,LogTileWidthInMemWords; - uint32_t TileWidthInMemWords,TileWidthInBytes,LogTileHeight,TileHeight; - uint32_t PageSizeInBytes,OV0LB_Rows; - uint32_t SourceWidthInMemWords,SourceUVWidthInMemWords; - uint32_t SourceWidthInPixels,SourceUVWidthInPixels; - uint32_t RightPixel,RightUVPixel,LeftPixel,LeftUVPixel; - int is_400,is_410,is_420,best_pitch,mpitch; - int horz_repl_factor,interlace_factor; - int BytesPerPixel,BytesPerUVPixel,HorzUVSubSample,VertUVSubSample; - int DisallowFourTapVertFiltering,DisallowFourTapUVVertFiltering; - + uint32_t i,tmp,src_w,src_h,dest_w,dest_h,pitch,h_inc,step_by,left,leftUV,top; + int is_400,is_410,is_420,is_rgb32,is_rgb,best_pitch,mpitch; radeon_vid_stop_video(); left = config->src.x << 16; top = config->src.y << 16; src_h = config->src.h; src_w = config->src.w; - is_400 = is_410 = is_420 = 0; + is_400 = is_410 = is_420 = is_rgb32 = is_rgb = 0; if(config->fourcc == IMGFMT_YV12 || config->fourcc == IMGFMT_I420 || config->fourcc == IMGFMT_IYUV) is_420 = 1; if(config->fourcc == IMGFMT_YVU9 || config->fourcc == IMGFMT_IF09) is_410 = 1; - if(config->fourcc == IMGFMT_Y800) is_400 = 1; + if(config->fourcc == IMGFMT_Y800 || + config->fourcc == IMGFMT_Y8) is_400 = 1; + if(config->fourcc == IMGFMT_RGB32 || + config->fourcc == IMGFMT_BGR32) is_rgb32 = 1; + if(config->fourcc == IMGFMT_RGB32 || + config->fourcc == IMGFMT_BGR32 || + config->fourcc == IMGFMT_RGB24 || + config->fourcc == IMGFMT_BGR24 || + config->fourcc == IMGFMT_RGB16 || + config->fourcc == IMGFMT_BGR16 || + config->fourcc == IMGFMT_RGB15 || + config->fourcc == IMGFMT_BGR15) is_rgb = 1; best_pitch = radeon_query_pitch(config->fourcc,&config->src.pitch); mpitch = best_pitch-1; - BytesPerOctWord = 16; - LogMemWordsInBytes = 4; - MemWordsInBytes = 1<fourcc) { - /* 4:0:0*/ + /* 4:0:0 */ case IMGFMT_Y800: - /* 4:1:0*/ + case IMGFMT_Y8: + /* 4:1:0 */ case IMGFMT_YVU9: case IMGFMT_IF09: /* 4:2:0 */ @@ -2677,325 +1586,38 @@ config->dest.pitch.v = best_pitch; break; /* 4:2:2 */ - - default: /* RGB15, RGB16, YVYU, UYVY, YUY2 */ + default: /* RGB15, RGB16, YVYU, UYVY, YUY2 */ pitch = ((src_w*2) + mpitch) & ~mpitch; config->dest.pitch.y = config->dest.pitch.u = config->dest.pitch.v = best_pitch; break; } - besr.load_prg_start=0; - besr.swap_uv=0; - switch(config->fourcc) - { - case IMGFMT_RGB15: - besr.swap_uv=1; - case IMGFMT_BGR15: besr.surf_id = SCALER_SOURCE_15BPP>>8; - besr.load_prg_start = 1; - break; - case IMGFMT_RGB16: - besr.swap_uv=1; - case IMGFMT_BGR16: besr.surf_id = SCALER_SOURCE_16BPP>>8; - besr.load_prg_start = 1; - break; - case IMGFMT_RGB32: - besr.swap_uv=1; - case IMGFMT_BGR32: besr.surf_id = SCALER_SOURCE_32BPP>>8; - besr.load_prg_start = 1; - break; - /* 4:1:0*/ - case IMGFMT_IF09: - case IMGFMT_YVU9: besr.surf_id = SCALER_SOURCE_YUV9>>8; - break; - /* 4:0:0*/ - case IMGFMT_Y800: - /* 4:2:0 */ - case IMGFMT_IYUV: - case IMGFMT_I420: - case IMGFMT_YV12: besr.surf_id = SCALER_SOURCE_YUV12>>8; - break; - /* 4:2:2 */ - case IMGFMT_YVYU: - case IMGFMT_UYVY: besr.surf_id = SCALER_SOURCE_YVYU422>>8; - break; - case IMGFMT_YUY2: - default: besr.surf_id = SCALER_SOURCE_VYUY422>>8; - break; - } - switch (besr.surf_id) - { - case 3: - case 4: - case 11: - case 12: BytesPerPixel = 2; - break; - case 6: BytesPerPixel = 4; - break; - case 9: - case 10: - case 13: - case 14: BytesPerPixel = 1; - break; - default: BytesPerPixel = 0;/*insert a debug statement here. */ - break; - } - switch (besr.surf_id) - { - case 3: - case 4: BytesPerUVPixel = 0; - break;/* In RGB modes, the BytesPerUVPixel is don't care */ - case 11: - case 12: BytesPerUVPixel = 2; - break; - case 6: BytesPerUVPixel = 0; - break; /* In RGB modes, the BytesPerUVPixel is don't care */ - case 9: - case 10: BytesPerUVPixel = 1; - break; - case 13: - case 14: BytesPerUVPixel = 2; - break; - default: BytesPerUVPixel = 0;/* insert a debug statement here. */ - break; - - } - switch (besr.surf_id) - { - case 3: - case 4: - case 6: HorzUVSubSample = 1; - break; - case 9: HorzUVSubSample = 4; - break; - case 10: - case 11: - case 12: - case 13: - case 14: HorzUVSubSample = 2; - break; - default: HorzUVSubSample = 0;/* insert debug statement here. */ - break; - } - switch (besr.surf_id) - { - case 3: - case 4: - case 6: - case 11: - case 12: VertUVSubSample = 1; - break; - case 9: VertUVSubSample = 4; - break; - case 10: - case 13: - case 14: VertUVSubSample = 2; - break; - default: VertUVSubSample = 0;/* insert debug statment here. */ - break; - } - DisallowFourTapVertFiltering = 0; /* Allow it by default */ - DisallowFourTapUVVertFiltering = 0; /* Allow it by default */ - LeftPixel = config->src.x; - RightPixel = config->src.w-1; - if(floor(config->src.x/HorzUVSubSample)<0) LeftUVPixel = 0; - else LeftUVPixel = (int)floor(config->src.x/HorzUVSubSample); - if(ceil((config->src.x+config->src.w)/HorzUVSubSample) > config->src.w/HorzUVSubSample) - RightUVPixel = config->src.w/HorzUVSubSample - 1; - else RightUVPixel = (int)ceil((config->src.x+config->src.w)/HorzUVSubSample) - 1; - /* Top, Bottom and Right Crops can be out of range. The driver will program the hardware - // to create a black border at the top and bottom. This is useful for DVD letterboxing. */ - SourceWidthInPixels = (int)(config->src.w + 1); - SourceUVWidthInPixels = (int)(RightUVPixel - LeftUVPixel + 1); - - SourceWidthInMemWords = (int)(ceil(RightPixel*BytesPerPixel / MemWordsInBytes) - - floor(LeftPixel*BytesPerPixel / MemWordsInBytes) + 1); - /* SourceUVWidthInMemWords means Source_U_or_V_or_UV_WidthInMemWords depending on whether the UV is packed together of not. */ - SourceUVWidthInMemWords = (int)(ceil(RightUVPixel*BytesPerUVPixel / - MemWordsInBytes) - floor(LeftUVPixel*BytesPerUVPixel / - MemWordsInBytes) + 1); - - switch (besr.surf_id) - { - case 9: - case 10: if ((ceil(SourceWidthInMemWords/2)-1) * 2 > OV0LB_Rows-1) - { - RADEON_ASSERT("ceil(SourceWidthInMemWords/2)-1) * 2 > OV0LB_Rows-1\n"); - } - else if ((SourceWidthInMemWords-1) * 2 > OV0LB_Rows-1) - { - DisallowFourTapVertFiltering = 1; - } - - if ((ceil(SourceUVWidthInMemWords/2)-1) * 4 + 1 > OV0LB_Rows-1) - { - /*CYCACC_ASSERT(0, "Image U plane width spans more octwords than supported by hardware.") */ - } - else if ((SourceUVWidthInMemWords-1) * 4 + 1 > OV0LB_Rows-1) - { - DisallowFourTapUVVertFiltering = 1; - } - - if ((ceil(SourceUVWidthInMemWords/2)-1) * 4 + 3 > OV0LB_Rows-1) - { - /*CYCACC_ASSERT(0, "Image V plane width spans more octwords than supported by hardware.") */ - } - else if ((SourceUVWidthInMemWords-1) * 4 + 3 > OV0LB_Rows-1) - { - DisallowFourTapUVVertFiltering = 1; - } - break; - case 13: - case 14: if ((ceil(SourceWidthInMemWords/2)-1) * 2 > OV0LB_Rows-1) - { - RADEON_ASSERT("ceil(SourceWidthInMemWords/2)-1) * 2 > OV0LB_Rows-1\n"); - } - else if ((SourceWidthInMemWords-1) * 2 > OV0LB_Rows-1) - { - DisallowFourTapVertFiltering = 1; - } - - if ((ceil(SourceUVWidthInMemWords/2)-1) * 2 + 1 > OV0LB_Rows-1) - { - /*CYCACC_ASSERT(0, "Image UV plane width spans more octwords than supported by hardware.") */ - } - else if ((SourceUVWidthInMemWords-1) * 2 + 1 > OV0LB_Rows-1) - { - DisallowFourTapUVVertFiltering = 1; - } - break; - case 3: - case 4: - case 6: - case 11: - case 12: if ((ceil(SourceWidthInMemWords/2)-1) > OV0LB_Rows-1) - { - RADEON_ASSERT("(ceil(SourceWidthInMemWords/2)-1) > OV0LB_Rows-1\n") - } - else if ((SourceWidthInMemWords-1) > OV0LB_Rows-1) - { - DisallowFourTapVertFiltering = 1; - } - break; - default: /* insert debug statement here. */ - break; - } dest_w = config->dest.w; dest_h = config->dest.h; if(radeon_is_dbl_scan()) dest_h *= 2; besr.dest_bpp = radeon_vid_get_dbpp(); besr.fourcc = config->fourcc; - if(radeon_is_interlace()) interlace_factor = 2; - else interlace_factor = 1; - /* TODO: must be checked in doublescan mode!!! */ - if((besr.chip_flags&R_INTEGRATED)==R_INTEGRATED) - { - /* Force the overlay clock on for integrated chips */ - OUTPLL(VCLK_ECP_CNTL, (INPLL(VCLK_ECP_CNTL) | (1<<18))); - } - horz_repl_factor = 1 << (uint32_t)((INPLL(VCLK_ECP_CNTL) & 0x300) >> 8); - H_scale_ratio = (double)ceil(((double)dest_w+1)/horz_repl_factor)/src_w; - V_scale_ratio = (double)(dest_h+1)/src_h; - if(H_scale_ratio < 0.5 && V_scale_ratio < 0.5) - { - val_OV0_P1_MAX_LN_IN_PER_LN_OUT = 3; - val_OV0_P23_MAX_LN_IN_PER_LN_OUT = 2; - } - else - if(H_scale_ratio < 1 && V_scale_ratio < 1) - { - val_OV0_P1_MAX_LN_IN_PER_LN_OUT = 2; - val_OV0_P23_MAX_LN_IN_PER_LN_OUT = 1; + + /* flat panel */ + if(INREG(FP_VERT_STRETCH)&VERT_STRETCH_ENABLE){ + besr.v_inc = (src_h * radeon_get_yres() / radeon_get_fp_yres() << 20) / dest_h; } - else + else besr.v_inc = (src_h << 20) / dest_h; + if(radeon_is_interlace()) besr.v_inc *= 2; + h_inc = (src_w << 12) / dest_w; + { - val_OV0_P1_MAX_LN_IN_PER_LN_OUT = 1; - val_OV0_P23_MAX_LN_IN_PER_LN_OUT = 1; + unsigned int ecp_div; + ecp_div = (INPLL(VCLK_ECP_CNTL) >> 8) & 3; + h_inc <<= ecp_div; } - /* N.B.: Indeed it has 6.12 format but shifted on 8 to the left!!! */ - besr.v_inc = (uint16_t)((1./V_scale_ratio)*(1<<12)*interlace_factor+0.5); - CRT_V_INC = besr.v_inc/interlace_factor; - besr.v_inc <<= 8; - { - int ThereIsTwoTapVerticalFiltering,DoNotUseMostRecentlyFetchedLine; - int P1GroupSize = 0; - int P23GroupSize; - int P1StepSize = 0; - int P23StepSize = 0; - - Calc_H_INC_STEP_BY( - besr.surf_id, - H_scale_ratio, - DisallowFourTapVertFiltering, - DisallowFourTapUVVertFiltering, - &val_OV0_P1_H_INC, - &val_OV0_P1_H_STEP_BY, - &val_OV0_P23_H_INC, - &val_OV0_P23_H_STEP_BY, - &P1GroupSize, - &P1StepSize, - &P23StepSize); - if(H_scale_ratio > MinHScaleHard) - { - h_inc = (src_w << 12) / dest_w; - besr.step_by = 0x0101; - switch (besr.surf_id) - { - case 3: - case 4: - case 6: - besr.h_inc = (h_inc)|(h_inc<<16); - break; - case 9: - besr.h_inc = h_inc | ((h_inc >> 2) << 16); - break; - default: - besr.h_inc = h_inc | ((h_inc >> 1) << 16); - break; - } - } - - P23GroupSize = 2; /* Current vaue for all modes */ - - besr.horz_pick_nearest=0; - DoNotUseMostRecentlyFetchedLine=0; - ThereIsTwoTapVerticalFiltering = (val_OV0_P1_H_STEP_BY!=0) || (val_OV0_P23_H_STEP_BY!=0); - if (ThereIsTwoTapVerticalFiltering && DoNotUseMostRecentlyFetchedLine) - besr.vert_pick_nearest = 1; - else - besr.vert_pick_nearest = 0; - ComputeXStartEnd(is_400,LeftPixel,LeftUVPixel,MemWordsInBytes,BytesPerPixel, - SourceWidthInPixels,P1StepSize,BytesPerUVPixel, - SourceUVWidthInPixels,P23StepSize,&val_OV0_P1_X_START,&val_OV0_P2_X_START); - - if(H_scale_ratio > MinHScaleHard) - { - unsigned tmp; - tmp = (left & 0x0003ffff) + 0x00028000 + (h_inc << 3); - besr.p1_h_accum_init = ((tmp << 4) & 0x000f8000) | - ((tmp << 12) & 0xf0000000); - - tmp = (top & 0x0000ffff) + 0x00018000; - besr.p1_v_accum_init = ((tmp << 4) & OV0_P1_V_ACCUM_INIT_MASK) - |(OV0_P1_MAX_LN_IN_PER_LN_OUT & 1); - tmp = ((left >> 1) & 0x0001ffff) + 0x00028000 + (h_inc << 2); - besr.p23_h_accum_init = ((tmp << 4) & 0x000f8000) | - ((tmp << 12) & 0x70000000); - - tmp = ((top >> 1) & 0x0000ffff) + 0x00018000; - besr.p23_v_accum_init = (is_420||is_410) ? - ((tmp << 4) & OV0_P23_V_ACCUM_INIT_MASK) - |(OV0_P23_MAX_LN_IN_PER_LN_OUT & 1) : 0; - } - else - ComputeAccumInit( val_OV0_P1_X_START,val_OV0_P2_X_START, - val_OV0_P1_H_INC,val_OV0_P23_H_INC, - val_OV0_P1_H_STEP_BY,val_OV0_P23_H_STEP_BY, - CRT_V_INC,P1GroupSize,P23GroupSize, - val_OV0_P1_MAX_LN_IN_PER_LN_OUT, - val_OV0_P23_MAX_LN_IN_PER_LN_OUT); + step_by = 1; + while(h_inc >= (2 << 12)) { + step_by++; + h_inc >>= 1; } /* keep everything in 16.16 */ @@ -3005,7 +1627,7 @@ config->offsets[i] = config->offsets[i-1]+config->frame_size; if(is_420 || is_410 || is_400) { - uint32_t d1line,d2line,d3line; + uint32_t d1line,d2line,d3line; d1line = top*pitch; if(is_420) { @@ -3029,7 +1651,8 @@ d2line += (left >> 17) & ~15; d3line += (left >> 17) & ~15; } - else /* is_410 */ + else + if(is_410) { d2line += (left >> 18) & ~15; d3line += (left >> 18) & ~15; @@ -3055,7 +1678,7 @@ } else { - if (besr.fourcc == IMGFMT_I420 || besr.fourcc == IMGFMT_IYUV) + if (besr.fourcc == IMGFMT_I420 || besr.fourcc == IMGFMT_IYUV) { besr.vid_buf_base_adrs_u[i]=((radeon_overlay_off+config->offsets[i]+config->offset.v)&VIF_BUF1_BASE_ADRS_MASK)|VIF_BUF1_PITCH_SEL; besr.vid_buf_base_adrs_v[i]=((radeon_overlay_off+config->offsets[i]+config->offset.u)&VIF_BUF2_BASE_ADRS_MASK)|VIF_BUF2_PITCH_SEL; @@ -3089,31 +1712,58 @@ besr.vid_buf_base_adrs_v[i] = radeon_overlay_off + config->offsets[i] + config->offset.y; } } + + tmp = (left & 0x0003ffff) + 0x00028000 + (h_inc << 3); + besr.p1_h_accum_init = ((tmp << 4) & 0x000f8000) | + ((tmp << 12) & 0xf0000000); + + tmp = ((left >> 1) & 0x0001ffff) + 0x00028000 + (h_inc << 2); + besr.p23_h_accum_init = ((tmp << 4) & 0x000f8000) | + ((tmp << 12) & 0x70000000); + tmp = (top & 0x0000ffff) + 0x00018000; + besr.p1_v_accum_init = ((tmp << 4) & OV0_P1_V_ACCUM_INIT_MASK) + |(OV0_P1_MAX_LN_IN_PER_LN_OUT & 1); + + tmp = ((top >> 1) & 0x0000ffff) + 0x00018000; + besr.p23_v_accum_init = (is_420||is_410) ? + ((tmp << 4) & OV0_P23_V_ACCUM_INIT_MASK) + |(OV0_P23_MAX_LN_IN_PER_LN_OUT & 1) : 0; + leftUV = (left >> (is_410?18:17)) & 15; left = (left >> 16) & 15; + if(is_rgb && !is_rgb32) h_inc<<=1; + if(is_rgb32) + besr.h_inc = (h_inc >> 1) | ((h_inc >> 1) << 16); + else + if(is_410) + besr.h_inc = h_inc | ((h_inc >> 2) << 16); + else + besr.h_inc = h_inc | ((h_inc >> 1) << 16); + besr.step_by = step_by | (step_by << 8); besr.y_x_start = (config->dest.x+X_ADJUST) | (config->dest.y << 16); besr.y_x_end = (config->dest.x + dest_w+X_ADJUST) | ((config->dest.y + dest_h) << 16); - ComputeBorders(config,VertUVSubSample); + besr.p1_blank_lines_at_top = P1_BLNK_LN_AT_TOP_M1_MASK|((src_h-1)<<16); + if(is_420 || is_410) + { + src_h = (src_h + 1) >> (is_410?2:1); + besr.p23_blank_lines_at_top = P23_BLNK_LN_AT_TOP_M1_MASK|((src_h-1)<<16); + } + else besr.p23_blank_lines_at_top = 0; besr.vid_buf_pitch0_value = pitch; besr.vid_buf_pitch1_value = is_410 ? pitch>>2 : is_420 ? pitch>>1 : pitch; - /* ********************************************************* */ - /* ** Calculate programmable coefficients as needed */ - /* ********************************************************* */ - - /* ToDo_Active: When in pick nearest mode, we need to program the filter tap zero */ - /* coefficients to 0, 32, 0, 0. Or use hard coded coefficients. */ - if(H_scale_ratio > MinHScaleHard) besr.filter_cntl |= FILTER_HARDCODED_COEF; + besr.p1_x_start_end = (src_w+left-1)|(left<<16); + if (is_410||is_420) src_w>>=is_410?2:1; + if(is_400) + { + besr.p2_x_start_end = 0; + besr.p3_x_start_end = 0; + } else { - FilterSetup (val_OV0_P1_H_INC); - /* ToDo_Active: Must add the smarts into the driver to decide what type of filtering it */ - /* would like to do. For now, we let the test application decide. */ - besr.filter_cntl = FILTER_PROGRAMMABLE_COEF; - if(DisallowFourTapVertFiltering) - besr.filter_cntl |= FILTER_HARD_SCALE_VERT_Y; - if(DisallowFourTapUVVertFiltering) - besr.filter_cntl |= FILTER_HARD_SCALE_VERT_UV; + besr.p2_x_start_end = (src_w+left-1)|(leftUV<<16); + besr.p3_x_start_end = besr.p2_x_start_end; } + return 0; } @@ -3124,21 +1774,22 @@ dbpp = radeon_vid_get_dbpp(); switch(info->fourcc) { + case IMGFMT_I420: + case IMGFMT_YV12: + case IMGFMT_IYUV: + awidth = (info->src.w + (pitch-1)) & ~(pitch-1); + info->frame_size = awidth*(info->src.h+info->src.h/2); + break; case IMGFMT_Y800: + case IMGFMT_Y8: awidth = (info->src.w + (pitch-1)) & ~(pitch-1); info->frame_size = awidth*info->src.h; break; - case IMGFMT_YVU9: case IMGFMT_IF09: + case IMGFMT_YVU9: awidth = (info->src.w + (pitch-1)) & ~(pitch-1); info->frame_size = awidth*(info->src.h+info->src.h/8); break; - case IMGFMT_I420: - case IMGFMT_YV12: - case IMGFMT_IYUV: - awidth = (info->src.w + (pitch-1)) & ~(pitch-1); - info->frame_size = awidth*(info->src.h+info->src.h/2); - break; case IMGFMT_RGB32: case IMGFMT_BGR32: awidth = (info->src.w*4 + (pitch-1)) & ~(pitch-1); @@ -3150,26 +1801,23 @@ info->frame_size = awidth*info->src.h; break; } - info->frame_size = (info->frame_size+4095)&~4095; } static int radeon_config_playback(vidix_playback_t *info) { unsigned rgb_size,nfr; - uint32_t radeon_video_size; if(!is_supported_fourcc(info->fourcc)) return ENOSYS; if(info->num_frames>VID_PLAY_MAXFRAMES) info->num_frames=VID_PLAY_MAXFRAMES; if(info->num_frames==1) besr.double_buff=0; - else besr.double_buff=1; + else besr.double_buff=1; radeon_compute_framesize(info); rgb_size = radeon_get_xres()*radeon_get_yres()*((radeon_vid_get_dbpp()+7)/8); nfr = info->num_frames; - radeon_video_size = radeon_ram_size; for(;nfr>0; nfr--) { - radeon_overlay_off = radeon_video_size - info->frame_size*nfr; -#if !defined (RAGE128) && defined(HAVE_X11) + radeon_overlay_off = radeon_ram_size - info->frame_size*nfr; +#ifdef HAVE_X11 radeon_overlay_off -= firegl_shift; #endif radeon_overlay_off &= 0xffff0000; @@ -3180,8 +1828,8 @@ nfr = info->num_frames; for(;nfr>0; nfr--) { - radeon_overlay_off = radeon_video_size - info->frame_size*nfr; -#if !defined (RAGE128) && defined(HAVE_X11) + radeon_overlay_off = radeon_ram_size - info->frame_size*nfr; +#ifdef HAVE_X11 radeon_overlay_off -= firegl_shift; #endif radeon_overlay_off &= 0xffff0000; @@ -3196,22 +1844,13 @@ return 0; } -static int radeon_playback_on(void) +static int radeon_playback_on( void ) { -#ifdef RAGE128 - unsigned dw,dh; -#endif radeon_vid_display_video(); -#ifdef RAGE128 - dh = (besr.y_x_end >> 16) - (besr.y_x_start >> 16); - dw = (besr.y_x_end & 0xFFFF) - (besr.y_x_start & 0xFFFF); - if(dw == radeon_get_xres() || dh == radeon_get_yres()) radeon_vid_exclusive(); - else radeon_vid_non_exclusive(); -#endif return 0; } -static int radeon_playback_off(void) +static int radeon_playback_off( void ) { radeon_vid_stop_video(); return 0; @@ -3246,7 +1885,7 @@ OUTREG(OV0_VID_BUF5_BASE_ADRS, off[5]); OUTREG(OV0_REG_LOAD_CNTL, 0); if(besr.vid_nbufs == 2) radeon_wait_vsync(); - if(__verbose > VERBOSE_LEVEL) radeon_vid_dump_regs(); + if(__verbose > 1) radeon_vid_dump_regs(); return 0; } @@ -3259,7 +1898,7 @@ , 0, 0, 0, 0, 0, 0, 0, 0 }; -static int radeon_get_eq(vidix_video_eq_t * eq) +static int radeon_get_eq( vidix_video_eq_t * eq) { memcpy(eq,&equal,sizeof(vidix_video_eq_t)); return 0; @@ -3268,13 +1907,13 @@ #ifndef RAGE128 #define RTFSaturation(a) (1.0 + ((a)*1.0)/1000.0) #define RTFBrightness(a) (((a)*1.0)/2000.0) -#define RTFIntensity(a) (((a)*1.0)/2000.0) -#define RTFContrast(a) (1.0 + ((a)*1.0)/1000.0) +#define RTFIntensity(a) (((a)*1.0)/2000.0) +#define RTFContrast(a) (1.0 + ((a)*1.0)/1000.0) #define RTFHue(a) (((a)*3.1416)/1000.0) #define RTFCheckParam(a) {if((a)<-1000) (a)=-1000; if((a)>1000) (a)=1000;} #endif -static int radeon_set_eq(const vidix_video_eq_t * eq) +static int radeon_set_eq( const vidix_video_eq_t * eq) { #ifdef RAGE128 int br,sat; @@ -3284,7 +1923,7 @@ if(eq->cap & VEQ_CAP_BRIGHTNESS) equal.brightness = eq->brightness; if(eq->cap & VEQ_CAP_CONTRAST) equal.contrast = eq->contrast; if(eq->cap & VEQ_CAP_SATURATION) equal.saturation = eq->saturation; - if(eq->cap & VEQ_CAP_HUE) equal.hue = eq->hue; + if(eq->cap & VEQ_CAP_HUE) equal.hue = eq->hue; if(eq->cap & VEQ_CAP_RGB_INTENSITY) { equal.red_intensity = eq->red_intensity; @@ -3295,7 +1934,7 @@ #ifdef RAGE128 br = equal.brightness * 64 / 1000; if(br < -64) br = -64; if(br > 63) br = 63; - sat = (equal.saturation*31 + 31000) / 2000; + sat = (equal.saturation + 1000) * 16 / 1000; if(sat < 0) sat = 0; if(sat > 31) sat = 31; OUTREG(OV0_COLOUR_CNTL, (br & 0x7f) | (sat << 8) | (sat << 16)); #else @@ -3319,7 +1958,7 @@ return 0; } -static int radeon_playback_set_deint(const vidix_deinterlace_t * info) +static int radeon_playback_set_deint (const vidix_deinterlace_t * info) { unsigned sflg; switch(info->flags) @@ -3357,7 +1996,7 @@ return 0; } -static int radeon_playback_get_deint(vidix_deinterlace_t * info) +static int radeon_playback_get_deint (vidix_deinterlace_t * info) { if(!besr.deinterlace_on) info->flags = CFG_NON_INTERLACED; else @@ -3372,12 +2011,8 @@ /* Graphic keys */ static vidix_grkey_t radeon_grkey; -static int set_gr_key( void ) +static void set_gr_key( void ) { - int result = 0; - - besr.merge_cntl = 0xff000000 | /* overlay alpha */ - 0x00ff0000; /* graphic alpha */ if(radeon_grkey.ckey.op == CKEY_TRUE) { int dbpp=radeon_vid_get_dbpp(); @@ -3386,8 +2021,8 @@ switch(dbpp) { case 15: -#ifndef RAGE128 - if((besr.chip_flags&R_100)!=R_100) +#ifdef RADEON + if(RadeonFamily > 100) besr.graphics_key_clr= ((radeon_grkey.ckey.blue &0xF8)) | ((radeon_grkey.ckey.green&0xF8)<<8) @@ -3400,9 +2035,9 @@ | ((radeon_grkey.ckey.red &0xF8)<<7); break; case 16: -#ifndef RAGE128 +#ifdef RADEON /* This test may be too general/specific */ - if((besr.chip_flags&R_100)!=R_100) + if(RadeonFamily > 100) besr.graphics_key_clr= ((radeon_grkey.ckey.blue &0xF8)) | ((radeon_grkey.ckey.green&0xFC)<<8) @@ -3415,6 +2050,11 @@ | ((radeon_grkey.ckey.red &0xF8)<<8); break; case 24: + besr.graphics_key_clr= + ((radeon_grkey.ckey.blue &0xFF)) + | ((radeon_grkey.ckey.green&0xFF)<<8) + | ((radeon_grkey.ckey.red &0xFF)<<16); + break; case 32: besr.graphics_key_clr= ((radeon_grkey.ckey.blue &0xFF)) @@ -3434,30 +2074,6 @@ besr.ckey_cntl = VIDEO_KEY_FN_TRUE|CMP_MIX_AND|GRAPHIC_KEY_FN_EQ; #endif } - else if(radeon_grkey.ckey.op == CKEY_ALPHA) - { - int dbpp=radeon_vid_get_dbpp(); - besr.ckey_on=1; - - switch(dbpp) - { - case 32: - besr.ckey_on=1; - besr.graphics_key_msk=0; - besr.graphics_key_clr=0; - besr.ckey_cntl = VIDEO_KEY_FN_TRUE|GRAPHIC_KEY_FN_TRUE|CMP_MIX_AND; - besr.merge_cntl = 0xff000000 | /* overlay alpha */ - 0x00ff0000 | /* graphic alpha */ - 0x00000001; /* DISP_ALPHA_MODE_PER_PIXEL */ - break; - default: - besr.ckey_on=0; - besr.graphics_key_msk=0; - besr.graphics_key_clr=0; - besr.ckey_cntl = VIDEO_KEY_FN_TRUE|GRAPHIC_KEY_FN_TRUE|CMP_MIX_AND; - result = 1; - } - } else { besr.ckey_on=0; @@ -3469,8 +2085,6 @@ OUTREG(OV0_GRAPHICS_KEY_MSK, besr.graphics_key_msk); OUTREG(OV0_GRAPHICS_KEY_CLR, besr.graphics_key_clr); OUTREG(OV0_KEY_CNTL,besr.ckey_cntl); - OUTREG(DISP_MERGE_CNTL, besr.merge_cntl); - return result; } static int radeon_get_gkey(vidix_grkey_t *grkey) @@ -3482,7 +2096,8 @@ static int radeon_set_gkey(const vidix_grkey_t *grkey) { memcpy(&radeon_grkey, grkey, sizeof(vidix_grkey_t)); - return (set_gr_key()); + set_gr_key(); + return(0); } #ifdef RAGE128 geexbox-1.1/packages/MPlayer/patches/840_vidix-ati-radeon9200.diff0000644000175000017500000000073510641745504022603 0ustar benbendiff -Naur MPlayer-r23418.orig/vidix/radeon_vid.c MPlayer-r23418/vidix/radeon_vid.c --- MPlayer-r23418.orig/vidix/radeon_vid.c 2007-06-30 17:13:15.000000000 +0200 +++ MPlayer-r23418/vidix/radeon_vid.c 2007-06-30 17:13:32.000000000 +0200 @@ -896,6 +896,7 @@ DEVICE_ATI_RV280_RADEON_92004, DEVICE_ATI_RV280_RADEON_92005, DEVICE_ATI_RV280_RADEON_92006, + DEVICE_ATI_RV280_RADEON_92007, DEVICE_ATI_RADEON_R300_ND, DEVICE_ATI_RADEON_R300_NE, DEVICE_ATI_RV350_NF_RADEON, geexbox-1.1/packages/MPlayer/patches/900_bad_memmove.diff0000644000175000017500000000142410641745504021370 0ustar benbenStops a memmove() of a negative amount of memory. It sometimes occurs that sh_audio->a_out_buffer_len=0, or at least less than playsize, after a seek has been performed. Not a clean solution, but temporarily stops a segfault in the code. Causes momentary audible static noise when problem occurs. --- a/mplayer.c 2007-06-22 20:49:08.000000000 +0800 +++ b/mplayer.c 2007-06-22 20:50:42.000000000 +0800 @@ -2252,6 +2252,8 @@ playsize = mpctx->audio_out->play(sh_audio->a_out_buffer, playsize, playflags); if (playsize > 0) { + if (sh_audio->a_out_buffer_len < playsize) + playsize = sh_audio->a_out_buffer_len; sh_audio->a_out_buffer_len -= playsize; memmove(sh_audio->a_out_buffer, &sh_audio->a_out_buffer[playsize], sh_audio->a_out_buffer_len); geexbox-1.1/packages/MPlayer/patches/850_vidix-ati-radeon-misdetection.diff0000644000175000017500000000133510641756666024766 0ustar benbendiff -Naur MPlayer-r23418.orig/vidix/drivers.c MPlayer-r23418/vidix/drivers.c --- MPlayer-r23418.orig/vidix/drivers.c 2007-07-01 18:59:30.000000000 +0200 +++ MPlayer-r23418/vidix/drivers.c 2007-07-01 19:00:24.000000000 +0200 @@ -65,9 +65,6 @@ #ifdef CONFIG_VIDIX_DRV_IVTV vidix_register_driver (&ivtv_drv); #endif -#ifdef CONFIG_VIDIX_DRV_MACH64 - vidix_register_driver (&mach64_drv); -#endif #ifdef CONFIG_VIDIX_DRV_MGA vidix_register_driver (&mga_drv); #endif @@ -89,6 +86,9 @@ #ifdef CONFIG_VIDIX_DRV_RAGE128 vidix_register_driver (&rage128_drv); #endif +#ifdef CONFIG_VIDIX_DRV_MACH64 + vidix_register_driver (&mach64_drv); +#endif #ifdef CONFIG_VIDIX_DRV_SAVAGE vidix_register_driver (&savage_drv); #endif geexbox-1.1/packages/MPlayer/scripts/0000755000175000017500000000000010641745504015732 5ustar benbengeexbox-1.1/packages/MPlayer/scripts/cpd0000755000175000017500000000154310641745504016431 0ustar benben#!/bin/sh FIFO=/var/cp_fifo MPFIFO=/var/mp_control DIR= RM= mkfifo $FIFO 2>/dev/null while true; do read CMD FILE < $FIFO case "$CMD" in cd) DIR=$FILE [ -d "$DIR" ] || DIR=${DIR%/[^/]*} echo "osd_show_text \"*d*\"" > $MPFIFO ;; cp) [ -z "$DIR" ] && echo "osd_show_text \"*!*\" 1500" > $MPFIFO && continue rw "$DIR" && echo "osd_show_text \"*c* wait...\"" > $MPFIFO cp -R "$FILE" "$DIR" && echo "osd_show_text \"OK\"" > $MPFIFO || echo "osd_show_text \"*!!!!*\" 2000" > $MPFIFO ro "$DIR" ;; rm) RM=$FILE && echo "osd_show_text \"*r*\"" > $MPFIFO ;; rmok) if [ "$FILE" = "$RM" ]; then rw "$FILE" rm -r "$FILE" && echo "osd_show_text \"*o*\"" > $MPFIFO ro "$FILE" fi RM= ;; exit) break; ;; esac done rm $FIFO geexbox-1.1/packages/MPlayer/scripts/mp_loader0000755000175000017500000000366610641745504017635 0ustar benben#!/bin/sh # MPlayer file loader : determines what to do with the chosen file # usage: mp_loader file_location key_binding cp_fifo=/var/cp_fifo mp_fifo=/var/mp_control filter_file=/etc/file_ext filter_playlist=/etc/list_ext filter_image=/etc/img_ext file=$1 key=$2 if [ "$key" = "u" ]; then append=1; else append=0; fi if test -e "$file"; then ext=`echo "$file" | sed 's/.*\.\([^\.]*\)/\1/'` escfile=`echo "$file" | sed 's%\(\\\\\)%\1\1%g' | sed 's%"%\\\\"%g'` # File Operations if [ "$key" = "d" ]; then echo "cd $file" > $cp_fifo elif [ "$key" = "c" ]; then echo "cp $file" > $cp_fifo elif [ "$key" = "r" ]; then echo "rm $file" > $cp_fifo elif [ "$key" = "o" ]; then echo "rmok $file" > $cp_fifo elif [ -d "$file" ]; then if [ "$key" = "p" ]; then playdir "$file" || view_img -a "$file" elif [ "$key" = "l" ]; then playdir "$file" || view_img -r "$file" elif [ "$key" = "u" ]; then playdir "$file" $append fi elif [ -n "$ext" ]; then # File Playback if `grep -iq "^$ext\$" $filter_file`; then if [ "$key" = "p" ]; then playdir "$file" elif [ "$key" = "l" ]; then playdir "$file" else echo -e "menu hide\nloadfile \"$escfile\" $append" > $mp_fifo fi elif `grep -iq "^$ext\$" $filter_playlist`; then echo -e "menu hide\nloadlist \"$escfile\" $append" > $mp_fifo elif `grep -iq "^$ext\$" $filter_image`; then if [ "$key" = "p" ]; then view_img -a "$file" elif [ "$key" = "l" ]; then view_img -r "$file" else view_img "$file" fi else # Extension isn't supported in our extension file but might be # playable as well, let's MPlayer figure it out ... echo -e "menu hide\nloadfile \"$escfile\" $append" > $mp_fifo fi else # File do not have extension, try to play it aswell ... echo -e "menu hide\nloadfile \"$escfile\" $append" > $mp_fifo fi fi geexbox-1.1/packages/MPlayer/scripts/mp_set_option0000755000175000017500000000047510641745504020545 0ustar benben#!/bin/sh file=/etc/mplayer/mplayer.conf option=$1 value=$2 if grep -q "^$option=" $file; then if [ "$3" = "concat" ] && ! grep -q "^$option=\$" $file; then sed -i "s|^\($option=.*[^,]\).*|\1,$value|" $file else sed -i "s|^$option=.*|$option=$value|" $file fi else echo "$option=$value" >> $file fi geexbox-1.1/packages/MPlayer/scripts/mp_wrapper0000755000175000017500000000014610641745504020035 0ustar benben#!/bin/sh mplayer /usr/share/mplayer/background.avi -loop 0 >/dev/null 2>&1 echo $? > /tmp/mp_result geexbox-1.1/packages/MPlayer/scripts/playdir0000755000175000017500000000075510641745504017333 0ustar benben#!/bin/sh # Remove stale playlist files [ -f /tmp/*.pls ] && rm /tmp/*.pls DIR="$1" APPEND=${2:-0} [ -d "$DIR" ] && DIR=${DIR%\/} || DIR=${DIR%/[^/]*} NAME=${DIR##*/} for i in `cat /etc/file_ext`; do if [ -z "$EXTS" ]; then EXTS="$i" else EXTS="$EXTS\|$i" fi done find "$DIR" | grep -v /GEEXBOX/ | grep -i "\.\($EXTS\)\$" | sort > /tmp/"$NAME".pls if [ -s /tmp/"$NAME".pls ]; then echo -e "menu hide\nloadlist \"/tmp/$NAME.pls\" $APPEND" > /var/mp_control else exit 1 fi geexbox-1.1/packages/MPlayer/unpack0000755000175000017500000000017310641745504015453 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain sed -i 's/\(cc_check -lpthread\) && $TMPO/\1/' $BUILD/$1*/configure geexbox-1.1/packages/MPlayer/url0000644000175000017500000000004410641745504014766 0ustar benbenGEEXBOX_SRCS/MPlayer-r23418.tar.bz2 geexbox-1.1/packages/PyXML/0000755000175000017500000000000010641745504013643 5ustar benbengeexbox-1.1/packages/PyXML/build0000755000175000017500000000035410641745504014672 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain HOST_PYTHON="`ls -d $ROOT/$BUILD/Python*/objdir/buildpython`/python" PYTHON_DIR=`ls -d $ROOT/$BUILD/Python*` $HOST_PYTHON -Wi -t $PYTHON_DIR/Lib/compileall.py $BUILD/$1*/xml/utils geexbox-1.1/packages/PyXML/install0000755000175000017500000000025510641745504015241 0ustar benben#!/bin/sh . config/options PYTHON_LIB_DIR=`ls -d $INSTALL/usr/lib/python*` mkdir -p $PYTHON_LIB_DIR/xml/utils cp -rf $BUILD/$1*/xml/utils/*.pyc $PYTHON_LIB_DIR/xml/utils geexbox-1.1/packages/PyXML/url0000644000175000017500000000007410641745504014371 0ustar benbenhttp://prdownloads.sourceforge.net/pyxml/PyXML-0.8.4.tar.gz geexbox-1.1/packages/Python/0000755000175000017500000000000010641745504014153 5ustar benbengeexbox-1.1/packages/Python/build0000755000175000017500000000152610641745504015204 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain $SCRIPTS/build readline $SCRIPTS/build termcap export OPT="$CFLAGS" export HOST_CC HOST_CXX HOST_RANLIB HOST_AR HOST_CFLAGS HOST_CXXFLAGS export SYSROOT_PREFIX cd $BUILD/$1* mkdir -p objdir cd objdir ../configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=/usr \ --enable-static \ --disable-shared \ --with-threads \ --disable-ipv6 \ --disable-profiling \ --without-pydebug \ --without-doc-strings \ --without-tsc \ --without-pymalloc \ --without-fpectl \ --without-wctype-functions \ --without-cxx make # Compile all Python modules rm -rf ../Lib/test buildpython/python -Wi -t ../Lib/compileall.py ../Lib geexbox-1.1/packages/Python/install0000755000175000017500000000207210641745504015550 0ustar benben#!/bin/sh . config/options PYTHON_VERSION=2.4 PYTHON_LIB_DIR=$INSTALL/usr/lib/python$PYTHON_VERSION mkdir -p $INSTALL/usr/bin cp $BUILD/$1*/objdir/python $INSTALL/usr/bin/ mkdir -p $PYTHON_LIB_DIR/lib-dynload cp $BUILD/$1*/objdir/build/lib*/*.so $PYTHON_LIB_DIR/lib-dynload cp $BUILD/$1*/Lib/*.pyc $PYTHON_LIB_DIR cp $BUILD/$1*/Lib/site.py $PYTHON_LIB_DIR mkdir -p $PYTHON_LIB_DIR/plat-linux2 cp $BUILD/$1*/Lib/plat-linux2/* $PYTHON_LIB_DIR/plat-linux2 mkdir -p $PYTHON_LIB_DIR/xml cp $BUILD/$1*/Lib/xml/*.pyc $PYTHON_LIB_DIR/xml mkdir -p $PYTHON_LIB_DIR/xml/dom cp $BUILD/$1*/Lib/xml/dom/*.pyc $PYTHON_LIB_DIR/xml/dom mkdir -p $PYTHON_LIB_DIR/xml/parsers cp $BUILD/$1*/Lib/xml/parsers/*.pyc $PYTHON_LIB_DIR/xml/parsers mkdir -p $PYTHON_LIB_DIR/xml/sax cp $BUILD/$1*/Lib/xml/sax/*.pyc $PYTHON_LIB_DIR/xml/sax mkdir -p $PYTHON_LIB_DIR/encodings cp $BUILD/$1*/Lib/encodings/*.pyc $PYTHON_LIB_DIR/encodings mkdir -p $PYTHON_LIB_DIR/logging cp $BUILD/$1*/Lib/logging/*.pyc $PYTHON_LIB_DIR/logging # For future 3rd-parties Python modules mkdir -p $PYTHON_LIB_DIR/site-packages geexbox-1.1/packages/Python/patches/0000755000175000017500000000000010641745504015602 5ustar benbengeexbox-1.1/packages/Python/patches/10_crosscompile.diff0000644000175000017500000006644610641745504021456 0ustar benbendiff -Nur Python-2.4.3.orig/Lib/distutils/unixccompiler.py Python-2.4.3/Lib/distutils/unixccompiler.py --- Python-2.4.3.orig/Lib/distutils/unixccompiler.py Sun Aug 29 19:40:55 2004 +++ Python-2.4.3/Lib/distutils/unixccompiler.py Fri Jun 2 12:34:34 2006 @@ -44,6 +44,8 @@ class UnixCCompiler(CCompiler): + __sysroot_prefix = "" + compiler_type = 'unix' # These are used by CCompiler in two places: the constructor sets @@ -215,15 +217,20 @@ def library_option(self, lib): return "-l" + lib + def set_compiler_sysroot_prefix(self, sysroot_prefix): + self.__sysroot_prefix = sysroot_prefix + def find_library_file(self, dirs, lib, debug=0): shared_f = self.library_filename(lib, lib_type='shared') dylib_f = self.library_filename(lib, lib_type='dylib') static_f = self.library_filename(lib, lib_type='static') for dir in dirs: - shared = os.path.join(dir, shared_f) - dylib = os.path.join(dir, dylib_f) - static = os.path.join(dir, static_f) + if dir[0] == '/' and self.__sysroot_prefix: + dir = dir[1:] + shared = os.path.join(self.__sysroot_prefix, dir, shared_f) + dylib = os.path.join(self.__sysroot_prefix, dir, dylib_f) + static = os.path.join(self.__sysroot_prefix, dir, static_f) # We're second-guessing the linker here, with not much hard # data to go on: GCC seems to prefer the shared library, so I'm # assuming that *all* Unix C compilers do. And of course I'm diff -Nur Python-2.4.3.orig/Makefile.pre.in Python-2.4.3/Makefile.pre.in --- Python-2.4.3.orig/Makefile.pre.in Mon Mar 13 15:08:41 2006 +++ Python-2.4.3/Makefile.pre.in Fri Jun 2 12:22:12 2006 @@ -34,6 +34,8 @@ AR= @AR@ RANLIB= @RANLIB@ +CROSS_COMPILE= @CROSS_COMPILE@ + # Shell used by make (some versions default to the login shell, which is bad) SHELL= /bin/sh @@ -161,7 +163,8 @@ UNICODE_OBJS= @UNICODE_OBJS@ PYTHON= python$(EXE) -BUILDPYTHON= python$(BUILDEXE) +HOSTPYTHON= python$(BUILDEXE) +BUILDPYTHON= @BUILDPYTHON@ # === Definitions added by makesetup === @@ -187,7 +190,8 @@ ########################################################################## # Parser -PGEN= Parser/pgen$(EXE) +HOSTPGEN= Parser/pgen$(EXE) +BUILDPGEN= @BUILDPGEN@ POBJS= \ Parser/acceler.o \ @@ -305,10 +309,10 @@ # Rules # Default target -all: $(BUILDPYTHON) oldsharedmods sharedmods +all: $(HOSTPYTHON) oldsharedmods sharedmods # Build the interpreter -$(BUILDPYTHON): Modules/$(MAINOBJ) $(LIBRARY) $(LDLIBRARY) +$(HOSTPYTHON): Modules/$(MAINOBJ) $(LIBRARY) $(LDLIBRARY) $(LINKCC) $(LDFLAGS) $(LINKFORSHARED) -o $@ \ Modules/$(MAINOBJ) \ $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST) @@ -320,8 +324,8 @@ # Build the shared modules sharedmods: $(BUILDPYTHON) case $$MAKEFLAGS in \ - *-s*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py -q build;; \ - *) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py build;; \ + *-s*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' CROSS_COMPILE='$(CROSS_COMPILE)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py -q build;; \ + *) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' CROSS_COMPILE='$(CROSS_COMPILE)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py build;; \ esac # buildno should really depend on something like LIBRARY_SRC @@ -441,11 +445,11 @@ $(CXX) -c $(PY_CFLAGS) -o $@ $(srcdir)/Modules/ccpython.cc -$(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT) - -$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C) +$(GRAMMAR_H) $(GRAMMAR_C): $(BUILDPGEN) $(GRAMMAR_INPUT) + -$(BUILDPGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C) -$(PGEN): $(PGENOBJS) - $(CC) $(OPT) $(LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN) +$(HOSTPGEN): $(PGENOBJS) + $(CC) $(OPT) $(LDFLAGS) $(PGENOBJS) $(LIBS) -o $(HOSTPGEN) Parser/grammar.o: $(srcdir)/Parser/grammar.c \ $(srcdir)/Include/token.h \ @@ -466,6 +470,16 @@ Objects/unicodectype.o: $(srcdir)/Objects/unicodectype.c \ $(srcdir)/Objects/unicodetype_db.h +######################################################################### +# Rules for making python/pgen that will run on the build system +# (only used for cross compiles) + +buildpython/python$(BUILDEXE): + cd buildpython; make python; cd .. + +buildpython/Parser/pgen$(BUILDEXE): + cd buildpython; make Parser/pgen; cd .. + ############################################################################ # Header files @@ -619,7 +633,7 @@ else true; \ fi; \ done - $(INSTALL_PROGRAM) $(BUILDPYTHON) $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE) + $(INSTALL_PROGRAM) $(HOSTPYTHON) $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE) if test -f libpython$(VERSION)$(SO); then \ if test "$(SO)" = .dll; then \ $(INSTALL_SHARED) libpython$(VERSION)$(SO) $(DESTDIR)$(BINDIR); \ @@ -830,8 +844,9 @@ # Install the dynamically loadable modules # This goes into $(exec_prefix) sharedinstall: - $(RUNSHARED) ./$(BUILDPYTHON) -E $(srcdir)/setup.py install \ - --prefix=$(prefix) \ + CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' CROSS_COMPILE='$(CROSS_COMPILE)' \ + $(RUNSHARED) ./$(BUILDPYTHON) -E $(srcdir)/setup.py install \ + --prefix=$(prefix) \ --install-scripts=$(BINDIR) \ --install-platlib=$(DESTSHARED) \ --root=/$(DESTDIR) @@ -919,7 +934,7 @@ config.status: $(srcdir)/configure $(SHELL) $(srcdir)/configure $(CONFIG_ARGS) -.PRECIOUS: config.status $(BUILDPYTHON) Makefile Makefile.pre +.PRECIOUS: config.status $(HOSTPYTHON) Makefile Makefile.pre # Some make's put the object file in the current directory .c.o: @@ -959,11 +974,12 @@ find $(srcdir) -name '*.py[co]' -exec rm -f {} ';' clobber: clean - -rm -f $(BUILDPYTHON) $(PGEN) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \ + -rm -f $(HOSTPYTHON) $(HOSTPGEN) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \ tags TAGS \ config.cache config.log pyconfig.h Modules/config.c -rm -rf build platform -rm -rf $(PYTHONFRAMEWORKDIR) + -rm -rf buildpython # Make things extra clean, before making a distribution: # remove all generated files, even Makefile[.pre] diff -Nur Python-2.4.3.orig/README Python-2.4.3/README --- Python-2.4.3.orig/README Sat Feb 11 17:30:59 2006 +++ Python-2.4.3/README Fri Jun 2 12:21:23 2006 @@ -1137,6 +1137,40 @@ do this. +Cross Compiling +--------------- + +Python can be cross compiled by supplying different --host and --build +parameters to configure. (Python is compiled on the "build" system +and executed on the "host" system, in case you forgot :). Python is +tricky to cross compile because it needs to execute parts of itself +during construction. To work around this, make's VPATH feature is +used to compile a native python in the subdirectory "buildpython". +When parts of python need to be executed during construction, the +"buildpython" versions are used. + +A consequence of using the VPATH feature is that you may not do a +cross compile build in the source directory. In other words, do this: + +mkdir mydir +cd mydir +../Python/configure --host=powerpc-405-linux-gnu --build=i686-pc-linux-gnu +make + +Cross compiling works well under linux, mileage may vary for other +platforms. + +A few reminders on using configure to cross compile: +- Cross compile tools must be in the PATH. +- Cross compile tools must be prefixed with the host type +(ie powerpc-405-linux-gnu-cc, powerpc-405-linux-gnu-ranlib, ...) +- CC, CXX, AR, and RANLIB must be undefined when running configure and +make. Configure will detect them. + +If you need a cross compiler, check out Dan Kegel's crosstool: +http://www.kegel.com/crosstool + + Miscellaneous issues ==================== diff -Nur Python-2.4.3.orig/config.guess Python-2.4.3/config.guess --- Python-2.4.3.orig/config.guess Thu Jan 1 02:00:00 1970 +++ Python-2.4.3/config.guess Fri Jun 2 12:21:23 2006 @@ -0,0 +1 @@ + diff -Nur Python-2.4.3.orig/config.sub Python-2.4.3/config.sub --- Python-2.4.3.orig/config.sub Thu Jan 1 02:00:00 1970 +++ Python-2.4.3/config.sub Fri Jun 2 12:21:23 2006 @@ -0,0 +1 @@ + diff -Nur Python-2.4.3.orig/configure Python-2.4.3/configure --- Python-2.4.3.orig/configure Fri Feb 17 10:39:55 2006 +++ Python-2.4.3/configure Fri Jun 2 12:23:17 2006 @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 41985 . +# From configure.in Revision: 42436 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.59 for python 2.4. # @@ -312,7 +312,7 @@ # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS VERSION SOVERSION CONFIG_ARGS PYTHONFRAMEWORK PYTHONFRAMEWORKDIR PYTHONFRAMEWORKPREFIX PYTHONFRAMEWORKINSTALLDIR MACHDEP SGI_ABI EXTRAPLATDIR EXTRAMACHDEPPATH CONFIGURE_MACOSX_DEPLOYMENT_TARGET CXX MAINOBJ EXEEXT CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT CPP EGREP BUILDEXEEXT LIBRARY LDLIBRARY DLLLIBRARY BLDLIBRARY LDLIBRARYDIR INSTSONAME RUNSHARED LINKCC RANLIB ac_ct_RANLIB AR INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN OPT BASECFLAGS OTHER_LIBTOOL_OPT LIBTOOL_CRUFT SO LDSHARED BLDSHARED CCSHARED LINKFORSHARED CFLAGSFORSHARED SHLIBS USE_SIGNAL_MODULE SIGNAL_OBJS USE_THREAD_MODULE LDLAST THREADOBJ DLINCLDIR DYNLOADFILE MACHDEP_OBJS TRUE LIBOBJS HAVE_GETHOSTBYNAME_R_6_ARG HAVE_GETHOSTBYNAME_R_5_ARG HAVE_GETHOSTBYNAME_R_3_ARG HAVE_GETHOSTBYNAME_R HAVE_GETHOSTBYNAME LIBM LIBC UNICODE_OBJS THREADHEADERS SRCDIRS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC ac_ct_CC CXX ac_ct_CXX VERSION SOVERSION CONFIG_ARGS PYTHONFRAMEWORK PYTHONFRAMEWORKDIR PYTHONFRAMEWORKPREFIX PYTHONFRAMEWORKINSTALLDIR MACHDEP SGI_ABI EXTRAPLATDIR EXTRAMACHDEPPATH CONFIGURE_MACOSX_DEPLOYMENT_TARGET MAINOBJ EXEEXT CFLAGS LDFLAGS CPPFLAGS OBJEXT CPP EGREP BUILDEXEEXT LIBRARY LDLIBRARY DLLLIBRARY BLDLIBRARY LDLIBRARYDIR INSTSONAME RUNSHARED LINKCC RANLIB ac_ct_RANLIB AR ac_ct_AR INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN OPT BASECFLAGS OTHER_LIBTOOL_OPT LIBTOOL_CRUFT SO LDSHARED BLDSHARED CCSHARED LINKFORSHARED CFLAGSFORSHARED SHLIBS USE_SIGNAL_MODULE SIGNAL_OBJS USE_THREAD_MODULE LDLAST THREADOBJ DLINCLDIR DYNLOADFILE MACHDEP_OBJS TRUE LIBOBJS HAVE_GETHOSTBYNAME_R_6_ARG HAVE_GETHOSTBYNAME_R_5_ARG HAVE_GETHOSTBYNAME_R_3_ARG HAVE_GETHOSTBYNAME_R HAVE_GETHOSTBYNAME LIBM LIBC UNICODE_OBJS THREADHEADERS SRCDIRS BUILDPYTHON BUILDPGEN CROSS_COMPILE LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -833,6 +833,10 @@ _ACEOF cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi @@ -1340,6 +1344,259 @@ ac_config_headers="$ac_config_headers pyconfig.h" +# find compiler while respecting --host setting +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +if test -n "$ac_tool_prefix"; then + for ac_prog in gcc cc + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in gcc cc +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CXX" && break +done + + CXX=$ac_ct_CXX +fi + + @@ -3452,6 +3709,7 @@ echo "$as_me:$LINENO: result: $LDLIBRARY" >&5 echo "${ECHO_T}$LDLIBRARY" >&6 +# find tools while respecting --host setting if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 @@ -3515,7 +3773,6 @@ done done - test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB @@ -3532,11 +3789,11 @@ RANLIB="$ac_cv_prog_RANLIB" fi - -for ac_prog in ar aal -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 +if test -n "$ac_tool_prefix"; then + for ac_prog in ar aal + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AR+set}" = set; then @@ -3552,7 +3809,7 @@ test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="$ac_prog" + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -3570,9 +3827,54 @@ echo "${ECHO_T}no" >&6 fi - test -n "$AR" && break + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar aal +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done done -test -n "$AR" || AR="ar" + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 +echo "${ECHO_T}$ac_ct_AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_AR" && break +done +test -n "$ac_ct_AR" || ac_ct_AR="ar" + + AR=$ac_ct_AR +fi case $MACHDEP in @@ -3583,31 +3885,6 @@ INSTALL="${srcdir}/install-sh -c" fi esac -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f $ac_dir/shtool; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 -echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} - { (exit 1); exit 1; }; } -fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. - # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: @@ -20576,6 +20853,26 @@ echo "$as_me:$LINENO: result: done" >&5 echo "${ECHO_T}done" >&6 + + + +if [ $cross_compiling = yes ]; then + { echo "$as_me:$LINENO: Cross compiling: Configuring build python" >&5 +echo "$as_me: Cross compiling: Configuring build python" >&6;} + absconfigcommand=$(pwd)/$0 + mkdir -p buildpython + cd buildpython + OPT="$HOST_CFLAGS" CFLAGS="$HOST_CFLAGS" CXXFLAGS="$HOST_CXXFLAGS" CC="$HOST_CC" CXX="$HOST_CXX" AR="$HOST_AR" RANLIB="$HOST_RANLIB" $absconfigcommand --prefix=$prefix + cd .. + BUILDPYTHON='buildpython/python$(BUILDEXE)' + BUILDPGEN='buildpython/Parser/pgen$(BUILDEXE)' + CROSS_COMPILE=yes +else + BUILDPYTHON='$(HOSTPYTHON)' + BUILDPGEN='$(HOSTPGEN)' + CROSS_COMPILE=no +fi + # generate output files ac_config_files="$ac_config_files Makefile.pre Modules/Setup.config" @@ -21191,6 +21488,18 @@ s,@ECHO_N@,$ECHO_N,;t t s,@ECHO_T@,$ECHO_T,;t t s,@LIBS@,$LIBS,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@CC@,$CC,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@CXX@,$CXX,;t t +s,@ac_ct_CXX@,$ac_ct_CXX,;t t s,@VERSION@,$VERSION,;t t s,@SOVERSION@,$SOVERSION,;t t s,@CONFIG_ARGS@,$CONFIG_ARGS,;t t @@ -21203,14 +21512,11 @@ s,@EXTRAPLATDIR@,$EXTRAPLATDIR,;t t s,@EXTRAMACHDEPPATH@,$EXTRAMACHDEPPATH,;t t s,@CONFIGURE_MACOSX_DEPLOYMENT_TARGET@,$CONFIGURE_MACOSX_DEPLOYMENT_TARGET,;t t -s,@CXX@,$CXX,;t t s,@MAINOBJ@,$MAINOBJ,;t t s,@EXEEXT@,$EXEEXT,;t t -s,@CC@,$CC,;t t s,@CFLAGS@,$CFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t s,@CPPFLAGS@,$CPPFLAGS,;t t -s,@ac_ct_CC@,$ac_ct_CC,;t t s,@OBJEXT@,$OBJEXT,;t t s,@CPP@,$CPP,;t t s,@EGREP@,$EGREP,;t t @@ -21226,6 +21532,7 @@ s,@RANLIB@,$RANLIB,;t t s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t s,@AR@,$AR,;t t +s,@ac_ct_AR@,$ac_ct_AR,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t @@ -21261,6 +21568,9 @@ s,@UNICODE_OBJS@,$UNICODE_OBJS,;t t s,@THREADHEADERS@,$THREADHEADERS,;t t s,@SRCDIRS@,$SRCDIRS,;t t +s,@BUILDPYTHON@,$BUILDPYTHON,;t t +s,@BUILDPGEN@,$BUILDPGEN,;t t +s,@CROSS_COMPILE@,$CROSS_COMPILE,;t t s,@LTLIBOBJS@,$LTLIBOBJS,;t t CEOF diff -Nur Python-2.4.3.orig/configure.in Python-2.4.3/configure.in --- Python-2.4.3.orig/configure.in Fri Feb 17 10:39:55 2006 +++ Python-2.4.3/configure.in Fri Jun 2 12:21:23 2006 @@ -9,6 +9,11 @@ AC_CONFIG_SRCDIR([Include/object.h]) AC_CONFIG_HEADER(pyconfig.h) +# find compiler while respecting --host setting +AC_CANONICAL_HOST() +AC_CHECK_TOOLS(CC,gcc cc) +AC_CHECK_TOOLS(CXX,g++ c++) + dnl This is for stuff that absolutely must end up in pyconfig.h. dnl Please use pyport.h instead, if possible. AH_TOP([ @@ -614,9 +619,9 @@ AC_MSG_RESULT($LDLIBRARY) -AC_PROG_RANLIB -AC_SUBST(AR) -AC_CHECK_PROGS(AR, ar aal, ar) +# find tools while respecting --host setting +AC_CHECK_TOOL(RANLIB,ranlib) +AC_CHECK_TOOLS(AR,ar aal,ar) case $MACHDEP in bsdos*|hp*|HP*) @@ -3146,6 +3151,25 @@ fi done AC_MSG_RESULT(done) + +AC_SUBST(BUILDPYTHON) +AC_SUBST(BUILDPGEN) +AC_SUBST(CROSS_COMPILE) +if [[ $build != $host ]]; then + AC_MSG_NOTICE(Cross compiling: Configuring build python) + absconfigcommand=$(pwd)/$0 + mkdir -p buildpython + cd buildpython + OPT="$HOST_CFLAGS" CFLAGS="$HOST_CFLAGS" CXXFLAGS="$HOST_CXXFLAGS" CC="$HOST_CC" CXX="$HOST_CXX" AR="$HOST_AR" RANLIB="$HOST_RANLIB" $absconfigcommand --prefix=$prefix + cd .. + BUILDPYTHON='buildpython/python$(BUILDEXE)' + BUILDPGEN='buildpython/Parser/pgen$(BUILDEXE)' + CROSS_COMPILE=yes +else + BUILDPYTHON='$(HOSTPYTHON)' + BUILDPGEN='$(HOSTPGEN)' + CROSS_COMPILE=no +fi # generate output files AC_CONFIG_FILES(Makefile.pre Modules/Setup.config) diff -Nur Python-2.4.3.orig/setup.py Python-2.4.3/setup.py --- Python-2.4.3.orig/setup.py Thu Mar 23 21:07:46 2006 +++ Python-2.4.3/setup.py Fri Jun 2 12:35:10 2006 @@ -199,6 +199,10 @@ self.announce('WARNING: skipping import check for Cygwin-based "%s"' % ext.name) return + if os.environ.get('CROSS_COMPILE') == 'yes': + self.announce('WARNING: skipping import check for cross compiled "%s"' + % ext.name) + return ext_filename = os.path.join( self.build_lib, self.get_ext_filename(self.get_ext_fullname(ext.name))) @@ -272,6 +276,8 @@ ] inc_dirs = self.compiler.include_dirs + ['/usr/include'] exts = [] + + self.compiler.set_compiler_sysroot_prefix(os.environ.get('SYSROOT_PREFIX')) platform = self.get_platform() (srcdir,) = sysconfig.get_config_vars('srcdir') geexbox-1.1/packages/Python/unpack0000755000175000017500000000136110641745504015363 0ustar benben#!/bin/sh . config/options sed -i -e "s%^#\(math.*\)%\1%" \ -e "s%^#\(_random.*\)%\1%" \ -e "s%^#\(binascii.*\)%\1%" \ -e "s%^#\(unicodedata.*\)%\1%" \ -e "s%^#\(time.*\)%\1%" \ -e "s%^#\(cStringIO.*\)%\1%" \ -e "s%^#\(cPickle.*\)%\1%" \ -e "s%^#\(fcntl.*\)%\1%" \ -e "s%^#\(array.*\)%\1%" \ -e "s%^#\(cmath.*\)%\1%" \ -e "s%^#\(struct.*\)%\1%" \ -e "s%^#\(operator.*\)%\1%" \ -e "s%^#\(_weakref.*\)%\1%" \ -e "s%^#\(_testcapi.*\)%\1%" \ -e "s%^#\(collections.*\)%\1%" \ -e "s%^#\(itertools.*\)%\1%" \ -e "s%^#\(strop.*\)%\1%" \ -e "s%^#\(_socket.*\)%\1%" \ -e "s%^#\(readline.*\)%\1%" \ $BUILD/$1*/Modules/Setup.dist geexbox-1.1/packages/Python/url0000644000175000017500000000007410641745504014701 0ustar benbenhttp://www.python.org/ftp/python/2.4.3/Python-2.4.3.tar.bz2 geexbox-1.1/packages/SDL/0000755000175000017500000000000010641745504013314 5ustar benbengeexbox-1.1/packages/SDL/build0000755000175000017500000000535310641745504014347 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain $SCRIPTS/build alsa cd $BUILD/$1* ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=$LIB_PREFIX \ --enable-shared \ --disable-static \ --enable-libc \ --enable-audio \ --enable-video \ --enable-events \ --enable-joystick \ --enable-cdrom \ --enable-threads \ --enable-timers \ --enable-file \ --enable-loadso \ --enable-cpuinfo \ --enable-assembly \ --disable-oss \ --enable-alsa \ --disable-alsatest \ --enable-alsa-shared \ --disable-esd \ --disable-esdtest \ --disable-esd-shared \ --disable-arts \ --disable-arts-shared \ --disable-nas \ --disable-diskaudio \ --disable-dummyaudio \ --disable-mintaudio \ --enable-nasm \ --disable-altivec \ --disable-ipod \ --disable-video-nanox \ --disable-nanox-debug \ --disable-nanox-share-memory \ --disable-nanox-direct-fb \ --disable-video-x11 \ --disable-x11-shared \ --disable-dga \ --disable-video-dga \ --disable-video-x11-dgamouse \ --disable-video-x11-vm \ --disable-video-x11-xv \ --disable-video-x11-xinerama \ --disable-video-x11-xme \ --disable-video-x11-xrandr \ --disable-video-x11-dpms \ --disable-video-photon \ --disable-video-carbon \ --disable-video-cocoa \ --enable-video-fbcon \ --disable-video-directfb \ --disable-video-ps2gs \ --disable-video-ggi \ --disable-video-svga \ --disable-video-vgl \ --disable-video-wscons \ --disable-video-aalib \ --disable-video-qtopia \ --disable-video-picogui \ --disable-video-xbios \ --disable-video-gem \ --disable-video-dummy \ --disable-video-opengl \ --disable-osmesa-shared \ --enable-input-events \ --disable-input-tslib \ --disable-pth \ --enable-pthreads \ --enable-pthread-sem \ --disable-stdio-redirect \ --disable-directx \ --enable-sdl-dlopen \ --disable-atari-ldg \ --disable-clock_gettime \ --without-x make make install cp sdl-config $ROOT/$TOOLCHAIN/bin chmod 755 $ROOT/$TOOLCHAIN/bin/sdl-config geexbox-1.1/packages/SDL/install0000755000175000017500000000015410641745504014710 0ustar benben#!/bin/sh . config/options mkdir -p $INSTALL/usr/lib cp -PR $BUILD/$1*/build/.libs/*.so* $INSTALL/usr/lib geexbox-1.1/packages/SDL/url0000644000175000017500000000006010641745504014035 0ustar benbenhttp://www.libsdl.org/release/SDL-1.2.11.tar.gz geexbox-1.1/packages/SDL_image/0000755000175000017500000000000010641745504014456 5ustar benbengeexbox-1.1/packages/SDL_image/build0000755000175000017500000000137610641745504015512 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain $SCRIPTS/build jpeg $SCRIPTS/build libexif $SCRIPTS/build libungif $SCRIPTS/build libpng cd $BUILD/$1* ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=$LIB_PREFIX \ --enable-shared \ --disable-static \ --enable-bmp \ --enable-gif \ --enable-jpg \ --enable-jpg-shared \ --disable-lbm \ --enable-pcx \ --enable-png \ --enable-png-shared \ --enable-pnm \ --enable-tga \ --disable-tif \ --disable-tif-shared \ --enable-xcf \ --enable-xpm \ --disable-xv make make install geexbox-1.1/packages/SDL_image/install0000755000175000017500000000014710641745504016054 0ustar benben#!/bin/sh . config/options mkdir -p $INSTALL/usr/lib cp -PR $BUILD/$1*/.libs/*.so* $INSTALL/usr/lib geexbox-1.1/packages/SDL_image/url0000644000175000017500000000011010641745504015173 0ustar benbenhttp://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.5.tar.gz geexbox-1.1/packages/SDL_mixer/0000755000175000017500000000000010641745504014520 5ustar benbengeexbox-1.1/packages/SDL_mixer/build0000755000175000017500000000134110641745504015544 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain cd $BUILD/$1* ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=$LIB_PREFIX \ --enable-shared \ --disable-static \ --enable-music-cmd \ --enable-music-wave \ --disable-music-libmikmod \ --disable-music-mod \ --disable-music-midi \ --disable-music-timidity-midi \ --enable-music-native-midi \ --enable-music-native-midi-gpl \ --disable-music-ogg \ --disable-music-ogg-shared \ --disable-music-mp3 \ --disable-smpegtest \ --enable-music-mp3-shared make make install geexbox-1.1/packages/SDL_mixer/install0000755000175000017500000000015410641745504016114 0ustar benben#!/bin/sh . config/options mkdir -p $INSTALL/usr/lib cp -PR $BUILD/$1*/build/.libs/*.so* $INSTALL/usr/lib geexbox-1.1/packages/SDL_mixer/url0000644000175000017500000000011010641745504015235 0ustar benbenhttp://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-1.2.7.tar.gz geexbox-1.1/packages/SDL_ttf/0000755000175000017500000000000010641745504014171 5ustar benbengeexbox-1.1/packages/SDL_ttf/build0000755000175000017500000000053310641745504015217 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain $SCRIPTS/build freetype cd $BUILD/$1* ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=$LIB_PREFIX \ --enable-shared \ --disable-static \ --with-freetype-prefix=$LIB_PREFIX \ --without-x make make install geexbox-1.1/packages/SDL_ttf/install0000755000175000017500000000014610641745504015566 0ustar benben#!/bin/sh . config/options mkdir -p $INSTALL/usr/lib cp -PR $BUILD/$1*/.libs/*.so* $INSTALL/usr/lib geexbox-1.1/packages/SDL_ttf/url0000644000175000017500000000010410641745504014711 0ustar benbenhttp://www.libsdl.org/projects/SDL_ttf/release/SDL_ttf-2.0.8.tar.gz geexbox-1.1/packages/acx/0000755000175000017500000000000010641745504013445 5ustar benbengeexbox-1.1/packages/acx/build0000755000175000017500000000017510641745504014475 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain $SCRIPTS/build linux cd $BUILD/$1* make -C "$(kernel_path)" M="`pwd`" geexbox-1.1/packages/acx/install0000755000175000017500000000025310641745504015041 0ustar benben#!/bin/sh . config/options mkdir -p "`ls -d $INSTALL/lib/modules/*`/kernel/drivers/net/wireless" cp $BUILD/$1*/$1.ko $INSTALL/lib/modules/*/kernel/drivers/net/wireless geexbox-1.1/packages/acx/need_unpack0000755000175000017500000000025710641745504015653 0ustar benben#!/bin/sh . config/options STAMP=$STAMPS/$1/unpack test $PACKAGES/linux/config/linux.$TARGET_ARCH.conf -nt $STAMP -o $PACKAGES/linux/url -nt $STAMP && rm -f $STAMP exit 0 geexbox-1.1/packages/acx/url0000644000175000017500000000004210641745504014166 0ustar benbenGEEXBOX_SRCS/acx-20070101.tar.bz2 geexbox-1.1/packages/alsa-lib/0000755000175000017500000000000010641745504014356 5ustar benbengeexbox-1.1/packages/alsa-lib/build0000755000175000017500000000104410641745504015402 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=32 -fPIC -DPIC" cd $BUILD/$1* ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=$LIB_PREFIX \ --datadir=/usr/share \ --enable-static \ --enable-shared \ --with-debug=no \ --with-versioned=no \ --disable-dependency-tracking sed -i 's/.*PKGLIBDIR.*/#define PKGLIBDIR ""/' include/config.h make make -C include install-data make -C src install-exec geexbox-1.1/packages/alsa-lib/config/0000755000175000017500000000000010641745504015623 5ustar benbengeexbox-1.1/packages/alsa-lib/config/PMac.conf0000644000175000017500000000022710641745504017313 0ustar benben# configuration for PMac PMac.pcm.front.0 { @args [ CARD ] @args.CARD { type string } type hw card $CARD device 0 } geexbox-1.1/packages/alsa-lib/install0000755000175000017500000000175010641745504015755 0ustar benben#!/bin/sh . config/options $SCRIPTS/build alsa-utils $SCRIPTS/build MPlayer [ "$DIGIMATRIX" = yes ] && $SCRIPTS/build digitools [ "$EMULATORS" = yes ] && $SCRIPTS/build emulators SO=`ls -d $BUILD/$1*`/libasound.so.2 libstrip $SO $BUILD/$1*/src/.libs/libasound.a "$BUILD/alsa-utils*/amixer/amixer $BUILD/alsa-utils*/iecset/iecset $BUILD/MPlayer*/mplayer $BUILD/digitools*/digitools $BUILD/scummvm*/scummvm" "" "_snd_pcm_hw_open _snd_pcm_plug_open _snd_pcm_hooks_open _snd_pcm_asym_open _snd_pcm_softvol_open" mkdir -p $INSTALL/usr/lib cp $SO $INSTALL/usr/lib mkdir -p $INSTALL/usr/share/alsa sed 's%.*~/\.asoundrc.*%%' $BUILD/$1*/src/conf/alsa.conf > $INSTALL/usr/share/alsa/alsa.conf cp -rf $BUILD/$1*/src/conf/cards $INSTALL/usr/share/alsa/ cp -rf $BUILD/$1*/src/conf/pcm $INSTALL/usr/share/alsa/ rm -f $INSTALL/usr/share/alsa/cards/Makefile* rm -f $INSTALL/usr/share/alsa/pcm/Makefile* if [ "$TARGET_ARCH" = powerpc ]; then cp $PACKAGES/$1/config/PMac.conf $INSTALL/usr/share/alsa/cards fi geexbox-1.1/packages/alsa-lib/patches/0000755000175000017500000000000010641745504016005 5ustar benbengeexbox-1.1/packages/alsa-lib/patches/10_wordexp.diff0000644000175000017500000000162010641745504020626 0ustar benbendiff -Nur alsa-lib-1.0.11rc1.orig/src/userfile.c alsa-lib-1.0.11rc1/src/userfile.c --- alsa-lib-1.0.11rc1.orig/src/userfile.c 2005-12-05 16:27:28.000000000 +0200 +++ alsa-lib-1.0.11rc1/src/userfile.c 2005-12-17 16:47:45.000000000 +0200 @@ -61,11 +61,31 @@ } #else /* !HAVE_WORDEXP_H */ +#include +#include + /* just copy the string - would be nicer to expand by ourselves, though... */ int snd_user_file(const char *file, char **result) { - *result = strdup(file); - if (! *result) + glob_t globbuf; + int err; + + assert(file && result); + err = glob(file, 0, NULL, &globbuf); + switch (err) { + case GLOB_NOSPACE: + return -ENOMEM; + case 0: + if (globbuf.gl_pathc == 1) + break; + /* Fall through */ + default: + globfree(&globbuf); + return -EINVAL; + } + *result = strdup(globbuf.gl_pathv[0]); + globfree(&globbuf); + if (*result == NULL) return -ENOMEM; return 0; } geexbox-1.1/packages/alsa-lib/patches/20_reduce.diff0000644000175000017500000000201710641745504020407 0ustar benbendiff -Naur alsa-lib-1.0.4.orig/include/error.h alsa-lib-1.0.4/include/error.h --- alsa-lib-1.0.4.orig/include/error.h 2004-04-27 00:16:40.000000000 +0200 +++ alsa-lib-1.0.4/include/error.h 2004-04-27 00:19:31.000000000 +0200 @@ -61,11 +61,11 @@ extern int snd_lib_error_set_handler(snd_lib_error_handler_t handler); #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 95) -#define SNDERR(...) snd_lib_error(__FILE__, __LINE__, __FUNCTION__, 0, __VA_ARGS__) /**< Shows a sound error message. */ -#define SYSERR(...) snd_lib_error(__FILE__, __LINE__, __FUNCTION__, errno, __VA_ARGS__) /**< Shows a system error message (related to \c errno). */ +#define SNDERR(...) +#define SYSERR(...) #else -#define SNDERR(args...) snd_lib_error(__FILE__, __LINE__, __FUNCTION__, 0, ##args) /**< Shows a sound error message. */ -#define SYSERR(args...) snd_lib_error(__FILE__, __LINE__, __FUNCTION__, errno, ##args) /**< Shows a system error message (related to \c errno). */ +#define SNDERR(args...) +#define SYSERR(args...) #endif /** \} */ geexbox-1.1/packages/alsa-lib/url0000644000175000017500000000011610641745504015101 0ustar benbenhttp://dl.ambiweb.de/mirrors/ftp.alsa-project.org/lib/alsa-lib-1.0.14.tar.bz2 geexbox-1.1/packages/alsa-utils/0000755000175000017500000000000010641745504014750 5ustar benbengeexbox-1.1/packages/alsa-utils/build0000755000175000017500000000045310641745504015777 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain $SCRIPTS/build alsa-lib cd $BUILD/$1* ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --disable-dependency-tracking \ --disable-alsamixer make -C amixer [ "$DEVTOOLS" = yes ] && make -C iecset exit 0 geexbox-1.1/packages/alsa-utils/init.d/0000755000175000017500000000000010641745504016135 5ustar benbengeexbox-1.1/packages/alsa-utils/init.d/40_alsa0000755000175000017500000000507310641745504017313 0ustar benben#!/bin/sh # # setup alsa (especially the mixer config) # # runlevels: geexbox, debug echo "### Setting up sound card ###" # include audio configuration file . /etc/audio [ ! -f /etc/asound.conf ] && echo "" > /etc/asound.conf mixer() { parm=${3:-on} amixer -c $ALSA_CARD sset "$1" "$2" $parm >/dev/null 2>&1 amixer -c $ALSA_CARD sset "$1" $parm >/dev/null 2>&1 } # set alsa channel mode (6ch, 4ch, 2ch) mixer 'Channel Mode' "${CHANNELS}ch" # set common mixer params mixer Master 90% mixer Front 90% mixer PCM 90% mixer Synth 90% # mute CD, since using digital audio instead mixer CD 0% mute # Only unmute Line and Aux if they are possibly used. if [ -e /var/use_dxr3 -o -e /var/tvcard -o -e /var/dvbcard -o -e /var/digimatrix ]; then mixer Line 90% mixer Aux 90% else mixer Line 0% mute mixer Aux 0% mute fi # mute mic mixer Mic 0% mute # ESS 1969 chipset has 2 PCM channels mixer PCM,1 90% # Trident/YMFPCI/emu10k1 mixer Wave 100% mixer Music 100% mixer AC97 100% mixer Surround 90% mixer 'Surround Digital' 90% mixer 'Wave Surround' 90% if [ "$CHANNELS" = 6 ]; then mixer 'Duplicate Front' 0% off else mixer 'Duplicate Front' 90% fi mixer 'Sigmatel 4-Speaker Stereo' 90% # CS4237B chipset: mixer 'Master Digital' 90% # DRC mixer 'Dynamic Range Compression' 90% # Envy24 chips with analog outs mixer DAC 90% mixer DAC,0 90% mixer DAC,1 90% # some notebooks use headphone instead of master mixer Headphone 90% mixer 'Internal Speaker' 75% mixer Playback 100% mixer Center 90% mixer LFE 90% mixer Center/LFE 90% # Required for newer Via hardware mixer 'VIA DXS,0' 80% mixer 'VIA DXS,1' 80% mixer 'VIA DXS,2' 80% mixer 'VIA DXS,3' 80% # Intel P4P800-MX (Ubuntu bug #5813) mixer 'Master Playback Switch' on # Required at least for Via 823x hardware on DFI K8M800-MLVF Mobo mixer 'IEC958 Capture Monitor' 0% off # Required on some notebooks with ICH4: mixer 'Headphone Jack Sense' 0% off mixer 'Line Jack Sense' 0% off # Required for either Analog or Digital output mixer 'SB Live Analog/Digital Output Jack' $SBL_AUDIGY mixer 'Audigy Analog/Digital Output Jack' $SBL_AUDIGY # set SPDIF mixer params if [ "$SOUNDCARD_MODE" = SPDIF ]; then mixer 'IEC958' 90% mixer 'IEC958 Output' 90% mixer 'IEC958 Playback AC97-SPSA' $AC97_SPSA mixer 'IEC958 Coaxial' 90% mixer 'IEC958 LiveDrive' 90% mixer 'IEC958 Optical Raw' 90% mixer 'SPDIF Out' 90% mixer 'SPDIF Front' 90% mixer 'SPDIF Rear' 90% mixer 'SPDIF Center/LFE' 90% mixer 'Master Digital' 80% else mixer 'SPDIF Out' 0% off mixer 'Analog Front' 90% mixer 'Analog Rear' 90% mixer 'Analog Center/LFE' 90% fi exit 0 geexbox-1.1/packages/alsa-utils/install0000755000175000017500000000026210641745504016344 0ustar benben#!/bin/sh . config/options mkdir -p $INSTALL/usr/bin cp $BUILD/$1*/amixer/amixer $INSTALL/usr/bin [ "$DEVTOOLS" = yes ] && cp $BUILD/$1*/iecset/iecset $INSTALL/usr/bin exit 0 geexbox-1.1/packages/alsa-utils/need_unpack0000755000175000017500000000017110641745504017151 0ustar benben#!/bin/sh . config/options STAMP=$STAMPS/$1/unpack . $STAMP test $STAMP_DEVTOOLS != $DEVTOOLS && rm -f $STAMP exit 0 geexbox-1.1/packages/alsa-utils/url0000644000175000017500000000012210641745504015470 0ustar benbenhttp://dl.ambiweb.de/mirrors/ftp.alsa-project.org/utils/alsa-utils-1.0.14.tar.bz2 geexbox-1.1/packages/alsa/0000755000175000017500000000000010641745504013612 5ustar benbengeexbox-1.1/packages/alsa/build0000755000175000017500000000011710641745504014636 0ustar benben#!/bin/sh . config/options $SCRIPTS/build alsa-lib $SCRIPTS/build alsa-utils geexbox-1.1/packages/alsa/config/0000755000175000017500000000000010641745504015057 5ustar benbengeexbox-1.1/packages/alsa/config/audio0000644000175000017500000000144210641745504016104 0ustar benben# Soundcard Configuration File # Soundcard's ID (0 for first card, 1 for second, ...) ALSA_CARD="0" # Output mode (SPDIF or analog) SOUNDCARD_MODE="analog" # AC3 decoder mode (none, ac3, dts or ac3dts) # note: in analog mode this option is ignored and defaults to none. AC3_DECODER="none" # IEC958 Playback AC97-SPSA Mode: # 0. PCM1 # 1. PCM2,PCM1 (rear) # 2. Centre and LFE # 3. PCM3,Modem,Dedicated S/PDIF # For SPDIF most users will want 0, but some users may need 3. AC97_SPSA="0" # Playback channels # 2 - Stereo # 4 - Surround # 6 - Full 5.1 # note: in SPDIF and hardware AC3 decoder mode this option is ignored. CHANNELS="2" # SB Live/Audigy Analog/Digital Output Mode: # 0: Suitable for some older SB Live! cards # 1: Suitable for newer SB Live! and all Audigy cards SBL_AUDIGY="1" geexbox-1.1/packages/alsa/install0000755000175000017500000000017610641745504015212 0ustar benben#!/bin/sh . config/options $SCRIPTS/install alsa-lib $SCRIPTS/install alsa-utils cp $PACKAGES/$1/config/audio $INSTALL/etc geexbox-1.1/packages/atitvout/0000755000175000017500000000000010641745504014551 5ustar benbengeexbox-1.1/packages/atitvout/arch0000644000175000017500000000000510641745504015404 0ustar benbeni386 geexbox-1.1/packages/atitvout/build0000755000175000017500000000026010641745504015574 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain $SCRIPTS/build lrmi make -C $BUILD/$1* \ CFLAGS="$CFLAGS -I$LIB_PREFIX/include/lrmi" \ $1 $STRIP $BUILD/$1*/$1 geexbox-1.1/packages/atitvout/patches/0000755000175000017500000000000010641745504016200 5ustar benbengeexbox-1.1/packages/atitvout/patches/10_use-system-lrmi-fix.diff0000644000175000017500000000153010641745504023174 0ustar benbentaken from: http://amd.colony.ee/pmwiki.php?pagename=Main.Atitvout atitvout-use-system-lrmi-fix.patch --- atitvout.orig/Makefile 2004-04-10 14:05:02.000000000 +0300 +++ atitvout/Makefile 2004-04-20 08:10:29.624321736 +0300 @@ -1,5 +1,5 @@ VERSION=0.4 -CFLAGS=-Wall -O2 -g -DVERSION=\"$(VERSION)\" -I./lrmi-0.6 +CFLAGS=-Wall -O2 -g -DVERSION=\"$(VERSION)\" OBJS=atitvout.o ati.o vbeinfo.o vbecall.o mach64.o radeon.o TAR=atitvout-$(VERSION).tar.gz BINARY=atitvout @@ -8,8 +8,7 @@ all: $(BINARY) $(BINARY): $(OBJS) - make -C lrmi-0.6 - $(CC) $(OBJS) lrmi-0.6/liblrmi.a -o $(BINARY) + $(CC) $(OBJS) -o $(BINARY) -llrmi strip: $(BINARY) @du -h $(BINARY) @@ -18,7 +17,6 @@ clean: rm -f *.o $(BINARY) *~ README index.html *.tar.gz test.out - make -C lrmi-0.6 clean install: strip install -g root -o root -m 555 $(BINARY) /usr/local/sbin geexbox-1.1/packages/atitvout/patches/20_models.diff0000644000175000017500000000174710641745504020627 0ustar benbentaken from Fedora atitvout source rpm --- atitvout.orig/atitvout.c 2002-09-16 22:37:08.000000000 +0300 +++ atitvout/atitvout.c 2004-07-23 21:43:27.426417887 +0300 @@ -118,8 +118,20 @@ } else { if (strncmp(oem, "ATI MACH64", 10) == 0) radeon = 0; + /* From http://amd.colony.ee/pmwiki.php?pagename=Main.Atitvout */ + else if (strncmp(oem, "ATI MOBILE M3", 13) == 0) + radeon = 0; + /* From Ville S */ + else if (strcmp(oem, "ATI MOBILITY RADEON") == 0) + radeon = 0; + /* From NetBSD package */ + else if (strcmp(oem, "ATI MOBILITY RADEON 9000") == 0) + radeon = 0; else if (strncmp(oem, "ATI RAGE128", 11) == 0) radeon = 1; + /* From Ville S */ + else if (strcmp(oem, "ATI RV200") == 0) + radeon = 1; /* Note: Also it's possible to have here 'RG6' for first radeons */ else if (strstr(oem, "RADEON") != 0) radeon = 1; geexbox-1.1/packages/atitvout/url0000644000175000017500000000010110641745504015266 0ustar benbenhttp://0pointer.de/lennart/projects/atitvout/atitvout-0.4.tar.gz geexbox-1.1/packages/autoplay/0000755000175000017500000000000010641745504014530 5ustar benbengeexbox-1.1/packages/autoplay/config/0000755000175000017500000000000010641745504015775 5ustar benbengeexbox-1.1/packages/autoplay/config/autoplay0000644000175000017500000000011010641745504017546 0ustar benben# Configure system to autoplay when automounting media. AUTOPLAY="yes" geexbox-1.1/packages/autoplay/install0000755000175000017500000000024510641745504016125 0ustar benben#!/bin/sh . config/options mkdir -p $INSTALL/etc cp $PACKAGES/$1/config/autoplay $INSTALL/etc mkdir -p $INSTALL/usr/bin cp $BUILD/$1*/$1 $INSTALL/usr/bin exit 0 geexbox-1.1/packages/autoplay/sources/0000755000175000017500000000000010641745504016213 5ustar benbengeexbox-1.1/packages/autoplay/sources/autoplay.c0000644000175000017500000004242010641745504020217 0ustar benben/* autoplay.c v0.0.6 */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifndef MNT_DETACH #define MNT_DETACH 0x00000002 /* Just detach from the tree */ #endif #define BUF_LEN 50 static char *xcd_exts[] = {"dat", NULL}; static char **exts; static char *playlist = NULL; static int playlist_len = 0; typedef struct _cd_drive { char *dev; char *mnt; int fd; int status; }*cd_drive; static char ** get_extensions (char *filename) { char **extensions, ext[32]; FILE *fp; int n = 1; if (filename == NULL) return NULL; fp = fopen (filename, "r"); if (fp == NULL) return NULL; extensions = (char **) malloc (sizeof (*extensions)); *extensions = NULL; while (fgets (ext, sizeof (ext), fp)) { char **l, *e; int s = strlen (ext); if (ext[s-1] == '\n') { ext[s-1] = '\0'; s--; } e = (char *) malloc (s + 1); extensions = (char **) realloc (extensions, ++n * sizeof (*extensions)); extensions = (char **) realloc (extensions, ++n * sizeof (*extensions)); strcpy (e, ext); for (l=extensions; *l; l++); *l++ = e; *l = NULL; } fclose (fp); return extensions; } static void free_extensions (char **extensions) { if (extensions != NULL) { char **l = extensions; while (*l) free (*l++); free (extensions); } } static char *fullname; static int fullname_maxlen; static int fullname_len; static void escape_playlist (const char *str, int second_level) { int is_playlist_str = (str == playlist); char *new_str; int new_len, len; if (!str) return; for (new_len = 0, len = 0; *str; str++) switch (*str) { case '\'': if (second_level) new_len+=6; case '\\': new_len++; default: new_len++; len++; break; } if (new_len == len && is_playlist_str) return; if (playlist_len < new_len + 1) { playlist_len = new_len + 1; playlist = (char *) realloc (playlist, playlist_len); if (is_playlist_str) str = &playlist[len]; } new_str = &playlist[new_len]; len++; /* for null character */ while (len--) switch (*str) { case '\'': if (second_level) { /* ' -> \'\\\'\' */ *new_str-- = '\''; *new_str-- = '\\'; /* \' */ *new_str-- = '\''; *new_str-- = '\\'; /* \' */ *new_str-- = '\\'; *new_str-- = '\\'; /* \\ */ } case '\\': *new_str-- = *str--; *new_str-- = '\\'; break; default: *new_str-- = *str--; break; } } static int is_playable (const struct dirent *dir) { char **str, *ext; struct stat st; if (*dir->d_name == '.') return 0; strcpy (fullname+fullname_len, dir->d_name); stat (fullname, &st); if (S_ISDIR(st.st_mode) && strcmp (dir->d_name, "GEEXBOX")) return 1; ext = strrchr (dir->d_name, '.'); if (ext++ == NULL) return 0; for (str=exts; *str; str++) if (!strcasecmp (ext, *str)) return 1; return 0; } static int build_playlist (char *dir, int fd) { struct dirent **namelist; int i, n, len, dirlen, count=0; struct stat st; if (dir) { dirlen = strlen (dir); if (dirlen + 2 > fullname_maxlen) { fullname = (char *) realloc (fullname, dirlen + 2); fullname_maxlen = dirlen + 2; } strcpy (fullname, dir); } strcat (fullname, "/"); fullname_len = dirlen = strlen (fullname); n = scandir (fullname, &namelist, is_playable, alphasort); if (n < 0) return 0; for (i=0; i fullname_maxlen) { fullname = (char *) realloc (fullname, len + 1); fullname_maxlen = len + 1; } strcpy (fullname+dirlen, namelist[i]->d_name); stat (fullname, &st); if (S_ISDIR(st.st_mode)) count += build_playlist (NULL, fd); else { if (fd == -1) { if (playlist == NULL) { playlist_len = strlen (fullname) + 1; playlist = (char *) malloc (playlist_len); } else if (playlist_len < strlen (fullname) + 1) { playlist_len = strlen (fullname) + 1; playlist = (char *) realloc (playlist, playlist_len); } strcpy (playlist, fullname); } else { write (fd, fullname, len-1); write (fd, "\n", 1); } count++; } free (namelist[i]); } free (namelist); return count; } static int open_device(const char *dev) { int fd = open(dev, O_RDONLY | O_NONBLOCK); if (fd >= 0) ioctl(fd, CDROM_LOCKDOOR, 0); return fd; } static int mntlock_fd = -1; static int mntlock(void) { if (mntlock_fd != -1 || (mntlock_fd = open("/tmp/mntlock", O_RDONLY | O_CREAT)) != -1) { if (!flock(mntlock_fd, LOCK_EX)) return 1; close(mntlock_fd); /* locking failed, try to reopen file next time */ mntlock_fd = -1; } return 0; } static void mntunlock(void) { if (flock(mntlock_fd, LOCK_UN)) { /* freeing lock failed, close fd instand */ close(mntlock_fd); mntlock_fd = -1; } } static int is_cdrom_mounted(cd_drive drive) { char buf[PATH_MAX]; size_t devlen; FILE *f; devlen = strlen(drive->dev); f = fopen("/proc/mounts", "r"); if (f) { while (!feof(f)) { if (fgets(buf, sizeof(buf), f) && !strncmp(buf, drive->dev, devlen) && buf[devlen] == ' ') { fclose(f); return 1; } } fclose(f); } return 0; } static void umount_cdrom(cd_drive drive) { if (umount2(drive->mnt, MNT_DETACH) < 0 && errno == EBUSY) { do { usleep(1000000); } while (umount(drive->mnt) < 0 && errno == EBUSY); } } static char **fstype_list = NULL; static void load_proc_filesystems(void) { char buf[255], *fstype; size_t n = 0, len; FILE *f; f = fopen("/proc/filesystems", "r"); if (f) { while (!feof(f)) { if (fgets(buf, sizeof(buf), f) && buf[0] == '\t') { len = strlen(buf); if (buf[len-1] == '\n') buf[--len] = '\0'; fstype = (char*) malloc(len); strcpy(fstype, &buf[1]); // skip the first tab char fstype_list = (char **) realloc(fstype_list, ++n * sizeof(*fstype_list)); fstype_list[n-1] = fstype; } } fclose(f); if (n) { fstype_list = (char **)realloc(fstype_list, ++n * sizeof(*fstype_list)); fstype_list[n-1] = NULL; } } } static int mount_cdrom(cd_drive drive) { char **fstype; if (drive->fd != -1) { close(drive->fd); drive->fd = -1; } for (fstype = fstype_list; *fstype; fstype++) { if (!mount(drive->dev, drive->mnt, *fstype, MS_RDONLY | MS_NOSUID | MS_NODEV | MS_NOEXEC, NULL)) return 1; } return 0; } static cd_drive * load_mnts(int init) { cd_drive drive, *drives; char buf[PATH_MAX], *tmp; int n; FILE *f; if (!mntlock()) return NULL; drives = NULL; n = 0; f = fopen("/etc/mnts", "r"); if (f) { while (!feof(f)) { if (!fgets(buf, sizeof(buf), f)) continue; if ((tmp = strchr(buf, '\n'))) *tmp = '\0'; if (!(tmp = strchr(buf, '\t'))) continue; *tmp++ = '\0'; if (strncmp(buf, "/dev/cdrom", sizeof("/dev/cdrom")-1)) continue; drive = (cd_drive) malloc(sizeof(*drive)); drive->dev = malloc (strlen (buf) + 1); strcpy (drive->dev, buf); drive->mnt = malloc (strlen (tmp) + 1); strcpy(drive->mnt, tmp); drive->fd = -1; if (init) { if (is_cdrom_mounted(drive)) umount_cdrom(drive); drive->status = CDS_NO_DISC; } else { drive->status = is_cdrom_mounted(drive) ? CDS_DISC_OK : CDS_NO_DISC; } drives = (cd_drive *)realloc(drives, ++n * sizeof(*drives)); drives[n-1] = drive; } fclose(f); if (n) { drives = (cd_drive *)realloc(drives, ++n * sizeof(*drives)); drives[n-1] = NULL; } } mntunlock(); return drives; } int main (int argc, char **argv) { cd_drive drive, *drives, *ptr; char **file_exts, **playlist_exts, **img_exts; char *filename; char *play_dvd_cmd; struct stat st; struct stat st_ap; int n, status, speed=0, off_silent=0; time_t last_mtime = 0; char system_buf[BUF_LEN]; filename = (char *) malloc (PATH_MAX + 10); fullname_maxlen = 1024; fullname = (char *) malloc (fullname_maxlen); if (!(argc&1)) speed = atoi (argv[argc-1]); load_proc_filesystems (); file_exts = get_extensions ("/etc/file_ext"); playlist_exts = get_extensions ("/etc/list_ext"); img_exts = get_extensions ("/etc/img_ext"); if (!fstype_list || !file_exts || !playlist_exts || !img_exts) return 2; if (!stat ("/var/use_dxr3", &st) && S_ISREG (st.st_mode)) play_dvd_cmd = "set_option dvd-device %s \nquit 167\n"; else play_dvd_cmd = "set_option dvd-device %s \nmenu hide\nplay_dvd\n"; drives = load_mnts(1); if (!drives) return 3; while (1) { usleep(1000000); if (!stat("/var/autoplay", &st_ap)) off_silent=0; else off_silent=1; if (!stat("/etc/mnts", &st) && st.st_mtime != last_mtime) { if (drives) { for (ptr=drives, drive=*ptr; drive; ptr++, drive=*ptr) { if (drive->fd >= 0) close(drive->fd); free(drive->dev); free(drive->mnt); free(drive); } free(drives); } drives = load_mnts(0); if (!drives) continue; last_mtime = st.st_mtime; } for (ptr=drives, drive=*ptr; drive; ptr++, drive=*ptr) { if (drive->status == CDS_NO_INFO) continue; if (drive->fd < 0 && (drive->fd = open_device(drive->dev)) < 0) continue; status = ioctl (drive->fd, CDROM_DRIVE_STATUS, CDSL_CURRENT); switch (status) { case CDS_DISC_OK: if (drive->status != status) { /* a media as been inserted */ drive->status = status; if (speed > 1 && speed < 100) ioctl (drive->fd, CDROM_SELECT_SPEED, speed); status = ioctl (drive->fd, CDROM_DISC_STATUS, CDSL_CURRENT); switch (status) { case CDS_AUDIO: /* it's an audio CD */ sprintf(system_buf, "mp_set_option cdda-device %s", drive->dev); system(system_buf); if (!off_silent) printf("set_option cdda-device %s\nmenu hide\nplay_cdda\n", drive->dev); break; case CDS_NO_INFO: /* no information, but try to mount and detect */ case CDS_DATA_1: case CDS_DATA_2: /* it's a data CD */ if (!mount_cdrom(drive)) break; sprintf (filename, "%s/video_ts", drive->mnt); if (!stat (filename, &st) && S_ISDIR (st.st_mode)) { sprintf(system_buf, "mp_set_option dvd-device %s", drive->dev); system(system_buf); if (!off_silent) printf(play_dvd_cmd, drive->dev); break; } sprintf (filename, "%s/VIDEO_TS", drive->mnt); if (!stat (filename, &st) && S_ISDIR (st.st_mode)) { sprintf(system_buf, "mp_set_option dvd-device %s", drive->dev); system(system_buf); if (!off_silent) printf(play_dvd_cmd, drive->dev); break; } sprintf (filename, "%s/vcd", drive->mnt); if (!stat (filename, &st) && S_ISDIR (st.st_mode)) { sprintf(system_buf, "mp_set_option vcd-device %s", drive->dev); system(system_buf); if (!off_silent) printf("set_option vcd-device %s\nmenu hide\nplay_vcd\n", drive->dev); break; } sprintf (filename, "%s/svcd", drive->mnt); if (!stat (filename, &st) && S_ISDIR (st.st_mode)) { sprintf(system_buf, "mp_set_option vcd-device %s", drive->dev); system(system_buf); if (!off_silent) printf("set_option vcd-device %s\nmenu hide\nplay_vcd\n", drive->dev); break; } exts=playlist_exts; if (build_playlist (drive->mnt, -1) == 1) { escape_playlist(playlist, 0); if (!off_silent) printf ("menu hide\nloadlist '%s'\n", playlist); } else { char *playlist = "/tmp/playlist.pls"; int fd = open (playlist, O_CREAT|O_TRUNC|O_WRONLY, S_IRUSR|S_IWUSR); if (fd < 0) return 1; exts=file_exts; n = build_playlist (drive->mnt, fd); if (n > 0) if (!off_silent) printf ("menu hide\nloadlist %s\n", playlist); close (fd); if (n <= 0) { exts=img_exts; if (build_playlist (drive->mnt, -1) > 0) { escape_playlist(drive->mnt, 1); if (!off_silent) printf ("run 'view_img -r \\'%s\\''\n", playlist); } else { exts=xcd_exts; if (build_playlist (drive->mnt, -1) >= 1) sprintf(system_buf, "mp_set_option vcd-device %s", drive->dev); system(system_buf); if (!off_silent) printf ("set_option vcd-device %s\nmenu hide\nplay_vcd\n", drive->dev); } } } break; case CDS_MIXED: sprintf(system_buf, "mp_set_option cdda-device %s", drive->dev); system(system_buf); if (!off_silent) printf("set_option cdda-device %s\nmenu hide\nplay_cdda\n", drive->dev); case CDS_XA_2_1: case CDS_XA_2_2: /* it's a special CD */ mount_cdrom(drive); break; case CDS_NO_DISC: /* no disc, refresh the drive. */ default: drive->status = CDS_NO_DISC; close(drive->fd); drive->fd = -1; break; } fflush (stdout); } break; case -1: /* close the fd on ioctl failure, should never happen */ case CDS_NO_INFO: /* Drive do not support status request :-( */ close(drive->fd); drive->fd = -1; default: /* the media as been ejected */ if (drive->status != status) { drive->status = status; umount_cdrom(drive); } } } } free_extensions (file_exts); free_extensions (playlist_exts); return 0; } geexbox-1.1/packages/bftpd/0000755000175000017500000000000010641745504013771 5ustar benbengeexbox-1.1/packages/bftpd/build0000755000175000017500000000042110641745504015013 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain cd $BUILD/$1* ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --without-debug \ --without-pax \ --without-libz \ --without-pam make LDFLAGS="$LDFLAGS" geexbox-1.1/packages/bftpd/config/0000755000175000017500000000000010641745504015236 5ustar benbengeexbox-1.1/packages/bftpd/config/bftpd.conf0000644000175000017500000000040010641745504017176 0ustar benbenglobal { PORT="21" HELLO_STRING="Welcome to GeeXboX's FTP Server." AUTO_CHDIR="/" DO_CHROOT="no" RATIO="none" XFER_BUFSIZE="64000" AUTH="PASSWD" FILE_AUTH="/etc/bftpdpwd" PRE_WRITE_SCRIPT="/usr/bin/rw" POST_WRITE_SCRIPT="/usr/bin/ro" } geexbox-1.1/packages/bftpd/config/ftp0000644000175000017500000000006410641745504015752 0ustar benben# FTP Authentication USERNAME=geexbox PASSWORD=ftp geexbox-1.1/packages/bftpd/init.d/0000755000175000017500000000000010641745504015156 5ustar benbengeexbox-1.1/packages/bftpd/init.d/54_ftp0000755000175000017500000000052510641745504016207 0ustar benben#!/bin/sh # # start ftp server # # runlevels: geexbox, debug # get options test -f /etc/network || exit 1 . /etc/network if test "$FTP_SERVER" = "yes" -a -f /etc/bftpd.conf -a -f /etc/ftp; then echo "### Starting FTP server ###" . /etc/ftp echo "$USERNAME $PASSWORD root /" > /etc/bftpdpwd bftpd -d -c /etc/bftpd.conf & fi exit 0 geexbox-1.1/packages/bftpd/install0000755000175000017500000000030310641745504015361 0ustar benben#!/bin/sh . config/options mkdir -p $INSTALL/usr/bin mkdir -p $INSTALL/etc cp $BUILD/$1*/$1 $INSTALL/usr/bin cp $PACKAGES/$1/config/$1.conf $INSTALL/etc cp $PACKAGES/$1/config/ftp $INSTALL/etc geexbox-1.1/packages/bftpd/url0000644000175000017500000000010210641745504014507 0ustar benbenhttp://bftpd.sourceforge.net/downloads/testing/bftpd-1.8.4.tar.gz geexbox-1.1/packages/binutils/0000755000175000017500000000000010641745504014523 5ustar benbengeexbox-1.1/packages/binutils/build0000755000175000017500000000056310641745504015554 0ustar benben#!/bin/sh . config/options $SCRIPTS/install ccache setup_toolchain host cd $BUILD/$1* mkdir -p objdir cd objdir ../configure --host=$HOST_NAME \ --build=$HOST_NAME \ --target=$TARGET_NAME \ --prefix=$ROOT/$TOOLCHAIN \ --with-sysroot=$SYSROOT_PREFIX \ --disable-werror \ --disable-nls make geexbox-1.1/packages/binutils/install0000755000175000017500000000015710641745504016122 0ustar benben#!/bin/sh . config/options make -C $BUILD/$1*/objdir install cp $PACKAGES/$1/scripts/libstrip $TOOLCHAIN/bin geexbox-1.1/packages/binutils/patches/0000755000175000017500000000000010641745504016152 5ustar benbengeexbox-1.1/packages/binutils/patches/10_uclibc-conf.diff0000644000175000017500000000702110641745504021470 0ustar benben--- binutils-2.16.91.0.7/bfd/configure +++ binutils-2.16.91.0.7/bfd/configure @@ -3576,7 +3576,7 @@ ;; # This must be Linux ELF. -linux-gnu*) +linux-gnu*|linux-uclibc*) lt_cv_deplibs_check_method=pass_all ;; --- binutils-2.16.91.0.7/binutils/configure +++ binutils-2.16.91.0.7/binutils/configure @@ -3411,7 +3411,7 @@ ;; # This must be Linux ELF. -linux-gnu*) +linux-gnu*|linux-uclibc*) lt_cv_deplibs_check_method=pass_all ;; --- binutils-2.16.91.0.7/configure +++ binutils-2.16.91.0.7/configure @@ -1270,7 +1270,7 @@ am33_2.0-*-linux*) noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss" ;; - sh-*-linux*) + sh*-*-linux*) noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss" ;; sh*-*-pe|mips*-*-pe|*arm-wince-pe) @@ -1578,7 +1578,7 @@ romp-*-*) noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}" ;; - sh-*-* | sh64-*-*) + sh*-*-* | sh64-*-*) case "${host}" in i[3456789]86-*-vsta) ;; # don't add gprof back in i[3456789]86-*-go32*) ;; # don't add gprof back in --- binutils-2.16.91.0.7/configure.in +++ binutils-2.16.91.0.7/configure.in @@ -468,7 +468,7 @@ am33_2.0-*-linux*) noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss" ;; - sh-*-linux*) + sh*-*-linux*) noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss" ;; sh*-*-pe|mips*-*-pe|*arm-wince-pe) @@ -776,7 +776,7 @@ romp-*-*) noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}" ;; - sh-*-* | sh64-*-*) + sh*-*-* | sh64-*-*) case "${host}" in i[[3456789]]86-*-vsta) ;; # don't add gprof back in i[[3456789]]86-*-go32*) ;; # don't add gprof back in --- binutils-2.16.91.0.7/gas/configure +++ binutils-2.16.91.0.7/gas/configure @@ -3411,7 +3411,7 @@ ;; # This must be Linux ELF. -linux-gnu*) +linux-gnu*|linux-uclibc*) lt_cv_deplibs_check_method=pass_all ;; --- binutils-2.16.91.0.7/gprof/configure +++ binutils-2.16.91.0.7/gprof/configure @@ -3419,6 +3419,11 @@ lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` ;; +linux-uclibc*) + lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` + ;; + netbsd* | knetbsd*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' --- binutils-2.16.91.0.7/ld/configure +++ binutils-2.16.91.0.7/ld/configure @@ -3413,7 +3413,7 @@ ;; # This must be Linux ELF. -linux-gnu*) +linux-gnu*|linux-uclibc*) lt_cv_deplibs_check_method=pass_all ;; --- binutils-2.16.91.0.7/libtool.m4 +++ binutils-2.16.91.0.7/libtool.m4 @@ -739,7 +739,7 @@ ;; # This must be Linux ELF. -linux-gnu*) +linux-gnu*|linux-uclibc*) lt_cv_deplibs_check_method=pass_all ;; --- binutils-2.16.91.0.7/ltconfig +++ binutils-2.16.91.0.7/ltconfig @@ -602,6 +602,7 @@ # Transform linux* to *-*-linux-gnu*, to support old configure scripts. case $host_os in +linux-uclibc*) ;; linux-gnu*) ;; linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` esac @@ -1247,7 +1248,7 @@ ;; # This must be Linux ELF. -linux-gnu*) +linux-gnu*|linux-uclibc*) version_type=linux need_lib_prefix=no need_version=no --- binutils-2.16.91.0.7/opcodes/configure +++ binutils-2.16.91.0.7/opcodes/configure @@ -3579,7 +3579,7 @@ ;; # This must be Linux ELF. -linux-gnu*) +linux-gnu*|linux-uclibc*) lt_cv_deplibs_check_method=pass_all ;; geexbox-1.1/packages/binutils/scripts/0000755000175000017500000000000010641745504016212 5ustar benbengeexbox-1.1/packages/binutils/scripts/libstrip0000755000175000017500000000220710641745504017771 0ustar benben#!/bin/sh . config/options REAL_ARCH=$TARGET_ARCH [ $TARGET_ARCH = "powerpc" ] && REAL_ARCH=ppc LIB=$1 LIBA=$2 PROG=$3 SO=$4 PROG_SYMS=$5 LDSCRIPT=`ls $ROOT/$TOOLCHAIN/$TARGET_NAME/lib/ldscripts/elf*$REAL_ARCH.xs` if [ ! -f $LIBA ]; then echo "ERROR $LIBA doesn't exists." exit 1 fi if [ -f $LIB -a $LIB -nt $LIBA ]; then for i in $PROG $LDSCRIPT $0; do [ $i -nt $LIB ] && NEED_TO_STRIP=yes && break done [ "$NEED_TO_STRIP" = yes ] || exit 0 fi echo -n "stripping $LIB ..." for i in $SO; do SO_SYMS="$SO_SYMS `$TARGET_NM --dynamic $i | sed -n 's/^........ [ABDGTW] \(..*\)/\1/p'`" done for i in $PROG; do if [ -f $i ]; then for j in `$TARGET_NM --dynamic $i | sed -n 's/^........ [BUV] \(..*\)/\1/p'`; do (echo "$SO_SYMS" | grep $j >/dev/null) || (echo "$PROG_SYMS" | grep $j >/dev/null) || PROG_SYMS="$PROG_SYMS $j" done fi done echo "INCLUDE $LDSCRIPT" > /tmp/ldscript for i in $PROG_SYMS; do echo "EXTERN($i)" >> /tmp/ldscript done [ "$DEBUG" != yes ] && SFLAG=-s $TARGET_CC $SFLAG -Wl,-warn-common -shared -o $LIB -Wl,-soname,`basename $LIB` -Wl,--script=/tmp/ldscript $LIBA echo " done" rm -f /tmp/ldscript geexbox-1.1/packages/binutils/url0000644000175000017500000000006610641745504015252 0ustar benbenhttp://ftp.gnu.org/gnu/binutils/binutils-2.17.tar.bz2 geexbox-1.1/packages/bootsplash/0000755000175000017500000000000010641745504015050 5ustar benbengeexbox-1.1/packages/bootsplash/build0000755000175000017500000000023610641745504016076 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain setup_toolchain host make -C $BUILD/$1*/Utilities \ CC=$CC \ CFLAGS="$CFLAGS" \ splash geexbox-1.1/packages/bootsplash/patches/0000755000175000017500000000000010641745504016477 5ustar benbengeexbox-1.1/packages/bootsplash/patches/10_nosilentjpeg.diff0000644000175000017500000000105410641745504022332 0ustar benben--- bootsplash-3.1.orig/Utilities/splash.c 2004-09-20 20:54:42.832461640 +0200 +++ bootsplash-3.1/Utilities/splash.c 2004-09-20 23:49:27.094611528 +0200 @@ -517,13 +517,13 @@ exit(1); } fclose(sfp); - if (sboxcount) - memmove(pic + 47 + l + boxcount * 12, - sboxes, sboxcount * 12); - silentl += sboxcount * 12; - l += silentl; } fclose(fp); + if (sboxcount) + memmove(pic + 47 + l + boxcount * 12, + sboxes, sboxcount * 12); + silentl += sboxcount * 12; + l += silentl; } else { l = 0; pic = calloc(47, 1); geexbox-1.1/packages/bootsplash/url0000644000175000017500000000012410641745504015572 0ustar benbenftp://ftp.openbios.org/pub/bootsplash/rpm-sources/bootsplash/bootsplash-3.1.tar.bz2 geexbox-1.1/packages/busybox/0000755000175000017500000000000010641745504014365 5ustar benbengeexbox-1.1/packages/busybox/build0000755000175000017500000000013710641745504015413 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain cd $BUILD/$1* ARCH=$TARGET_ARCH make $1 geexbox-1.1/packages/busybox/config/0000755000175000017500000000000010641745504015632 5ustar benbengeexbox-1.1/packages/busybox/config/busybox.conf0000644000175000017500000004615710641745504020211 0ustar benben# # Automatically generated make config: don't edit # Busybox version: 1.5.0 # Sat Mar 24 00:02:53 2007 # CONFIG_HAVE_DOT_CONFIG=y # # Busybox Settings # # # General Configuration # CONFIG_NITPICK=y # CONFIG_DESKTOP is not set # CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y # CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set # CONFIG_SHOW_USAGE is not set # CONFIG_FEATURE_VERBOSE_USAGE is not set # CONFIG_FEATURE_COMPRESS_USAGE is not set CONFIG_FEATURE_INSTALLER=y # CONFIG_LOCALE_SUPPORT is not set CONFIG_GETOPT_LONG=y # CONFIG_FEATURE_DEVPTS is not set # CONFIG_FEATURE_CLEAN_UP is not set # CONFIG_FEATURE_SUID is not set CONFIG_FEATURE_SYSLOG=y # CONFIG_FEATURE_SUID_CONFIG is not set # CONFIG_FEATURE_SUID_CONFIG_QUIET is not set CONFIG_FEATURE_HAVE_RPC=y # CONFIG_SELINUX is not set # CONFIG_FEATURE_EXEC_PREFER_APPLETS is not set CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" # # Build Options # # CONFIG_STATIC is not set # CONFIG_BUILD_LIBBUSYBOX is not set # CONFIG_FEATURE_FULL_LIBBUSYBOX is not set # CONFIG_FEATURE_SHARED_BUSYBOX is not set CONFIG_LFS=y # CONFIG_BUILD_AT_ONCE is not set # # Debugging Options # # CONFIG_DEBUG is not set # CONFIG_WERROR is not set # CONFIG_NO_DEBUG_LIB is not set # CONFIG_DMALLOC is not set # CONFIG_EFENCE is not set # CONFIG_INCLUDE_SUSv2 is not set # # Installation Options # # CONFIG_INSTALL_NO_USR is not set CONFIG_INSTALL_APPLET_SYMLINKS=y # CONFIG_INSTALL_APPLET_HARDLINKS is not set # CONFIG_INSTALL_APPLET_DONT is not set CONFIG_PREFIX="./_install" # # Busybox Library Tuning # CONFIG_PASSWORD_MINLEN=6 CONFIG_MD5_SIZE_VS_SPEED=1 CONFIG_FEATURE_EDITING=y # CONFIG_FEATURE_EDITING_FANCY_KEYS is not set # CONFIG_FEATURE_EDITING_VI is not set CONFIG_FEATURE_EDITING_HISTORY=15 # CONFIG_FEATURE_EDITING_SAVEHISTORY is not set CONFIG_FEATURE_TAB_COMPLETION=y # CONFIG_FEATURE_USERNAME_COMPLETION is not set # CONFIG_FEATURE_EDITING_FANCY_PROMPT is not set # # Applets # # # Archival Utilities # # CONFIG_AR is not set # CONFIG_FEATURE_AR_LONG_FILENAMES is not set # CONFIG_BUNZIP2 is not set # CONFIG_CPIO is not set # CONFIG_DPKG is not set # CONFIG_DPKG_DEB is not set # CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set # CONFIG_GUNZIP is not set # CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set # CONFIG_GZIP is not set # CONFIG_RPM2CPIO is not set # CONFIG_RPM is not set CONFIG_TAR=y # CONFIG_FEATURE_TAR_CREATE is not set # CONFIG_FEATURE_TAR_BZIP2 is not set CONFIG_FEATURE_TAR_LZMA=y # CONFIG_FEATURE_TAR_FROM is not set CONFIG_FEATURE_TAR_GZIP=y # CONFIG_FEATURE_TAR_COMPRESS is not set # CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y # CONFIG_FEATURE_TAR_LONG_OPTIONS is not set # CONFIG_UNCOMPRESS is not set CONFIG_UNLZMA=y CONFIG_FEATURE_LZMA_FAST=y # CONFIG_UNZIP is not set # # Common options for cpio and tar # # CONFIG_FEATURE_UNARCHIVE_TAPE is not set # CONFIG_FEATURE_DEB_TAR_GZ is not set # CONFIG_FEATURE_DEB_TAR_BZ2 is not set # CONFIG_FEATURE_DEB_TAR_LZMA is not set # # Coreutils # # CONFIG_BASENAME is not set # CONFIG_CAL is not set CONFIG_CAT=y # CONFIG_CATV is not set # CONFIG_CHGRP is not set # CONFIG_CHMOD is not set # CONFIG_CHOWN is not set # CONFIG_CHROOT is not set # CONFIG_CKSUM is not set # CONFIG_CMP is not set # CONFIG_COMM is not set CONFIG_CP=y CONFIG_CUT=y CONFIG_DATE=y # CONFIG_FEATURE_DATE_ISOFMT is not set # CONFIG_DD is not set # CONFIG_FEATURE_DD_SIGNAL_HANDLING is not set # CONFIG_FEATURE_DD_IBS_OBS is not set # CONFIG_DF is not set # CONFIG_DIFF is not set # CONFIG_FEATURE_DIFF_BINARY is not set # CONFIG_FEATURE_DIFF_DIR is not set # CONFIG_FEATURE_DIFF_MINIMAL is not set # CONFIG_DIRNAME is not set # CONFIG_DOS2UNIX is not set # CONFIG_UNIX2DOS is not set # CONFIG_DU is not set # CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K is not set CONFIG_ECHO=y CONFIG_FEATURE_FANCY_ECHO=y CONFIG_ENV=y # CONFIG_FEATURE_ENV_LONG_OPTIONS is not set # CONFIG_EXPR is not set # CONFIG_EXPR_MATH_SUPPORT_64 is not set # CONFIG_FALSE is not set # CONFIG_FOLD is not set CONFIG_HEAD=y # CONFIG_FEATURE_FANCY_HEAD is not set # CONFIG_HOSTID is not set # CONFIG_ID is not set # CONFIG_INSTALL is not set # CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set # CONFIG_LENGTH is not set CONFIG_LN=y # CONFIG_LOGNAME is not set CONFIG_LS=y # CONFIG_FEATURE_LS_FILETYPES is not set # CONFIG_FEATURE_LS_FOLLOWLINKS is not set # CONFIG_FEATURE_LS_RECURSIVE is not set CONFIG_FEATURE_LS_SORTFILES=y # CONFIG_FEATURE_LS_TIMESTAMPS is not set # CONFIG_FEATURE_LS_USERNAME is not set # CONFIG_FEATURE_LS_COLOR is not set # CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set # CONFIG_MD5SUM is not set CONFIG_MKDIR=y # CONFIG_FEATURE_MKDIR_LONG_OPTIONS is not set CONFIG_MKFIFO=y # CONFIG_MKNOD is not set CONFIG_MV=y # CONFIG_FEATURE_MV_LONG_OPTIONS is not set # CONFIG_NICE is not set # CONFIG_NOHUP is not set # CONFIG_OD is not set # CONFIG_PRINTENV is not set # CONFIG_PRINTF is not set # CONFIG_PWD is not set # CONFIG_REALPATH is not set CONFIG_RM=y CONFIG_RMDIR=y # CONFIG_SEQ is not set # CONFIG_SHA1SUM is not set CONFIG_SLEEP=y # CONFIG_FEATURE_FANCY_SLEEP is not set CONFIG_SORT=y # CONFIG_FEATURE_SORT_BIG is not set # CONFIG_STAT is not set # CONFIG_FEATURE_STAT_FORMAT is not set # CONFIG_STTY is not set # CONFIG_SUM is not set # CONFIG_SYNC is not set CONFIG_TAIL=y # CONFIG_FEATURE_FANCY_TAIL is not set # CONFIG_TEE is not set # CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set CONFIG_TEST=y # CONFIG_FEATURE_TEST_64 is not set # CONFIG_TOUCH is not set # CONFIG_TR is not set # CONFIG_FEATURE_TR_CLASSES is not set # CONFIG_FEATURE_TR_EQUIV is not set # CONFIG_TRUE is not set # CONFIG_TTY is not set # CONFIG_UNAME is not set CONFIG_UNIQ=y # CONFIG_USLEEP is not set # CONFIG_UUDECODE is not set # CONFIG_UUENCODE is not set # CONFIG_WATCH is not set # CONFIG_WC is not set # CONFIG_FEATURE_WC_LARGE is not set # CONFIG_WHO is not set # CONFIG_WHOAMI is not set # CONFIG_YES is not set # # Common options for cp and mv # # CONFIG_FEATURE_PRESERVE_HARDLINKS is not set # # Common options for ls, more and telnet # # CONFIG_FEATURE_AUTOWIDTH is not set # # Common options for df, du, ls # # CONFIG_FEATURE_HUMAN_READABLE is not set # CONFIG_FEATURE_MD5_SHA1_SUM_CHECK is not set # # Console Utilities # CONFIG_CHVT=y # CONFIG_CLEAR is not set # CONFIG_DEALLOCVT is not set # CONFIG_DUMPKMAP is not set # CONFIG_LOADFONT is not set CONFIG_LOADKMAP=y # CONFIG_OPENVT is not set # CONFIG_RESET is not set # CONFIG_RESIZE is not set # CONFIG_FEATURE_RESIZE_PRINT is not set # CONFIG_SETCONSOLE is not set # CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set # CONFIG_SETKEYCODES is not set # CONFIG_SETLOGCONS is not set # # Debian Utilities # # CONFIG_MKTEMP is not set # CONFIG_PIPE_PROGRESS is not set # CONFIG_READLINK is not set # CONFIG_FEATURE_READLINK_FOLLOW is not set # CONFIG_RUN_PARTS is not set # CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set # CONFIG_START_STOP_DAEMON is not set # CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set # CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set # CONFIG_WHICH is not set # # Editors # # CONFIG_AWK is not set # CONFIG_FEATURE_AWK_MATH is not set # CONFIG_ED is not set # CONFIG_PATCH is not set CONFIG_SED=y # CONFIG_VI is not set # CONFIG_FEATURE_VI_COLON is not set # CONFIG_FEATURE_VI_YANKMARK is not set # CONFIG_FEATURE_VI_SEARCH is not set # CONFIG_FEATURE_VI_USE_SIGNALS is not set # CONFIG_FEATURE_VI_DOT_CMD is not set # CONFIG_FEATURE_VI_READONLY is not set # CONFIG_FEATURE_VI_SETOPTS is not set # CONFIG_FEATURE_VI_SET is not set # CONFIG_FEATURE_VI_WIN_RESIZE is not set # CONFIG_FEATURE_VI_OPTIMIZE_CURSOR is not set # CONFIG_FEATURE_ALLOW_EXEC is not set # # Finding Utilities # CONFIG_FIND=y # CONFIG_FEATURE_FIND_PRINT0 is not set # CONFIG_FEATURE_FIND_MTIME is not set # CONFIG_FEATURE_FIND_MMIN is not set # CONFIG_FEATURE_FIND_PERM is not set # CONFIG_FEATURE_FIND_TYPE is not set # CONFIG_FEATURE_FIND_XDEV is not set # CONFIG_FEATURE_FIND_NEWER is not set # CONFIG_FEATURE_FIND_INUM is not set # CONFIG_FEATURE_FIND_EXEC is not set # CONFIG_FEATURE_FIND_USER is not set # CONFIG_FEATURE_FIND_NOT is not set CONFIG_GREP=y # CONFIG_FEATURE_GREP_EGREP_ALIAS is not set # CONFIG_FEATURE_GREP_FGREP_ALIAS is not set CONFIG_FEATURE_GREP_CONTEXT=y # CONFIG_XARGS is not set # CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set # CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set # CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set # CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set # # Init Utilities # # CONFIG_INIT is not set # CONFIG_DEBUG_INIT is not set # CONFIG_FEATURE_USE_INITTAB is not set # CONFIG_FEATURE_INIT_SCTTY is not set # CONFIG_FEATURE_INIT_SYSLOG is not set # CONFIG_FEATURE_EXTRA_QUIET is not set # CONFIG_FEATURE_INIT_COREDUMPS is not set # CONFIG_FEATURE_INITRD is not set CONFIG_HALT=y # CONFIG_MESG is not set # # Login/Password Management Utilities # # CONFIG_FEATURE_SHADOWPASSWDS is not set # CONFIG_USE_BB_SHADOW is not set CONFIG_USE_BB_PWD_GRP=y # CONFIG_ADDGROUP is not set # CONFIG_DELGROUP is not set # CONFIG_ADDUSER is not set # CONFIG_DELUSER is not set # CONFIG_GETTY is not set # CONFIG_FEATURE_UTMP is not set # CONFIG_FEATURE_WTMP is not set # CONFIG_LOGIN is not set # CONFIG_LOGIN_SCRIPTS is not set # CONFIG_FEATURE_SECURETTY is not set # CONFIG_PASSWD is not set # CONFIG_FEATURE_PASSWD_WEAK_CHECK is not set # CONFIG_SU is not set # CONFIG_FEATURE_SU_SYSLOG is not set # CONFIG_FEATURE_SU_CHECKS_SHELLS is not set # CONFIG_SULOGIN is not set # CONFIG_VLOCK is not set # # Linux Ext2 FS Progs # # CONFIG_CHATTR is not set # CONFIG_FSCK is not set # CONFIG_LSATTR is not set # # Linux Ext2 FS Progs # # CONFIG_CHATTR is not set # CONFIG_E2FSCK is not set # CONFIG_FSCK is not set # CONFIG_LSATTR is not set CONFIG_MKE2FS=y # CONFIG_TUNE2FS is not set # CONFIG_E2LABEL is not set # CONFIG_FINDFS is not set # # Linux Module Utilities # CONFIG_INSMOD=y # CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set # CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set # CONFIG_FEATURE_INSMOD_LOADINKMEM is not set # CONFIG_FEATURE_INSMOD_LOAD_MAP is not set # CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set CONFIG_RMMOD=y # CONFIG_LSMOD is not set # CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set CONFIG_MODPROBE=y CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y # CONFIG_FEATURE_MODPROBE_FANCY_ALIAS is not set # # Options common to multiple modutils # CONFIG_FEATURE_CHECK_TAINTED_MODULE=y # CONFIG_FEATURE_2_4_MODULES is not set CONFIG_FEATURE_2_6_MODULES=y # CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set # # Linux System Utilities # CONFIG_DMESG=y # CONFIG_FEATURE_DMESG_PRETTY is not set CONFIG_FBSET=y # CONFIG_FEATURE_FBSET_FANCY is not set # CONFIG_FEATURE_FBSET_READMODE is not set # CONFIG_FDFLUSH is not set # CONFIG_FDFORMAT is not set # CONFIG_FDISK is not set CONFIG_FDISK_SUPPORT_LARGE_DISKS=y # CONFIG_FEATURE_FDISK_WRITABLE is not set # CONFIG_FEATURE_AIX_LABEL is not set # CONFIG_FEATURE_SGI_LABEL is not set # CONFIG_FEATURE_SUN_LABEL is not set # CONFIG_FEATURE_OSF_LABEL is not set # CONFIG_FEATURE_FDISK_ADVANCED is not set # CONFIG_FREERAMDISK is not set # CONFIG_FSCK_MINIX is not set # CONFIG_MKFS_MINIX is not set # CONFIG_FEATURE_MINIX2 is not set # CONFIG_GETOPT is not set # CONFIG_HEXDUMP is not set # CONFIG_HWCLOCK is not set # CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS is not set # CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set # CONFIG_IPCRM is not set # CONFIG_IPCS is not set # CONFIG_LOSETUP is not set # CONFIG_MDEV is not set # CONFIG_FEATURE_MDEV_CONF is not set # CONFIG_FEATURE_MDEV_EXEC is not set # CONFIG_MKSWAP is not set # CONFIG_FEATURE_MKSWAP_V0 is not set # CONFIG_MORE is not set # CONFIG_FEATURE_USE_TERMIOS is not set CONFIG_MOUNT=y CONFIG_FEATURE_MOUNT_NFS=y CONFIG_FEATURE_MOUNT_CIFS=y CONFIG_FEATURE_MOUNT_FLAGS=y # CONFIG_FEATURE_MOUNT_FSTAB is not set CONFIG_PIVOT_ROOT=y # CONFIG_RDATE is not set # CONFIG_READPROFILE is not set # CONFIG_SETARCH is not set # CONFIG_SWAPONOFF is not set # CONFIG_SWITCH_ROOT is not set CONFIG_UMOUNT=y # CONFIG_FEATURE_UMOUNT_ALL is not set # # Common options for mount/umount # # CONFIG_FEATURE_MOUNT_LOOP is not set # CONFIG_FEATURE_MTAB_SUPPORT is not set # # Miscellaneous Utilities # # CONFIG_ADJTIMEX is not set # CONFIG_BBCONFIG is not set # CONFIG_CHRT is not set # CONFIG_CROND is not set # CONFIG_DEBUG_CROND_OPTION is not set # CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set # CONFIG_CRONTAB is not set # CONFIG_DC is not set # CONFIG_DEVFSD is not set # CONFIG_DEVFSD_MODLOAD is not set # CONFIG_DEVFSD_FG_NP is not set # CONFIG_DEVFSD_VERBOSE is not set # CONFIG_FEATURE_DEVFS is not set CONFIG_EJECT=y # CONFIG_LAST is not set # CONFIG_LESS is not set CONFIG_FEATURE_LESS_MAXLINES=9999999 # CONFIG_FEATURE_LESS_BRACKETS is not set # CONFIG_FEATURE_LESS_FLAGS is not set # CONFIG_FEATURE_LESS_FLAGCS is not set # CONFIG_FEATURE_LESS_MARKS is not set # CONFIG_FEATURE_LESS_REGEXP is not set CONFIG_HDPARM=y # CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set # CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set # CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set # CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set # CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set # CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set # CONFIG_MAKEDEVS is not set # CONFIG_FEATURE_MAKEDEVS_LEAF is not set # CONFIG_FEATURE_MAKEDEVS_TABLE is not set # CONFIG_MOUNTPOINT is not set # CONFIG_MT is not set # CONFIG_NMETER is not set # CONFIG_RAIDAUTORUN is not set # CONFIG_READAHEAD is not set # CONFIG_RUNLEVEL is not set # CONFIG_RX is not set # CONFIG_STRINGS is not set # CONFIG_SETSID is not set # CONFIG_TASKSET is not set # CONFIG_FEATURE_TASKSET_FANCY is not set # CONFIG_TIME is not set # CONFIG_WATCHDOG is not set # # Networking Utilities # # CONFIG_FEATURE_IPV6 is not set # CONFIG_VERBOSE_RESOLUTION_ERRORS is not set # CONFIG_ARP is not set # CONFIG_ARPING is not set # CONFIG_DNSD is not set # CONFIG_ETHER_WAKE is not set # CONFIG_FAKEIDENTD is not set # CONFIG_FTPGET is not set # CONFIG_FTPPUT is not set # CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set # CONFIG_HOSTNAME is not set CONFIG_HTTPD=y # CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set # CONFIG_FEATURE_HTTPD_SETUID is not set CONFIG_FEATURE_HTTPD_BASIC_AUTH=y # CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set # CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set CONFIG_FEATURE_HTTPD_CGI=y # CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set # CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set # CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set CONFIG_IFCONFIG=y # CONFIG_FEATURE_IFCONFIG_STATUS is not set # CONFIG_FEATURE_IFCONFIG_SLIP is not set # CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set # CONFIG_FEATURE_IFCONFIG_HW is not set # CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set # CONFIG_IFUPDOWN is not set # CONFIG_FEATURE_IFUPDOWN_IP is not set # CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set # CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set # CONFIG_FEATURE_IFUPDOWN_IPV4 is not set # CONFIG_FEATURE_IFUPDOWN_IPV6 is not set # CONFIG_FEATURE_IFUPDOWN_IPX is not set # CONFIG_FEATURE_IFUPDOWN_MAPPING is not set # CONFIG_INETD is not set # CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set # CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set # CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set # CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set # CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set # CONFIG_FEATURE_INETD_RPC is not set # CONFIG_IP is not set # CONFIG_FEATURE_IP_ADDRESS is not set # CONFIG_FEATURE_IP_LINK is not set # CONFIG_FEATURE_IP_ROUTE is not set # CONFIG_FEATURE_IP_TUNNEL is not set # CONFIG_FEATURE_IP_RULE is not set # CONFIG_FEATURE_IP_SHORT_FORMS is not set # CONFIG_IPADDR is not set # CONFIG_IPLINK is not set # CONFIG_IPROUTE is not set # CONFIG_IPTUNNEL is not set # CONFIG_IPRULE is not set # CONFIG_IPCALC is not set # CONFIG_FEATURE_IPCALC_FANCY is not set # CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set # CONFIG_NAMEIF is not set # CONFIG_NC is not set # CONFIG_NC_SERVER is not set # CONFIG_NC_EXTRA is not set # CONFIG_NETSTAT is not set # CONFIG_NSLOOKUP is not set # CONFIG_PING is not set # CONFIG_PING6 is not set # CONFIG_FEATURE_FANCY_PING is not set CONFIG_ROUTE=y # CONFIG_TELNET is not set # CONFIG_FEATURE_TELNET_TTYPE is not set # CONFIG_FEATURE_TELNET_AUTOLOGIN is not set CONFIG_TELNETD=y CONFIG_FEATURE_TELNETD_STANDALONE=y # CONFIG_TFTP is not set # CONFIG_FEATURE_TFTP_GET is not set # CONFIG_FEATURE_TFTP_PUT is not set # CONFIG_FEATURE_TFTP_BLOCKSIZE is not set # CONFIG_DEBUG_TFTP is not set # CONFIG_TRACEROUTE is not set # CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set # CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set # CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set # CONFIG_APP_UDHCPD is not set # CONFIG_APP_DHCPRELAY is not set # CONFIG_APP_DUMPLEASES is not set CONFIG_APP_UDHCPC=y # CONFIG_FEATURE_UDHCP_SYSLOG is not set # CONFIG_FEATURE_UDHCP_DEBUG is not set # CONFIG_FEATURE_RFC3397 is not set # CONFIG_VCONFIG is not set CONFIG_WGET=y # CONFIG_FEATURE_WGET_STATUSBAR is not set # CONFIG_FEATURE_WGET_AUTHENTICATION is not set # CONFIG_FEATURE_WGET_LONG_OPTIONS is not set # CONFIG_ZCIP is not set # # Process Utilities # # CONFIG_FREE is not set # CONFIG_FUSER is not set CONFIG_KILL=y CONFIG_KILLALL=y # CONFIG_KILLALL5 is not set CONFIG_PIDOF=y # CONFIG_FEATURE_PIDOF_SINGLE is not set # CONFIG_FEATURE_PIDOF_OMIT is not set # CONFIG_PS is not set # CONFIG_FEATURE_PS_WIDE is not set # CONFIG_RENICE is not set # CONFIG_BB_SYSCTL is not set # CONFIG_TOP is not set # CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE is not set # CONFIG_UPTIME is not set # # Shells # CONFIG_FEATURE_SH_IS_ASH=y # CONFIG_FEATURE_SH_IS_HUSH is not set # CONFIG_FEATURE_SH_IS_LASH is not set # CONFIG_FEATURE_SH_IS_MSH is not set # CONFIG_FEATURE_SH_IS_NONE is not set CONFIG_ASH=y # # Ash Shell Options # # CONFIG_ASH_JOB_CONTROL is not set # CONFIG_ASH_READ_NCHARS is not set # CONFIG_ASH_READ_TIMEOUT is not set # CONFIG_ASH_ALIAS is not set CONFIG_ASH_MATH_SUPPORT=y # CONFIG_ASH_MATH_SUPPORT_64 is not set # CONFIG_ASH_GETOPTS is not set # CONFIG_ASH_BUILTIN_ECHO is not set # CONFIG_ASH_BUILTIN_TEST is not set # CONFIG_ASH_CMDCMD is not set # CONFIG_ASH_MAIL is not set CONFIG_ASH_OPTIMIZE_FOR_SIZE=y # CONFIG_ASH_RANDOM_SUPPORT is not set # CONFIG_ASH_EXPAND_PRMT is not set # CONFIG_HUSH is not set # CONFIG_LASH is not set # CONFIG_MSH is not set # # Bourne Shell Options # # CONFIG_FEATURE_SH_EXTRA_QUIET is not set # CONFIG_FEATURE_SH_STANDALONE_SHELL is not set # # System Logging Utilities # # CONFIG_SYSLOGD is not set # CONFIG_FEATURE_ROTATE_LOGFILE is not set # CONFIG_FEATURE_REMOTE_LOG is not set # CONFIG_FEATURE_IPC_SYSLOG is not set CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE= # CONFIG_LOGREAD is not set # CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set # CONFIG_KLOGD is not set # CONFIG_LOGGER is not set # # Runit Utilities # # CONFIG_RUNSV is not set # CONFIG_RUNSVDIR is not set # CONFIG_SV is not set # CONFIG_SVLOGD is not set # CONFIG_CHPST is not set # CONFIG_SETUIDGID is not set # CONFIG_ENVUIDGID is not set # CONFIG_ENVDIR is not set # CONFIG_SOFTLIMIT is not set # CONFIG_CHCON is not set # CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set # CONFIG_GETENFORCE is not set # CONFIG_GETSEBOOL is not set # CONFIG_MATCHPATHCON is not set # CONFIG_RUNCON is not set # CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set # CONFIG_SELINUXENABLED is not set # CONFIG_SETENFORCE is not set geexbox-1.1/packages/busybox/config/busybox.devtools.conf0000644000175000017500000000073410641745504022036 0ustar benbenCONFIG_SHOW_USAGE=y CONFIG_FEATURE_VERBOSE_USAGE=y CONFIG_CHMOD=y CONFIG_LSMOD=y CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y CONFIG_FEATURE_IFCONFIG_STATUS=y CONFIG_NETSTAT=y CONFIG_PING=y CONFIG_FEATURE_FANCY_PING=y CONFIG_PS=y CONFIG_FEATURE_PS_WIDE=y CONFIG_MORE=y CONFIG_FEATURE_USE_TERMIOS=y CONFIG_VI=y CONFIG_FEATURE_VI_WIN_RESIZE=y CONFIG_DF=y CONFIG_DU=y CONFIG_FEATURE_HUMAN_READABLE=y CONFIG_LESS=y CONFIG_FREE=y CONFIG_TOP=y CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y geexbox-1.1/packages/busybox/config/group0000644000175000017500000000001210641745504016702 0ustar benbenroot:x:0: geexbox-1.1/packages/busybox/config/passwd0000644000175000017500000000003610641745504017055 0ustar benbenroot:x:0:0:root:/root:/bin/sh geexbox-1.1/packages/busybox/init.d/0000755000175000017500000000000010641745504015552 5ustar benbengeexbox-1.1/packages/busybox/init.d/10_eject0000755000175000017500000000156610641745504017102 0ustar benben#!/bin/sh # # eject CD if booted from cdrom and their is no media files on it # # runlevels: geexbox, debug if test -n "$CDROM"; then echo "### Eject CDROM ###" ( # add recognized files extension to the EXTS list for i in `cat /etc/file_ext`; do if [ -z "$EXTS" ]; then EXTS="$i" else EXTS="$EXTS\|$i" fi done # add recognized images extension to the EXTS list if [ -x /usr/bin/fbi -a -e /dev/fb0 ]; then for i in `cat /etc/img_ext`; do EXTS="$EXTS\|$i"; done fi # add recognized playlists extension to the EXTS list for i in `cat /etc/list_ext`; do EXTS="$EXTS\|$i"; done # check if their is recognized media files on the CD if [ -z "`find "$CDROM" | grep -v /GEEXBOX/ | grep -i "\.\($EXTS\)\$"`" ]; then # eject the CD (except when started with make exec) [ -e /dev/cdrom -a ! -f /EXEC ] && eject fi )& fi exit 0 geexbox-1.1/packages/busybox/init.d/52_telnet0000755000175000017500000000043510641745504017303 0ustar benben#!/bin/sh # # start telnet daemon # # runlevels: geexbox, debug # get options test -f /etc/network || exit 1 . /etc/network if test "$TELNET_SERVER" = "yes" -a -f /etc/issue; then echo "### Starting telnet daemon ###" /usr/sbin/telnetd -f /etc/issue >/dev/null 2>&1 & fi exit 0 geexbox-1.1/packages/busybox/init.d/53_httpd0000755000175000017500000000055610641745504017140 0ustar benben#!/bin/sh # # start http daemon # # runlevels: geexbox, debug # get options test -f /etc/network || exit 1 . /etc/network if test "$HTTP_SERVER" = "yes"; then echo "### Starting http daemon ###" if test -x /usr/bin/freevo-webserver; then /usr/bin/freevo-webserver >/dev/null 2>&1 & else /usr/sbin/httpd -h /var/www >/dev/null 2>&1 & fi fi exit 0 geexbox-1.1/packages/busybox/init.d/80_debug0000755000175000017500000000057610641745504017105 0ustar benben#!/bin/sh # # start a debugging shell # # runlevels: debug # give a shell to MPlayer in debug mode echo "### Starting debugging shell ###" sed -i 's%ok=\"quit 166\"/>%ok=\"quit 166\"/> %' /etc/mplayer/menu.conf # start shell /bin/sh # Add option to return to shell with F12 key echo "F12 quit 169" >> /etc/mplayer/input.conf exit 0 geexbox-1.1/packages/busybox/init.d/80_nodebug0000755000175000017500000000015710641745504017435 0ustar benben#!/bin/sh # # removes kernel modules from ramdisk # # runlevels: geexbox, install rm -rf /lib/modules exit 0 geexbox-1.1/packages/busybox/init.d/90_umount0000755000175000017500000000064410641745504017343 0ustar benben#!/bin/sh # # umount all mounted disks # # runlevels: geexbox, debug echo "### Unmounting disks and shares ###" # umount samba shares for DIR in /mnt/shares/*/*; do test -d "$DIR" && umount "$DIR" >/dev/null 2>&1 && rmdir "$DIR" done # when started with make exec, umount partitions if test -f /EXEC; then for DIR in /mnt/*; do test -d "$DIR" && umount "$DIR" >/dev/null 2>&1 done umount /proc fi exit 0 geexbox-1.1/packages/busybox/install0000755000175000017500000000045710641745504015767 0ustar benben#!/bin/sh . config/options mkdir -p $INSTALL/bin mkdir -p $INSTALL/usr/share/udhcpc cp $BUILD/$1*/$1 $INSTALL/bin cp $PACKAGES/$1/scripts/udhcp.script $INSTALL/usr/share/udhcpc/default.script mkdir -p $INSTALL/etc cp $PACKAGES/$1/config/passwd $INSTALL/etc cp $PACKAGES/$1/config/group $INSTALL/etc geexbox-1.1/packages/busybox/need_unpack0000755000175000017500000000026510641745504016572 0ustar benben#!/bin/sh . config/options STAMP=$STAMPS/$1/unpack . $STAMP test $PACKAGES/$1/config/$1.conf -nt $STAMP && rm -f $STAMP test $STAMP_DEVTOOLS != $DEVTOOLS && rm -f $STAMP exit 0 geexbox-1.1/packages/busybox/patches/0000755000175000017500000000000010641745504016014 5ustar benbengeexbox-1.1/packages/busybox/patches/11_pwd_grp.diff0000644000175000017500000000172010641745504020611 0ustar benbendiff -Naur busybox-1.3.0.orig/libpwdgrp/Kbuild busybox-1.3.0/libpwdgrp/Kbuild --- busybox-1.3.0.orig/libpwdgrp/Kbuild 2006-12-14 22:58:38.000000000 +0100 +++ busybox-1.3.0/libpwdgrp/Kbuild 2006-12-14 23:15:04.000000000 +0100 @@ -4,4 +4,5 @@ # # Licensed under the GPL v2, see the file LICENSE in this tarball. -lib-y:=pwd_grp.o uidgid_get.o +lib-y:=uidgid_get.o +lib-$(CONFIG_USE_BB_PWD_GRP) += pwd_grp.o diff -Naur busybox-1.3.0.orig/libpwdgrp/uidgid_get.c busybox-1.3.0/libpwdgrp/uidgid_get.c --- busybox-1.3.0.orig/libpwdgrp/uidgid_get.c 2006-12-14 22:58:38.000000000 +0100 +++ busybox-1.3.0/libpwdgrp/uidgid_get.c 2006-12-14 23:21:04.000000000 +0100 @@ -2,6 +2,7 @@ /* Always sets uid and gid */ int get_uidgid(struct bb_uidgid_t *u, const char *ug, int numeric_ok) { +#if ENABLE_USE_BB_PWD_GRP struct passwd *pwd; struct group *gr; char *user, *group; @@ -25,6 +26,9 @@ u->gid = gr->gr_gid; } return 1; +#else + return 0; +#endif } /* chown-like: geexbox-1.1/packages/busybox/patches/12_allow-symb-reassign.diff0000644000175000017500000000135210641745504023050 0ustar benben--- busybox-1.3.0/scripts/kconfig/confdata.c.orig 2006-12-17 23:43:40.000000000 +0100 +++ busybox-1.3.0/scripts/kconfig/confdata.c 2006-12-17 23:44:08.000000000 +0100 @@ -151,9 +151,6 @@ if (!sym) { conf_warning("trying to assign nonexistent symbol %s", line + 9); break; - } else if (!(sym->flags & SYMBOL_NEW)) { - conf_warning("trying to reassign symbol %s", sym->name); - break; } switch (sym->type) { case S_BOOLEAN: @@ -181,9 +178,6 @@ if (!sym) { conf_warning("trying to assign nonexistent symbol %s", line + 7); break; - } else if (!(sym->flags & SYMBOL_NEW)) { - conf_warning("trying to reassign symbol %s", sym->name); - break; } switch (sym->type) { case S_TRISTATE: geexbox-1.1/packages/busybox/patches/20_enable_mke2fs.diff0000644000175000017500000000536410641745504021654 0ustar benbendiff -Naur busybox-1.4.1.orig/e2fsprogs/Config.in busybox-1.4.1/e2fsprogs/Config.in --- busybox-1.4.1.orig/e2fsprogs/Config.in 2007-02-25 17:39:42.000000000 +0100 +++ busybox-1.4.1/e2fsprogs/Config.in 2007-02-25 18:35:14.000000000 +0100 @@ -64,4 +64,6 @@ ### findfs will search the disks in the system looking for a filesystem ### which has a label matching label or a UUID equal to uuid. +source e2fsprogs/old_e2fsprogs/Config.in + endmenu diff -Naur busybox-1.4.1.orig/e2fsprogs/old_e2fsprogs/ext2fs/Kbuild busybox-1.4.1/e2fsprogs/old_e2fsprogs/ext2fs/Kbuild --- busybox-1.4.1.orig/e2fsprogs/old_e2fsprogs/ext2fs/Kbuild 2007-02-25 17:39:42.000000000 +0100 +++ busybox-1.4.1/e2fsprogs/old_e2fsprogs/ext2fs/Kbuild 2007-02-25 18:28:27.000000000 +0100 @@ -20,4 +20,4 @@ dirhash.o version.o flushb.o unlink.o check_desc.o valid_blk.o \ ext_attr.o bmap.o dblist_dir.o ext2fs_inline.o swapfs.o -CFLAGS += -include $(srctree)/e2fsprogs/e2fsbb.h +CFLAGS += -include $(srctree)/e2fsprogs/old_e2fsprogs/e2fsbb.h diff -Naur busybox-1.4.1.orig/e2fsprogs/old_e2fsprogs/Kbuild busybox-1.4.1/e2fsprogs/old_e2fsprogs/Kbuild --- busybox-1.4.1.orig/e2fsprogs/old_e2fsprogs/Kbuild 2007-02-25 17:39:42.000000000 +0100 +++ busybox-1.4.1/e2fsprogs/old_e2fsprogs/Kbuild 2007-02-25 18:16:47.000000000 +0100 @@ -13,4 +13,4 @@ lib-$(CONFIG_MKE2FS) += mke2fs.o util.o lib-$(CONFIG_TUNE2FS) += tune2fs.o util.o -CFLAGS += -include $(srctree)/e2fsprogs/e2fsbb.h +CFLAGS += -include $(srctree)/e2fsprogs/old_e2fsprogs/e2fsbb.h diff -Naur busybox-1.4.1.orig/include/applets.h busybox-1.4.1/include/applets.h --- busybox-1.4.1.orig/include/applets.h 2007-02-25 17:39:42.000000000 +0100 +++ busybox-1.4.1/include/applets.h 2007-02-25 18:23:17.000000000 +0100 @@ -192,7 +192,7 @@ USE_MDEV(APPLET(mdev, _BB_DIR_SBIN, _BB_SUID_NEVER)) USE_MESG(APPLET(mesg, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) USE_MKDIR(APPLET(mkdir, _BB_DIR_BIN, _BB_SUID_NEVER)) -//USE_MKE2FS(APPLET(mke2fs, _BB_DIR_SBIN, _BB_SUID_NEVER)) +USE_MKE2FS(APPLET(mke2fs, _BB_DIR_SBIN, _BB_SUID_NEVER)) USE_MKFIFO(APPLET(mkfifo, _BB_DIR_USR_BIN, _BB_SUID_NEVER)) //USE_MKE2FS(APPLET_NOUSAGE(mkfs.ext2, mke2fs, _BB_DIR_SBIN, _BB_SUID_NEVER)) //USE_MKE2FS(APPLET_NOUSAGE(mkfs.ext3, mke2fs, _BB_DIR_SBIN, _BB_SUID_NEVER)) diff -Naur busybox-1.4.1.orig/Makefile busybox-1.4.1/Makefile --- busybox-1.4.1.orig/Makefile 2007-02-25 17:39:42.000000000 +0100 +++ busybox-1.4.1/Makefile 2007-02-25 18:26:53.000000000 +0100 @@ -429,6 +429,11 @@ coreutils/libcoreutils/ \ debianutils/ \ e2fsprogs/ \ + e2fsprogs/old_e2fsprogs/ \ + e2fsprogs/old_e2fsprogs/blkid/ \ + e2fsprogs/old_e2fsprogs/e2p/ \ + e2fsprogs/old_e2fsprogs/ext2fs/ \ + e2fsprogs/old_e2fsprogs/uuid/ \ editors/ \ findutils/ \ init/ \ geexbox-1.1/packages/busybox/patches/50_ash-flock.diff0000644000175000017500000000220010641745504021013 0ustar benbendiff -Naur busybox-1.5.0.orig/shell/ash.c busybox-1.5.0/shell/ash.c --- busybox-1.5.0.orig/shell/ash.c 2007-03-23 23:24:43.000000000 +0100 +++ busybox-1.5.0/shell/ash.c 2007-03-23 23:31:22.000000000 +0100 @@ -3985,6 +3985,47 @@ return retval; } +#include + +static int +flockcmd(int argc, char **argv) +{ + static int fd = -1; + int operation = 0, c; + + while ((c = nextopt("ensu"))) + switch (c) { + case 'e': + operation |= LOCK_EX; + break; + case 'n': + operation |= LOCK_NB; + break; + case 's': + operation |= LOCK_SH; + break; + case 'u': + if (fd == -1 || flock(fd, LOCK_UN)) + return 127; + close(fd); + fd = -1; + return 0; + } + + c = 127; + if (fd == -1 && *argptr && (fd = open(*argptr, O_RDONLY | O_CREAT)) != -1) + { + if (!flock(fd, operation)) { + c = 0; + } else { + close(fd); + fd = -1; + } + } + + return c; +} + static int waitcmd(int argc, char **argv) { @@ -8170,6 +8211,7 @@ #if JOBS { BUILTIN_REGULAR "fg", fg_bgcmd }, #endif + { BUILTIN_NOSPEC "flock", flockcmd }, #if ENABLE_ASH_GETOPTS { BUILTIN_REGULAR "getopts", getoptscmd }, #endif geexbox-1.1/packages/busybox/patches/60_umount-return-errno.diff0000644000175000017500000000120310641745504023136 0ustar benbendiff -Naur busybox-1.3.0.orig/util-linux/umount.c busybox-1.3.0/util-linux/umount.c --- busybox-1.3.0.orig/util-linux/umount.c 2006-12-14 15:00:27.000000000 +0100 +++ busybox-1.3.0/util-linux/umount.c 2006-12-14 15:03:03.000000000 +0100 @@ -26,7 +26,7 @@ char path[2*PATH_MAX]; struct mntent me; FILE *fp; - int status = EXIT_SUCCESS; + int status = 0; unsigned opt; struct mtab_list { char *dir; @@ -116,7 +116,7 @@ } if (curstat) { - status = EXIT_FAILURE; + status = errno ? errno : 127; bb_perror_msg("cannot umount %s", zapit); } else { /* De-allocate the loop device. This ioctl should be ignored on geexbox-1.1/packages/busybox/patches/70_wget-retry-timeout.diff0000644000175000017500000000764410641745504022764 0ustar benbendiff -Naur busybox-1.5.0.orig/include/usage.h busybox-1.5.0/include/usage.h --- busybox-1.5.0.orig/include/usage.h 2007-03-23 23:24:43.000000000 +0100 +++ busybox-1.5.0/include/usage.h 2007-03-23 23:51:21.000000000 +0100 @@ -3619,7 +3619,8 @@ #define wget_trivial_usage \ "[-c|--continue] [-q|--quiet] [-O|--output-document file]\n" \ " [--header 'header: value'] [-Y|--proxy on/off] [-P DIR]\n" \ - " [-U|--user-agent agent] url" + " [-U|--user-agent agent] url" \ + " [-T|--read-timeout value] [-t|--tries value] url" #define wget_full_usage \ "Retrieve files via HTTP or FTP" \ "\n\nOptions:\n" \ @@ -3628,7 +3629,9 @@ " -P Set directory prefix to DIR\n" \ " -O Save to filename ('-' for stdout)\n" \ " -U Adjust 'User-Agent' field\n" \ - " -Y Use proxy ('on' or 'off')" + " -Y Use proxy ('on' or 'off')" \ + " -T delay before timeout and shutdown\n" \ + " -t number of retry" #define which_trivial_usage \ "[COMMAND ...]" diff -Naur busybox-1.5.0.orig/networking/wget.c busybox-1.5.0/networking/wget.c --- busybox-1.5.0.orig/networking/wget.c 2007-03-23 23:24:43.000000000 +0100 +++ busybox-1.5.0/networking/wget.c 2007-03-23 23:52:48.000000000 +0100 @@ -86,12 +86,30 @@ } #endif +static void timeout_reached(int ignore) +{ + if (content_len == 0) /* still haven't been able to talk with server */ + exit(-1); +} + +static void alarm_timeout(int iwait) +{ + struct itimerval itv; + + itv.it_interval.tv_sec = 0; + itv.it_interval.tv_usec = 0; + itv.it_value.tv_sec = iwait; + itv.it_value.tv_usec = 0; + setitimer(ITIMER_REAL, &itv, NULL); +} + int wget_main(int argc, char **argv); int wget_main(int argc, char **argv) { char buf[512]; struct host_info server, target; len_and_sockaddr *lsa; + struct sigaction sa; int n, status; int port; int try = 5; @@ -114,6 +132,8 @@ int use_proxy = 1; /* Use proxies if env vars are set */ const char *proxy_flag = "on"; /* Use proxies if env vars are set */ const char *user_agent = "Wget";/* Content of the "User-Agent" header field */ + const char *timeout = "900"; /* Read Timeout duration (-T) */ + char *nr_tries = NULL; /* Number of retries (-t) */ /* * Crack command line. @@ -127,6 +147,8 @@ WGET_OPT_USER_AGENT = 0x20, WGET_OPT_PASSIVE = 0x40, WGET_OPT_HEADER = 0x80, + WGET_OPT_TIMEOUT = 0x100, + WGET_OPT_RETRY = 0x200, }; #if ENABLE_FEATURE_WGET_LONG_OPTIONS static const struct option wget_long_options[] = { @@ -136,6 +158,8 @@ { "output-document", required_argument, NULL, 'O' }, { "directory-prefix", required_argument, NULL, 'P' }, { "proxy", required_argument, NULL, 'Y' }, + { "read-timeout", required_argument, NULL, 'T' }, + { "tries", required_argument, NULL, 't' }, { "user-agent", required_argument, NULL, 'U' }, { "passive-ftp", no_argument, NULL, 0xff }, { "header", required_argument, NULL, 0xfe }, @@ -144,9 +168,10 @@ applet_long_options = wget_long_options; #endif opt_complementary = "-1" USE_FEATURE_WGET_LONG_OPTIONS(":\xfe::"); - opt = getopt32(argc, argv, "cqO:P:Y:U:", + opt = getopt32(argc, argv, "cqO:P:Y:T:t:U:", &fname_out, &dir_prefix, - &proxy_flag, &user_agent + &proxy_flag, &user_agent, + &timeout, &nr_tries USE_FEATURE_WGET_LONG_OPTIONS(, &headers_llist) ); if (strcmp(proxy_flag, "off") == 0) { @@ -170,6 +195,9 @@ } #endif + if (opt & WGET_OPT_RETRY) + try = atoi(nr_tries); + parse_url(argv[optind], &target); server.host = target.host; server.port = target.port; @@ -241,6 +269,13 @@ /* We leak result of xmalloc_sockaddr2dotted */ } + /* starting timer */ + sa.sa_handler = timeout_reached; + sigemptyset (&sa.sa_mask); + sa.sa_flags = SA_RESTART; + sigaction (SIGALRM, &sa, NULL); + alarm_timeout (atoi (timeout)); + if (use_proxy || !target.is_ftp) { /* * HTTP session geexbox-1.1/packages/busybox/scripts/0000755000175000017500000000000010641745504016054 5ustar benbengeexbox-1.1/packages/busybox/scripts/udhcp.script0000755000175000017500000000123210641745504020406 0ustar benben#!/bin/sh case "$1" in deconfig) ifconfig $interface 0.0.0.0 ;; renew|bound) if [ -n "$dns" ]; then rm -f /etc/resolv.conf [ -n "$domain" ] && echo "search $domain" >> /etc/resolv.conf for ns in $dns; do echo "nameserver $ns" >> /etc/resolv.conf done fi [ -n "$broadcast" ] && BROADCAST="broadcast $broadcast" [ -n "$subnet" ] && NETMASK="netmask $subnet" ifconfig $interface $ip $BROADCAST $NETMASK while route del default gw 0.0.0.0 dev $interface; do : done metric=0 for i in $router; do route add default gw $i dev $interface metric $((metric++)) done ;; esac geexbox-1.1/packages/busybox/unpack0000755000175000017500000000052010641745504015571 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain BUSYBOX=`ls -d $BUILD/$1*` cat <$BUSYBOX/Makefile.custom HOSTCC = $HOST_CC CROSS_COMPILE = $TARGET_PREFIX EOF cp $PACKAGES/$1/config/$1.conf $BUSYBOX/.config [ "$DEVTOOLS" = yes ] && cat $PACKAGES/$1/config/$1.devtools.conf >> $BUSYBOX/.config make -C $BUSYBOX oldconfig geexbox-1.1/packages/busybox/url0000644000175000017500000000006710641745504015115 0ustar benbenhttp://www.busybox.net/downloads/busybox-1.5.1.tar.bz2 geexbox-1.1/packages/ccache/0000755000175000017500000000000010641745504014100 5ustar benbengeexbox-1.1/packages/ccache/build0000755000175000017500000000032110641745504015121 0ustar benben#!/bin/sh . config/options $SCRIPTS/install make setup_toolchain host CC=$LOCAL_CC cd $BUILD/$1* ./configure --host=$HOST_NAME \ --build=$HOST_NAME \ --prefix=$ROOT/$TOOLCHAIN make geexbox-1.1/packages/ccache/install0000755000175000017500000000176110641745504015501 0ustar benben#!/bin/sh . config/options make -C $BUILD/$1* install if [ "$2" = toolchain ]; then GCC_VERSION=`sed -n 's/.*\/gcc-core-\([0-9\.]*\)\..*/\1/p' $PACKAGES/gcc/url` CROSS_CC=$TARGET_CC-$GCC_VERSION rm -f $TARGET_CC echo "#!/bin/sh" >$TARGET_CC echo "$ROOT/$TOOLCHAIN/bin/ccache $CROSS_CC \"\$@\"" >>$TARGET_CC chmod +x $TARGET_CC # To avoid cache trashing DATE="0501`echo $GCC_VERSION | sed 's/\([0-9]\)/0\1/g' | sed 's/\.//g'`" touch -c -t $DATE $CROSS_CC CROSS_CXX=$SYSROOT_PREFIX/../bin/g++ if [ -f "$CROSS_CXX" ]; then rm -f $TARGET_CXX echo "#!/bin/sh" >$TARGET_CXX echo "$ROOT/$TOOLCHAIN/bin/ccache $CROSS_CXX \"\$@\"" >>$TARGET_CXX chmod +x $TARGET_CXX # To avoid cache trashing touch -c -t $DATE $CROSS_CXX fi else echo "#!/bin/sh" >$HOST_CC echo "$ROOT/$TOOLCHAIN/bin/ccache $LOCAL_CC \"\$@\"" >>$HOST_CC chmod +x $HOST_CC echo "#!/bin/sh" >$HOST_CXX echo "$ROOT/$TOOLCHAIN/bin/ccache $LOCAL_CXX \"\$@\"" >>$HOST_CXX chmod +x $HOST_CXX fi geexbox-1.1/packages/ccache/stats0000755000175000017500000000006610641745504015166 0ustar benben#!/bin/sh . config/options $TOOLCHAIN/bin/ccache -s geexbox-1.1/packages/ccache/url0000644000175000017500000000005610641745504014626 0ustar benbenhttp://samba.org/ftp/ccache/ccache-2.4.tar.gz geexbox-1.1/packages/cdparanoia/0000755000175000017500000000000010641745504014773 5ustar benbengeexbox-1.1/packages/cdparanoia/build0000755000175000017500000000074010641745504016021 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain export ac_cv_sizeof_short=2 export ac_cv_sizeof_int=4 export ac_cv_sizeof_long=4 export ac_cv_sizeof_long_long=8 cd $BUILD/$1* ./configure --host=$TARGET_NAME \ --build=$HOST_NAME make lib OPT="$CFLAGS -ffast-math" mkdir -p $LIB_PREFIX/lib $LIB_PREFIX/include cp interface/cdda_interface.h paranoia/cdda_paranoia.h $LIB_PREFIX/include cp interface/libcdda_interface.a paranoia/libcdda_paranoia.a $LIB_PREFIX/lib geexbox-1.1/packages/cdparanoia/patches/0000755000175000017500000000000010641745504016422 5ustar benbengeexbox-1.1/packages/cdparanoia/patches/10_gcc_fix.diff0000644000175000017500000000137110641745504021160 0ustar benbendiff -Naur cdparanoia-III-alpha9.8.orig/interface/utils.h cdparanoia-III-alpha9.8/interface/utils.h --- cdparanoia-III-alpha9.8.orig/interface/utils.h 2000-04-20 00:41:04.000000000 +0200 +++ cdparanoia-III-alpha9.8/interface/utils.h 2005-01-14 18:25:16.000000000 +0100 @@ -112,6 +112,7 @@ break; case CDDA_MESSAGE_FORGETIT: default: + break; } } } @@ -127,6 +128,7 @@ break; case CDDA_MESSAGE_FORGETIT: default: + break; } } } @@ -169,6 +171,7 @@ break; case CDDA_MESSAGE_FORGETIT: default: + break; } } if(malloced)free(buffer); @@ -205,6 +208,7 @@ break; case CDDA_MESSAGE_FORGETIT: default: + break; } } if(malloced)free(buffer); geexbox-1.1/packages/cdparanoia/patches/20_paranoia-read-bail.diff0000644000175000017500000000473710641745504023200 0ustar benbendiff -ur cdparanoia-III-alpha9.8.orig/paranoia/p_block.h cdparanoia-III-alpha9.8/paranoia/p_block.h --- cdparanoia-III-alpha9.8.orig/paranoia/p_block.h Mon Mar 26 07:44:02 2001 +++ cdparanoia-III-alpha9.8/paranoia/p_block.h Mon Jul 25 11:40:11 2005 @@ -159,6 +159,7 @@ /* statistics for verification */ + int readerrors; } cdrom_paranoia; extern c_block *c_alloc(int16_t *vector,long begin,long size); diff -ur cdparanoia-III-alpha9.8.orig/paranoia/paranoia.c cdparanoia-III-alpha9.8/paranoia/paranoia.c --- cdparanoia-III-alpha9.8.orig/paranoia/paranoia.c Mon Mar 26 07:44:02 2001 +++ cdparanoia-III-alpha9.8/paranoia/paranoia.c Mon Jul 25 11:40:11 2005 @@ -58,6 +58,8 @@ #include "overlap.h" #include "gap.h" #include "isort.h" +#include +#include static inline long re(root_block *root){ if(!root)return(-1); @@ -1045,7 +1047,7 @@ /* returns last block read, -1 on error */ c_block *i_read_c_block(cdrom_paranoia *p,long beginword,long endword, - void(*callback)(long,int)){ + void(*callback)(long,int), int *bail){ /* why do it this way? We need to read lots of sectors to kludge around stupid read ahead buffers on cheap drives, as well as avoid @@ -1065,6 +1067,7 @@ long dynoverlap=(p->dynoverlap+CD_FRAMEWORDS-1)/CD_FRAMEWORDS; long anyflag=0; + *bail = 0; /* What is the first sector to read? want some pre-buffer if we're not at the extreme beginning of the disc */ @@ -1140,6 +1143,14 @@ backward! */ if(callback)(*callback)((adjread+thisread)*CD_FRAMEWORDS,PARANOIA_CB_READERR); + if(++p->readerrors == 20) { + if (ioctl(p->d->ioctl_fd, CDROM_DRIVE_STATUS, CDSL_CURRENT) != CDS_DISC_OK) { + *bail = 1; + anyflag = 0; + break; + } + p->readerrors = 0; + } memset(buffer+(sofar+thisread)*CD_FRAMEWORDS,0, CD_FRAMESIZE_RAW*(secread-thisread)); if(flags)memset(flags+(sofar+thisread)*CD_FRAMEWORDS,2, @@ -1203,6 +1214,8 @@ long retry_count=0,lastend=-2; root_block *root=&p->root; + p->readerrors=0; + if(beginword>p->root.returnedlimit)p->root.returnedlimit=beginword; lastend=re(root); @@ -1236,7 +1249,10 @@ /* Hmm, need more. Read another block */ { - c_block *new=i_read_c_block(p,beginword,endword,callback); + int bail; + c_block *new=i_read_c_block(p,beginword,endword,callback, &bail); + if (bail) + return NULL; if(new){ if(p->enable&(PARANOIA_MODE_OVERLAP|PARANOIA_MODE_VERIFY)){ geexbox-1.1/packages/cdparanoia/patches/30_null-pointer-check.diff0000644000175000017500000000106510641745504023263 0ustar benbendebian bug #168683 diff -Nur cdparanoia-III-alpha9.8.orig/interface/scan_devices.c cdparanoia-III-alpha9.8/interface/scan_devices.c --- cdparanoia-III-alpha9.8.orig/interface/scan_devices.c Mon Mar 26 07:44:01 2001 +++ cdparanoia-III-alpha9.8/interface/scan_devices.c Tue Jul 26 12:55:30 2005 @@ -617,7 +617,8 @@ /* It would seem some TOSHIBA CDROMs gets things wrong */ - if (!strncmp (p + 8, "TOSHIBA", 7) && + if (p && + !strncmp (p + 8, "TOSHIBA", 7) && !strncmp (p + 16, "CD-ROM", 6) && p[0] == TYPE_DISK) { p[0] = TYPE_ROM; geexbox-1.1/packages/cdparanoia/url0000644000175000017500000000010610641745504015515 0ustar benbenhttp://www.xiph.org/paranoia/download/cdparanoia-III-alpha9.8.src.tgz geexbox-1.1/packages/configtools/0000755000175000017500000000000010641745504015220 5ustar benbengeexbox-1.1/packages/configtools/build0000755000175000017500000000010710641745504016243 0ustar benben#!/bin/sh . config/options $BUILD/$1/config.guess > $HOST_NAME_CACHE geexbox-1.1/packages/configtools/url0000644000175000017500000000004110641745504015740 0ustar benbenGEEXBOX_SRCS/configtools.tar.bz2 geexbox-1.1/packages/dialog/0000755000175000017500000000000010641745504014131 5ustar benbengeexbox-1.1/packages/dialog/build0000755000175000017500000000102610641745504015155 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain $SCRIPTS/build ncurses cd $BUILD/$1* ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=$LIB_PREFIX \ --disable-nls \ --without-dbmalloc \ --without-dmalloc \ --with-ncurses \ --disable-widec \ --disable-rc-file \ --disable-Xdialog \ --disable-form \ --disable-mixedform \ --disable-tailbox make LIBS="-lncurses -ldl -lm" geexbox-1.1/packages/dialog/patches/0000755000175000017500000000000010641745504015560 5ustar benbengeexbox-1.1/packages/dialog/patches/10_reduce.diff0000644000175000017500000000153510641745504020165 0ustar benbenenable only: yesno, msgbox, menu, inputbox diff -Naur dialog-1.1-20070227.orig/dialog.c dialog-1.1-20070227/dialog.c --- dialog-1.1-20070227.orig/dialog.c 2007-03-09 11:42:43.000000000 +0100 +++ dialog-1.1-20070227/dialog.c 2007-03-09 11:44:10.000000000 +0100 @@ -978,14 +978,8 @@ { {o_yesno, 4, 4, call_yesno}, {o_msgbox, 4, 4, call_msgbox}, - {o_infobox, 4, 4, call_infobox}, - {o_textbox, 4, 4, call_textbox}, {o_menu, 7, 0, call_menu}, - {o_inputmenu, 7, 0, call_inputmenu}, - {o_checklist, 8, 0, call_checklist}, - {o_radiolist, 8, 0, call_radiolist}, {o_inputbox, 4, 5, call_inputbox}, - {o_passwordbox, 4, 5, call_passwordbox}, #ifdef HAVE_DLG_GAUGE {o_gauge, 4, 5, call_gauge}, {o_pause, 5, 5, call_pause}, geexbox-1.1/packages/dialog/url0000644000175000017500000000007210641745504014655 0ustar benbenftp://invisible-island.net/dialog/dialog-1.1-20070227.tgz geexbox-1.1/packages/digitools/0000755000175000017500000000000010641745504014667 5ustar benbengeexbox-1.1/packages/digitools/arch0000644000175000017500000000000510641745504015522 0ustar benbeni386 geexbox-1.1/packages/digitools/build0000755000175000017500000000030010641745504015705 0ustar benben#!/bin/sh . config/options $SCRIPTS/build alsa make -C $BUILD/$1* \ LDFLAGS="$LDFLAGS -lasound -ldl" \ CFLAGS="$CFLAGS -DSILENT" \ STRIP="$STRIP" \ default \ strip geexbox-1.1/packages/digitools/init.d/0000755000175000017500000000000010641745504016054 5ustar benbengeexbox-1.1/packages/digitools/init.d/30_digitools0000755000175000017500000000067510641745504020311 0ustar benben#!/bin/sh # # setup the Digimatrix # # runlevels: geexbox, debug [ -f /proc/acpi/dsdt ] || exit 1 [ `grep -e P4SQ -c /proc/acpi/dsdt` -eq 0 ] && exit 1 echo "### Setting up Digimatrix ###" [ -x /usr/bin/digifan ] && digifan -g 5 -i [ -x /usr/bin/digipanel ] && digipanel -lts [ -x /usr/bin/digiradio ] && echo '' > /var/digimatrix # PAL-I/SECAM requires tda9887 options for audio echo "options tda9887 port2=0" >> /etc/modprobe.conf exit 0 geexbox-1.1/packages/digitools/init.d/89_digiwake0000755000175000017500000000041010641745504020101 0ustar benben#!/bin/sh # # setup the Digimatrix Wake-On-CIR # # runlevels: geexbox, debug [ -f /proc/acpi/dsdt ] || exit 1 [ `grep -e P4SQ -c /proc/acpi/dsdt` -eq 0 ] && exit 1 echo "### Setting up Digimatrix Wake-On-CIR ###" [ -x /usr/bin/digiwake ] && digiwake -w exit 0 geexbox-1.1/packages/digitools/install0000755000175000017500000000033410641745504016263 0ustar benben#!/bin/sh . config/options mkdir -p $INSTALL/usr/bin cp -PR \ $BUILD/$1*/digitools \ $BUILD/$1*/digipanel \ $BUILD/$1*/digiradio \ $BUILD/$1*/digifan \ $BUILD/$1*/digiwake \ $INSTALL/usr/bin exit 0 geexbox-1.1/packages/digitools/url0000644000175000017500000000004210641745504015410 0ustar benbenGEEXBOX_SRCS/digitools-1.0.tar.gz geexbox-1.1/packages/djmount/0000755000175000017500000000000010641745504014352 5ustar benbengeexbox-1.1/packages/djmount/build0000755000175000017500000000101110641745504015370 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain $SCRIPTS/build fuse $SCRIPTS/build talloc $SCRIPTS/build libupnp cd $BUILD/$1* ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --with-external-talloc \ --with-external-libupnp \ --without-libiconv-prefix \ --with-fuse-prefix=$LIB_PREFIX \ --with-talloc-prefix=$LIB_PREFIX \ --with-libupnp-prefix=$LIB_PREFIX \ --disable-charset \ --disable-debug make geexbox-1.1/packages/djmount/init.d/0000755000175000017500000000000010641745504015537 5ustar benbengeexbox-1.1/packages/djmount/init.d/59_upnp0000755000175000017500000000062310641745504016765 0ustar benben#!/bin/sh # # mount UPnP VFS # # runlevels: geexbox, debug # get options test -f /etc/network || exit 1 . /etc/network if test "$UPNP" = "yes" -a -f /usr/bin/djmount; then echo "### Mounting UPnP VFS ###" # Build UPnP VFS directory mkdir -p /tmp/UPnP ( while [ ! -f /var/ifup ]; do sleep 1 done # Mount UPnP VFS djmount -f /tmp/UPnP >/dev/null 2>&1 & )& fi exit 0 geexbox-1.1/packages/djmount/install0000755000175000017500000000016310641745504015746 0ustar benben#!/bin/sh . config/options $SCRIPTS/install fuse mkdir -p $INSTALL/usr/bin cp $BUILD/$1*/$1/$1 $INSTALL/usr/bin geexbox-1.1/packages/djmount/patches/0000755000175000017500000000000010641745504016001 5ustar benbengeexbox-1.1/packages/djmount/patches/10_mount.diff0000644000175000017500000000112210641745504020271 0ustar benbendiff -Nur djmount-0.70.orig/djmount/device_list.c djmount-0.70/djmount/device_list.c --- djmount-0.70.orig/djmount/device_list.c Tue Jul 25 22:33:12 2006 +++ djmount-0.70/djmount/device_list.c Sat Aug 26 11:36:43 2006 @@ -35,6 +35,7 @@ #include "service.h" #include "talloc_util.h" +#include #include #include #include @@ -478,6 +479,7 @@ Log_Printf (LOG_DEBUG, "Discovery: " "DeviceList after AddDevice = \n%s", DeviceList_GetStatusString (tmp_ctx)); + symlink ("/tmp/UPnP", "/mnt/UPnP"); } break; geexbox-1.1/packages/djmount/patches/30_no-xml-file.diff0000644000175000017500000000157110641745504021270 0ustar benbendiff -Nur djmount-0.70.orig/djmount/djfs.c djmount-0.70/djmount/djfs.c --- djmount-0.70.orig/djmount/djfs.c Wed Jul 26 23:43:16 2006 +++ djmount-0.70/djmount/djfs.c Sat Aug 26 11:40:42 2006 @@ -291,21 +291,6 @@ } } } PTR_ARRAY_FOR_EACH_PTR_END; - - if ( (self->flags & DJFS_SHOW_METADATA) && - !PtrArray_IsEmpty(children->objects) ) { - DIR_BEGIN (".metadata") { - PTR_ARRAY_FOR_EACH_PTR (children->objects, o) { - char* const name = MediaFile_GetName (tmp_ctx, o, "xml"); - FILE_BEGIN (name) { - const char* const str = talloc_asprintf - (tmp_ctx, "\n%s", - DIDLObject_GetElementString (o, tmp_ctx)); - FILE_SET_STRING (str, FILE_BUFFER_STRING_STEAL); - } FILE_END; - } PTR_ARRAY_FOR_EACH_PTR_END; - } DIR_END; - } } // if children if (searchable && parent->searchable) { geexbox-1.1/packages/djmount/patches/40_mimetypes.diff0000644000175000017500000000316110641745504021153 0ustar benbendiff -Nur djmount-0.71.orig/djmount/media_file.c djmount-0.71/djmount/media_file.c --- djmount-0.71.orig/djmount/media_file.c Sun Aug 27 23:12:20 2006 +++ djmount-0.71/djmount/media_file.c Fri Nov 10 14:53:25 2006 @@ -90,6 +90,7 @@ { "video/x-motion-jpeg", "m3u", "mjpg" }, { "video/quicktime", "m3u", "mov" }, { "video/x-matroska", "m3u", "mkv" }, + { "video/x-ms-wmv", "m3u", "wmv" }, { "video/mpeg", "m3u", "mpg" }, { "video/mp2p", "m3u", "vob" }, // Default for all other video files : asf, mpeg2, x-ms-wmv, ... @@ -109,6 +110,9 @@ { "image/x-xpixmap", NULL, "xpm" }, { "image/x-xbitmap", NULL, "xbm" }, { "image/x-photo-cd", NULL, "pcd" }, + { "image/bmp", NULL, "bmp" }, + { "image/gif", NULL, "gif" }, + { "image/png", NULL, "png" }, { "image/x-quicktime", NULL, "qti" }, { "image/x-icon", NULL, "ico" }, { "image/tiff", NULL, "tif" }, @@ -127,6 +131,19 @@ */ { "text/plain", NULL, "txt" }, // Default for all text files : sub, idx, ssa, ifo, ... + { "text/srt", NULL, "srt" }, + { "text/ssa", NULL, "ssa" }, + { "text/psb", NULL, "psb" }, + { "text/pjs", NULL, "pjs" }, + { "text/sub", NULL, "sub" }, + { "text/idx", NULL, "idx" }, + { "text/dks", NULL, "dks" }, + { "text/tts", NULL, "tts" }, + { "text/vsf", NULL, "vsf" }, + { "text/zeg", NULL, "zeg" }, + { "text/mpl", NULL, "mpl" }, + { "text/bup", NULL, "bup" }, + { "text/ifo", NULL, "ifo" }, { "text/", NULL, NULL }, { NULL, NULL, NULL } geexbox-1.1/packages/djmount/unpack0000755000175000017500000000012310641745504015555 0ustar benben#!/bin/sh . config/options $SCRIPTS/fixconfigtools $BUILD/$1*/libupnp/config.aux geexbox-1.1/packages/djmount/url0000644000175000017500000000007710641745504015103 0ustar benbenhttp://prdownloads.sourceforge.net/djmount/djmount-0.71.tar.gz geexbox-1.1/packages/dosfstools/0000755000175000017500000000000010641745504015071 5ustar benbengeexbox-1.1/packages/dosfstools/build0000755000175000017500000000014110641745504016112 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain make -C $BUILD/$1*/mkdosfs \ mkdosfs geexbox-1.1/packages/dosfstools/install0000755000175000017500000000014610641745504016466 0ustar benben#!/bin/sh . config/options mkdir -p $INSTALL/usr/bin cp $BUILD/$1*/mkdosfs/mkdosfs $INSTALL/usr/bin geexbox-1.1/packages/dosfstools/url0000644000175000017500000000012010641745504015607 0ustar benbenftp://ftp.uni-erlangen.de/pub/Linux/LOCAL/dosfstools/dosfstools-2.11.src.tar.gz geexbox-1.1/packages/dvb-apps/0000755000175000017500000000000010641745504014406 5ustar benbengeexbox-1.1/packages/dvb-apps/build0000755000175000017500000000021610641745504015432 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain cd $BUILD/$1*/util/scan make CC="$CC" \ CFLAGS="$CFLAGS" \ LFLAGS="$LDFLAGS" geexbox-1.1/packages/dvb-apps/install0000755000175000017500000000061210641745504016001 0ustar benben#!/bin/sh . config/options mkdir -p $INSTALL/usr/bin cp $BUILD/$1*/util/scan/scan $INSTALL/usr/bin/dvbscan # Build DVB transponders frequencies archive if [ "$COMPRESSION_METHOD" = lzma ]; then tar cf - -C $BUILD/$1/util/scan/ dvb | lzma e $INSTALL/usr/share/dvb.tar.lzma -si -a2 else tar cf $INSTALL/usr/share/dvb.tar -C $BUILD/$1/util/scan/ dvb gzip -9 $INSTALL/usr/share/dvb.tar fi geexbox-1.1/packages/dvb-apps/unpack0000755000175000017500000000216010641745504015614 0ustar benben#!/bin/sh . config/options DVBFREQ="`ls -d $BUILD/$1*/util/scan`/dvb" # Build DVB Transponders Frequencies list mkdir -p $DVBFREQ # Add DVB Terrestrial transponders frequencies for i in `ls $BUILD/$1*/util/scan/dvb-t/ | grep -v CVS | sed 's/\([a-z][a-z]\)-.*/\1/'`; do mkdir -p "$DVBFREQ/dvb-t/$i" done for i in `ls $BUILD/$1*/util/scan/dvb-t/*-*`; do tmpdir=`echo $i | sed "s%.*/dvb-t/\([a-z][a-z]\)-.*%\1%"` file=`echo $i | sed "s%.*/dvb-t/[a-z][a-z]-\(.*\)%\1%"` cp $i "$DVBFREQ/dvb-t/$tmpdir/$file" done # Add DVB Satellite transponders frequencies mkdir -p "$DVBFREQ/dvb-s" cp $BUILD/$1*/util/scan/dvb-s/*-* $DVBFREQ/dvb-s/ # Add DVB Cable transponders frequencies for i in `ls $BUILD/$1*/util/scan/dvb-c/ | grep -v CVS | sed 's/\([a-z][a-z]\)-.*/\1/'`; do mkdir -p "$DVBFREQ/dvb-c/$i" done for i in `ls $BUILD/$1*/util/scan/dvb-c/*-*`; do tmpdir=`echo $i | sed "s%.*/dvb-c/\([a-z][a-z]\)-.*%\1%"` file=`echo $i | sed "s%.*/dvb-c/[a-z][a-z]-\(.*\)%\1%"` cp $i "$DVBFREQ/dvb-c/$tmpdir/$file" done # Add US ATSC transponders frequencies mkdir -p "$DVBFREQ/atsc" cp $BUILD/$1*/util/scan/atsc/*-* $DVBFREQ/atsc/ geexbox-1.1/packages/dvb-apps/url0000644000175000017500000000004710641745504015134 0ustar benbenGEEXBOX_SRCS/dvb-apps-01232007.tar.bz2 geexbox-1.1/packages/em8300/0000755000175000017500000000000010641745504013606 5ustar benbengeexbox-1.1/packages/em8300/build0000755000175000017500000000076110641745504014637 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain $SCRIPTS/build linux cd $BUILD/$1* make -C modules PWD=`ls -d $ROOT/$BUILD/$1*/modules` KERNEL_LOCATION=$(kernel_path) ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=$LIB_PREFIX \ --with-firmware-dir=/firmwares \ --enable-static \ --disable-shared \ --disable-gtktest make -C em8300setup make -C include install em8300incdir="$LIB_PREFIX/include/linux" geexbox-1.1/packages/em8300/config/0000755000175000017500000000000010641745504015053 5ustar benbengeexbox-1.1/packages/em8300/config/dxr30000644000175000017500000000203510641745504015656 0ustar benben# Below are the default GeeXboX settings for the adv717x and em8300 # modules: ADV717X_OPTS="pixelport_16bit=0" EM8300_OPTS="" # Other settings that have been reported # (http://dxr3.sourceforge.net/) to commonly fix the "green screen" # or "only 1/2 screen" problems for many users are included below- # remove the "#" before the $ symbol to activate a given setting: ## Option 1 ## #ADV717X_OPTS="pixelport_16bit=1 pixelport_other_pal=1" #EM8300_OPTS="dicom_fix=1 dicom_control=1 dicom_other_pal=1" ## Option 2 ## #ADV717X_OPTS="pixelport_16bit=0 pixelport_other_pal=0" #EM8300_OPTS="dicom_fix=1 dicom_control=1 dicom_other_pal=0" ## Option 3 ## #ADV717X_OPTS="pixelport_16bit=0 pixelport_other_pal=1" #EM8300_OPTS="dicom_fix=1 dicom_control=1 dicom_other_pal=1" ## Option 4 ## #ADV717X_OPTS="pixelport_16bit=1 pixelport_other_pal=0" #EM8300_OPTS="dicom_fix=0 dicom_control=0 dicom_other_pal=0" # If none of these options work for you, you can try other combinations # based on the information: # http://dxr3.sourceforge.net/howto.html#modparam geexbox-1.1/packages/em8300/config/packages.ini0000644000175000017500000000043110641745504017330 0ustar benben[Firmwares/EM8300] name=Firmware for the EM8300 card. desc=Firmware for the RealMagic EM8300 Hollywood+ desc=(a.k.a. Creative Labs DXR3) MPEG-2 hardware decompression card. file=http://dxr3.sourceforge.net/download/em8300.uc md5=1af7a2241e17d17684289f39168eb6b9 rename=em8300.bin geexbox-1.1/packages/em8300/init.d/0000755000175000017500000000000010641745504014773 5ustar benbengeexbox-1.1/packages/em8300/init.d/36_dxr30000755000175000017500000000063010641745504016110 0ustar benben#!/bin/sh # # setup tv cards # # runlevels: geexbox, debug, install if grep -q '0480: 1105:8300' /tmp/pci; then echo "### Setting up DXR3 card ###" # include module modprobe options . /etc/dxr3 # Drivers for DXR3/Hollywood+ cards modprobe bt865 2>&1 >/dev/null modprobe adv717x $ADV717X_OPTS 2>&1 >/dev/null modprobe em8300 $EM8300_OPTS 2>&1 >/dev/null echo '' > /var/use_dxr3 fi exit 0 geexbox-1.1/packages/em8300/install0000755000175000017500000000102410641745504015177 0ustar benben#!/bin/sh . config/options mkdir -p $INSTALL/usr/lib mkdir -p $INSTALL/usr/bin mkdir -p `ls -d $INSTALL/lib/modules/*`/kernel/drivers/video cp $PACKAGES/$1/config/dxr3 $INSTALL/etc cp $BUILD/$1*/modules/adv717x.ko $INSTALL/lib/modules/*/kernel/drivers/video/ cp $BUILD/$1*/modules/bt865.ko $INSTALL/lib/modules/*/kernel/drivers/video/ cp $BUILD/$1*/modules/em8300.ko $INSTALL/lib/modules/*/kernel/drivers/video/ cp $BUILD/$1*/modules/em8300.uc $INSTALL/firmwares/em8300.bin cp $BUILD/$1*/em8300setup/em8300setup $INSTALL/usr/bin geexbox-1.1/packages/em8300/need_unpack0000755000175000017500000000025710641745504016014 0ustar benben#!/bin/sh . config/options STAMP=$STAMPS/$1/unpack test $PACKAGES/linux/config/linux.$TARGET_ARCH.conf -nt $STAMP -o $PACKAGES/linux/url -nt $STAMP && rm -f $STAMP exit 0 geexbox-1.1/packages/em8300/unpack0000755000175000017500000000011210641745504015007 0ustar benben#!/bin/sh . config/options $SCRIPTS/fixconfigtools $BUILD/$1*/autotools geexbox-1.1/packages/em8300/url0000644000175000017500000000007310641745504014333 0ustar benbenhttp://downloads.sourceforge.net/dxr3/em8300-0.16.2.tar.gz geexbox-1.1/packages/emulators/0000755000175000017500000000000010641745504014705 5ustar benbengeexbox-1.1/packages/emulators/build0000755000175000017500000000011110641745504015723 0ustar benben#!/bin/sh . config/options $SCRIPTS/build zsnes $SCRIPTS/build scummvm geexbox-1.1/packages/emulators/install0000755000175000017500000000011510641745504016276 0ustar benben#!/bin/sh . config/options $SCRIPTS/install zsnes $SCRIPTS/install scummvm geexbox-1.1/packages/extra-codecs-nonfree/0000755000175000017500000000000010641745504016705 5ustar benbengeexbox-1.1/packages/extra-codecs-nonfree/arch0000644000175000017500000000000510641745504017540 0ustar benbeni386 geexbox-1.1/packages/extra-codecs-nonfree/config/0000755000175000017500000000000010641745504020152 5ustar benbengeexbox-1.1/packages/extra-codecs-nonfree/config/packages.ini0000644000175000017500000000406010641745504022431 0ustar benben[Codecs/] name=Codecs file=http://www.geexbox.org/codecs/ dir=iso/GEEXBOX/codecs/ target=i386 [Codecs/On2/] name=On2 Codecs file=On2/ target=i386 [Codecs/On2/On2 VP4 Personal] name=On2 VP4 Personal Codec license=LICENSE file=vp4vfw.dll.bz2 md5=4fa1470b0744c8fded709494cc01dcdd target=i386 [Codecs/On2/On2 VP5 Personal] name=On2 VP5 Personal Codec license=LICENSE file=vp5vfw.dll.bz2 md5=8f58c6bfe31a9bb1c193aa1d4831989c target=i386 [Codecs/On2/On2 VP6 Personal] name=On2 VP6 Personal Codec license=LICENSE file=vp6vfw.dll.bz2 md5=5bcef75c281d57241cd0f6a51d2afeed target=i386 [Codecs/On2/On2 VP7 Personal] name=On2 VP7 Personal Codec license=LICENSE file=vp7vfw.dll.bz2 md5=ed16b828fccb33d6ee8e4d84213ace4a target=i386 [Codecs/Real/] name=Win32 Real Player + Audio decoders file=Real/Win32/ target=i386 [Codecs/Real/RealPlayer 8 RV30] name=Win32 RealPlayer 8 RV30 decoder license=LICENSE file=drv33260.dll.bz2 md5=2be675800d03234aa8ab6a800a61fae2 target=i386 [Codecs/Real/RealPlayer 9 RV40] name=Win32 RealPlayer 9 RV40 decoder license=LICENSE file=drv43260.dll.bz2 md5=73f4dad3532961c0e1268c6002204d22 target=i386 [Codecs/Real/RealAudio] name=Win32 RealAudio decoders desc=Win32 RealAudio decoders for: desc= Sipro, ATRAC3 license=LICENSE file=atrc3260.dll.bz2 md5=c6dbfd36e02c91ff95c5411329f6fd07 file=sipr3260.dll.bz2 md5=f0695d686550c324d77fac7ae49c19d8 file=tokr3260.dll.bz2 md5=eedfa7261cbc1e1c6e99b34e7ecf3301 target=i386 [Codecs/QuickTime] name=QuickTime decoder desc=Win32 QuickTime Video decoder for: desc= Indeo desc= desc=Win32 QuickTime Audio decoder for: desc= QCLP, MACE3, MACE6, QDMC license=QuickTime/LICENSE file=QuickTime/QuickTime.qts.bz2 md5=10ade79f871f5e40fa6e7a884f1c170e target=i386 [Codecs/Windows Media/] name=Windows Media Codecs file=WindowsMedia/ target=i386 [Codecs/Windows Media/Windows Media 9] name=Windows Media 9 Audio and Video Codecs license=LICENSE file=wma9dmod.dll.bz2 md5=83a0636382c83cb5892b03a88b434781 file=wmv9dmod.dll.bz2 md5=b98208455f1e4de7b7445f4f6219f179 file=wvc1dmod.dll.bz2 md5=5fc14bd406a812c15093e47e0a9cfea5 target=i386 geexbox-1.1/packages/extra-codecs-nonfree/install0000755000175000017500000000012610641745504020300 0ustar benben#!/bin/sh . config/options mkdir -p $INSTALL/codecs cp $BUILD/$1*/* $INSTALL/codecs geexbox-1.1/packages/extra-codecs-nonfree/unpack0000755000175000017500000000015210641745504020112 0ustar benben#!/bin/sh . config/options mkdir -p $BUILD/$1 $SCRIPTS/extract $1 "*" $BUILD/$1 bunzip2 $BUILD/$1/*.bz2 geexbox-1.1/packages/extra-codecs-nonfree/url0000644000175000017500000000123010641745504017426 0ustar benbenhttp://www.geexbox.org/codecs/On2/vp4vfw.dll.bz2 http://www.geexbox.org/codecs/On2/vp5vfw.dll.bz2 http://www.geexbox.org/codecs/On2/vp6vfw.dll.bz2 http://www.geexbox.org/codecs/On2/vp7vfw.dll.bz2 http://www.geexbox.org/codecs/QuickTime/QuickTime.qts.bz2 http://www.geexbox.org/codecs/Real/Win32/drv33260.dll.bz2 http://www.geexbox.org/codecs/Real/Win32/drv43260.dll.bz2 http://www.geexbox.org/codecs/Real/Win32/atrc3260.dll.bz2 http://www.geexbox.org/codecs/Real/Win32/sipr3260.dll.bz2 http://www.geexbox.org/codecs/Real/Win32/tokr3260.dll.bz2 http://www.geexbox.org/codecs/WindowsMedia/wmv9dmod.dll.bz2 http://www.geexbox.org/codecs/WindowsMedia/wvc1dmod.dll.bz2 geexbox-1.1/packages/extra-firmwares-nonfree/0000755000175000017500000000000010641745504017444 5ustar benbengeexbox-1.1/packages/extra-firmwares-nonfree/config/0000755000175000017500000000000010641745504020711 5ustar benbengeexbox-1.1/packages/extra-firmwares-nonfree/config/packages.ini0000644000175000017500000002464610641745504023204 0ustar benben[Firmwares/] name=Firmwares for drivers file=http://www.geexbox.org/firmwares/ dir=iso/GEEXBOX/firmwares/ [Firmwares/WiFi/] name=Firmwares for Wireless drivers file=WiFi/ [Firmwares/WiFi/ACX100] name=ACX100 Firmware file=acx/acx100_1.9.8.b/tiacx100.bz2 md5=5df485b1744618d8fca97708dfa96f3f file=acx/acx100_1.9.8.b/tiacx100r0D.bz2 md5=75697180b00bffab806abf46b1cd94fb file=acx/acx100_1.9.8.b/tiacx100r11.bz2 md5=8763f3cb92fd4baad4718bc1f27fa085 file=acx/acx100_1.9.8.b/tiacx100r15.bz2 md5=54ae1e7bb9a1379d4bbaa613dd738cce [Firmwares/WiFi/ACX100USB] name=ACX100USB Firmware file=acx/acx100_1.0.9-USB/tiacx100usbc0D.bz2 md5=adb86f2f81118dfdc007529aed2c5fe7 [Firmwares/WiFi/ACX111] name=ACX111 Firmware file=acx/acx111_1.2.1.34/tiacx111.bz2 md5=e9e690ed5cd2024a7d8ce9fac1131d0c file=acx/acx111_1.2.1.34/tiacx111c16.bz2 md5=53fb04d8ebf5340f29fb75cd3fe64cc8 file=acx/acx111_1.2.1.34/tiacx111c17.bz2 md5=481721734d0fbe8165fdef42da4e62fd file=acx/acx111_1.2.1.34/tiacx111r16.bz2 md5=8c8378136ed56241112996ac549c5828 file=acx/acx111_1.2.1.34/tiacx111r17.bz2 md5=4b136fd2b8ab2e481d345bd9205dcc6c [Firmwares/WiFi/ACX111USB] name=ACX111USB Firmware file=acx/acx111_2.4.0.70-USB/tiacx111usbc1B.bz2 md5=03e1fa1167ebfd75791f058bf363de24 [Firmwares/WiFi/BCM43xx] name=Broadcom BCM43xx (Apple AirPort ...) Firmware file=bcm43xx/bcm43xx_initval01.fw.bz2 md5=04868e78d60cfdbde2556f2a2848e8cc file=bcm43xx/bcm43xx_initval02.fw.bz2 md5=4059d198768f9f8dc9372dc1c54bc3c3 file=bcm43xx/bcm43xx_initval03.fw.bz2 md5=6935ec963d2152a78339daf0f2e525d0 file=bcm43xx/bcm43xx_initval04.fw.bz2 md5=4059d198768f9f8dc9372dc1c54bc3c3 file=bcm43xx/bcm43xx_initval05.fw.bz2 md5=e3fe65439a9bfcc5cb75ad355d3f5aba file=bcm43xx/bcm43xx_initval06.fw.bz2 md5=b05470076e2b6b3311467c36e4404e32 file=bcm43xx/bcm43xx_initval07.fw.bz2 md5=398df0ff09d7b01750408270c3f5d771 file=bcm43xx/bcm43xx_initval09.fw.bz2 md5=e4106910a2cd08d7512b3202213d2e3c file=bcm43xx/bcm43xx_initval10.fw.bz2 md5=4c2aa1efbf27a517eb5d4de109bd2514 file=bcm43xx/bcm43xx_microcode2.fw.bz2 md5=724be146752fec00c9cf1c7d3210c0d5 file=bcm43xx/bcm43xx_microcode4.fw.bz2 md5=6c234f1781a78351e4d1aae1e7c2356a file=bcm43xx/bcm43xx_microcode5.fw.bz2 md5=33e5a45dba0e9f7eb6b9beee5e722819 file=bcm43xx/bcm43xx_pcm4.fw.bz2 md5=ebf9933f3cf8d7e47274ff3837f49827 file=bcm43xx/bcm43xx_pcm5.fw.bz2 md5=ec486695f54c9c54b442dd3bf9fe9929 [Firmwares/WiFi/IPW2100] name=Intel PRO/Wireless 2100 Firmware license=ipw/ipw2100-1.3/LICENSE file=ipw/ipw2100-1.3/ipw2100-1.3-i.fw.bz2 md5=9fac3d40b2a836c11eda6e1ee88d8102 file=ipw/ipw2100-1.3/ipw2100-1.3-p.fw.bz2 md5=d98845daefb9fd0dba035c0b730fd3f6 file=ipw/ipw2100-1.3/ipw2100-1.3.fw.bz2 md5=1c84b3b29f8060b1c6f25f6d4fdfb88f [Firmwares/WiFi/IPW2200] name=Intel Pro/Wireless 2200BG Firmware license=ipw/ipw2200-3.0/LICENSE file=ipw/ipw2200-3.0/ipw2200-bss.fw.bz2 md5=290b024ff8383483280857e006725920 file=ipw/ipw2200-3.0/ipw2200-ibss.fw.bz2 md5=1a57e5d2316ab2523003932717322512 file=ipw/ipw2200-3.0/ipw2200-sniffer.fw.bz2 md5=937b3d7bba05827c88d701d2942aea50 [Firmwares/WiFi/Prism54] name=Prism54 PCI Firmware driver file=prism54/p54pci_1.0.4.3.arm.bz2 md5=a8e9382105ffddbb35c077e2809d041f rename=isl3890.bz2 file=prism54/p54pci_1.1.0.0.arm.bz2 md5=2dd1e17b8b8cecbb945ea903c4bd45f8 rename=isl3877.bz2 [Firmwares/WiFi/Atmel] name=Atmel Firmware driver file=atmel/atmel-firmware-1.3/atmel_at76c502_3com.bin.bz2 md5=fce3442edcefdb875fb942768696a1c7 file=atmel/atmel-firmware-1.3/atmel_at76c502_3com-wpa.bin.bz2 md5=452dda5f3a79845e925376ce340be503 file=atmel/atmel-firmware-1.3/atmel_at76c502.bin.bz2 md5=d499f3d2a4494446c8f1afe6e4a3c76e file=atmel/atmel-firmware-1.3/atmel_at76c502d.bin.bz2 md5=5a3361616e096107e20ea33d240b3d98 file=atmel/atmel-firmware-1.3/atmel_at76c502d-wpa.bin.bz2 md5=d87fdf076b844f9ad1b5449edaa50dc8 file=atmel/atmel-firmware-1.3/atmel_at76c502e.bin.bz2 md5=134e0bfd29b8a7b146fa992c1fe7fc97 file=atmel/atmel-firmware-1.3/atmel_at76c502e-wpa.bin.bz2 md5=1386657bc87d617b75479e1def179a8f file=atmel/atmel-firmware-1.3/atmel_at76c502-wpa.bin.bz2 md5=62bb62a8a8039fb1f3dcd98b3bc4fab8 file=atmel/atmel-firmware-1.3/atmel_at76c503-i3861.bin.bz2 md5=fc5c30e79f703f0e21f8b850fb2f6f81 file=atmel/atmel-firmware-1.3/atmel_at76c503-i3863.bin.bz2 md5=cc40127d3e990061bcee382ef5b7645d file=atmel/atmel-firmware-1.3/atmel_at76c503-rfmd-0.90.2-140.bin.bz2 md5=8c2be008510d36895da6546c0e645aa4 file=atmel/atmel-firmware-1.3/atmel_at76c503-rfmd-acc.bin.bz2 md5=22eea1bfcfabc1ec2d6d46630a0bc93d file=atmel/atmel-firmware-1.3/atmel_at76c503-rfmd.bin.bz2 md5=ee73ba8503279a89ae1741279dc32b01 file=atmel/atmel-firmware-1.3/atmel_at76c504_2958-wpa.bin.bz2 md5=57053a49ecb9135ba37c704b892fe256 file=atmel/atmel-firmware-1.3/atmel_at76c504a_2958-wpa.bin.bz2 md5=a93edca6213430404e282f3400b0705d file=atmel/atmel-firmware-1.3/atmel_at76c504.bin.bz2 md5=56fa79125e6766b8cf2a8d2bd53db165 file=atmel/atmel-firmware-1.3/atmel_at76c504c-wpa.bin.bz2 md5=c1958f4b9a2f99f6f43e257e0666a989 file=atmel/atmel-firmware-1.3/atmel_at76c505a-rfmd2958.bin.bz2 md5=f9a479159f1d6cfedab157fd7025a87a file=atmel/atmel-firmware-1.3/atmel_at76c505-rfmd2958.bin.bz2 md5=54f111e6eeef9919f8f80879d9996af0 file=atmel/atmel-firmware-1.3/atmel_at76c505-rfmd.bin.bz2 md5=2b78d8525f4f7166b3814e5cb91a228e file=atmel/atmel-firmware-1.3/atmel_at76c506.bin.bz2 md5=94f85dcf0fe2373a39d5a4135710421c file=atmel/atmel-firmware-1.3/atmel_at76c506-wpa.bin.bz2 md5=3c9788635146ef960f1bc0913233780d [Firmwares/WiFi/ZD1201] name=ZyDAS ZD1201 Firmware driver file=zd1201/zd1201-ap.fw.bz2 md5=dc240a34442b080a1193c492414f3b42 file=zd1201/zd1201.fw.bz2 md5=a3843e36e87cd0372f092887f34bfcb7 [Firmwares/WiFi/ZD1211] name=ZyDAS ZD1211/ZD1211B USB Wireless Firmware driver dir=iso/GEEXBOX/firmwares/zd1211/ file=zd1211/zd1211b_ub.bz2 md5=3d6759a000815640fd7871f745314b0f file=zd1211/zd1211b_uph.bz2 md5=ab872779e6b0e67e722a6c8fc926e616 file=zd1211/zd1211b_uphm.bz2 md5=b38e8e1888ab04fa4be36e1772da5379 file=zd1211/zd1211b_uphr.bz2 md5=4566f2f0bb98f14a959f8757e4d1bd34 file=zd1211/zd1211b_ur.bz2 md5=e38fe7986202e170fa5d84eb88b670d9 file=zd1211/zd1211_ub.bz2 md5=a0a1a65e4706bf9fbca5b5b01f14b7fc file=zd1211/zd1211_uph.bz2 md5=ab872779e6b0e67e722a6c8fc926e616 file=zd1211/zd1211_uphm.bz2 md5=7891ab06be8cc1c5642cf824d8d9a750 file=zd1211/zd1211_uphr.bz2 md5=4f6e8e27d3f1bf974eae37ad344363c6 file=zd1211/zd1211_ur.bz2 md5=e38fe7986202e170fa5d84eb88b670d9 [Firmwares/WiFi/RT61] name=Ralink RT61 Wireless Firmware driver dir=iso/GEEXBOX/firmwares/rt61/ file=ralink/rt61/rt2561.bin.bz2 md5=5e343be72659e5d6cb53d36611d1dd04 file=ralink/rt61/rt2561s.bin.bz2 md5=0a3ccd1b42f59cb1d1b706f28f0f87dc file=ralink/rt61/rt2661.bin.bz2 md5=bf8ac3d9b78031d95adcd71d969c21e0 [Firmwares/WiFi/RT73] name=Ralink RT73 Wireless Firmware driver dir=iso/GEEXBOX/firmwares/rt73/ file=ralink/rt73/rt73.bin.bz2 md5=991656c35d5979a016e859d9e341499a [Firmwares/DVB/] name=Firmware for the DVB cards. file=DVB/ [Firmwares/DVB/dvb-usb-a800] name=Firmware for the AVerMedia AVerTV DVB-T USB 2.0 card. file=dvb-usb-a800/dvb-usb-avertv-a800-02.fw.bz2 md5=c29f6ca057792ebc29be0631203bdb58 [Firmwares/DVB/dvb-usb-dibusb-mb] name=Firmware for DIBcom USB 1.1 DVB-T devices. file=dvb-usb-dibusb-mb/dvb-usb-dibusb-5.0.0.11.fw.bz2 md5=152373433e4178d128ec00575d2f8777 [Firmwares/DVB/dvb-usb-dibusb-mc] name=Firmware for the Artec T1 USB2.0 DVB-T USB device. file=dvb-usb-dibusb-mc/dvb-usb-dibusb-6.0.0.8.fw.bz2 md5=ac5e2cef27c08f53f0d816626bfe1bd3 [Firmwares/DVB/dvb-usb-dtt200u/] name=Firmwares for the WideView/Yakumo/Hama/Typhoon/Yuan Boxes and Pens. [Firmwares/DVB/dvb-usb-dtt200u/dtt200u] name=Firmware for the WideView/Yuan/Yakumo/Hama/Typhoon DVB-T USB2.0 (WT-200U) file=dvb-usb-dtt200u/dvb-usb-dtt200u-01.fw.bz2 md5=87a6b8fd649b6ae7f8790530ffde36c1 [Firmwares/DVB/dvb-usb-dtt200u/wt220u] name=Firmware for the WideView WT-220U PenType Receiver (and clones) file=dvb-usb-dtt200u/dvb-usb-wt220u-01.fw.bz2 md5=c9e2fc2e3bdc62ca52f5c98f9aac4e84 [Firmwares/DVB/cxusb-bluebird] name=Firmware for the frontend of some DViCO FusionHDTV (Bluebird) USB2.0 cards. file=cxusb-bluebird/dvb-usb-bluebird-01.fw.bz2 md5=c7dfeffc8e479dad1bffa09840c5522d [Firmwares/DVB/nxt200x] name=Firmware for the frontend of some Technisat/B2C2 Sky/Air/Cable2PC USB file=nxt2002/dvb-fe-nxt2002.fw.bz2 md5=9da8860dfa3d379cc84ee6b40eb167da file=nxt2004/dvb-fe-nxt2004.fw.bz2 md5=d4667fb7f1b8ae7fba0b8749ed6a6908 [Firmwares/DVB/or51132] name=Firmware for the OREN 51132 demodulators. file=or51132/dvb-fe-or51132-qam.fw.bz2 md5=0948363fcd00f989346fc6d6723710d4 file=or51132/dvb-fe-or51132-vsb.fw.bz2 md5=4bc3a4973974f13323fc50158c6d69c8 [Firmwares/DVB/or51211] name=Firmware for OREN or51211 demodulators. file=or51211/dvb-fe-or51211.fw.bz2 md5=897b9ed4f2c52f68a8a3f2a5f82820fa [Firmwares/DVB/sp8870] name=Firmware for the SP8870 based demodulators. file=sp8870/dvb-fe-sp8870.fw.bz2 md5=7eb13762632f6d15e304f5f6383d6408 [Firmwares/DVB/sp887x] name=Firmware for the SP887x based demodulators. file=sp887x/dvb-fe-sp887x.fw.bz2 md5=3159053213c98893fc10517c362354ca [Firmwares/DVB/tda1004x/] name=Firmware for the Philips TDA10045H/TDA10046H based cards [Firmwares/DVB/tda1004x/TDA10045H] name=Firmware for the Philips TDA10045H based card file=tda1004x/dvb-fe-tda10045.fw.bz2 md5=64040708bbd6a0dff0b76fcdbaa645b1 [Firmwares/DVB/tda1004x/TDA10046H] name=Firmware for the Philips TDA10046H based card file=tda1004x/dvb-fe-tda10046.fw.bz2 md5=fce4dcf2915d28f5bd8e52df37175edb [Firmwares/DVB/ttpci] name=Firmware for the AV7110 based DVB cards. file=ttpci/2622/dvb-ttpci-01.fw.bz2 md5=f1e6c403888603cf2bccc752493209c0 [Firmwares/DVB/ttusb_dec/] name=Firmware for the Technotrend DEC Budget USB1.1 (DVB-S/T) based cards. [Firmwares/DVB/ttusb_dec/DEC2000-t] name=Firmware for the Technotrend DEC Budget USB1.1 DEC2000-T file=ttusb_dec/dvb-ttusb-dec-2000t.fw.bz2 md5=aa2741d99341331c444af2beea34b158 [Firmwares/DVB/ttusb_dec/DEC2540-t] name=Firmware for the Technotrend DEC Budget USB1.1 DEC2540-T file=ttusb_dec/dvb-ttusb-dec-2540t.fw.bz2 md5=5bdd31c517e667ec047f13f59947c047 [Firmwares/DVB/ttusb_dec/DEC3000-s] name=Firmware for the Technotrend DEC Budget USB1.1 DEC3000-S file=ttusb_dec/dvb-ttusb-dec-3000s.fw.bz2 md5=fdf8ec99c55301b04e5ad586c957540d [Firmwares/DVB/umt-010] name=Firmware for the HanfTek UMT-010 card. file=umt-010/dvb-usb-umt-010-02.fw.bz2 md5=49979c657355e8ff3158d7ac39d9273f [Firmwares/DVB/vp702x] name=Firmware for the TwinhanDTV StarBox - DVB-S based cards. file=vp702x/dvb-usb-vp702x-01.fw.bz2 md5=fde23b38e662c2ebe8f8e090338d4c94 [Firmwares/DVB/vp7045] name=Firmware for the Twinhan DVB-T USB2.0 based cards. file=vp7045/dvb-usb-vp7045-01.fw.bz2 md5=3c73a3f380ec08b845e5c11a286fe1d3 geexbox-1.1/packages/extra-firmwares-nonfree/install0000755000175000017500000000036310641745504021042 0ustar benben#!/bin/sh . config/options mkdir -p $INSTALL/firmwares cp $BUILD/$1*/* $INSTALL/firmwares mkdir -p $INSTALL/firmwares/zd1211 mv $INSTALL/firmwares/zd1211_* $INSTALL/firmwares/zd1211 mv $INSTALL/firmwares/zd1211b_* $INSTALL/firmwares/zd1211 geexbox-1.1/packages/extra-firmwares-nonfree/unpack0000755000175000017500000000043210641745504020652 0ustar benben#!/bin/sh . config/options mkdir -p $BUILD/$1 $SCRIPTS/extract $1 "*" $BUILD/$1 # Rename firmwares that need to be mv $BUILD/$1/p54pci_1.0.4.3.arm.bz2 $BUILD/$1/isl3890.bz2 mv $BUILD/$1/p54pci_1.1.0.0.arm.bz2 $BUILD/$1/isl3877.bz2 # Uncompress firmwares bunzip2 $BUILD/$1/*.bz2 geexbox-1.1/packages/extra-firmwares-nonfree/url0000644000175000017500000001620210641745504020172 0ustar benbenhttp://www.geexbox.org/firmwares/WiFi/bcm43xx/bcm43xx_initval01.fw.bz2 http://www.geexbox.org/firmwares/WiFi/bcm43xx/bcm43xx_initval02.fw.bz2 http://www.geexbox.org/firmwares/WiFi/bcm43xx/bcm43xx_initval03.fw.bz2 http://www.geexbox.org/firmwares/WiFi/bcm43xx/bcm43xx_initval04.fw.bz2 http://www.geexbox.org/firmwares/WiFi/bcm43xx/bcm43xx_initval05.fw.bz2 http://www.geexbox.org/firmwares/WiFi/bcm43xx/bcm43xx_initval06.fw.bz2 http://www.geexbox.org/firmwares/WiFi/bcm43xx/bcm43xx_initval07.fw.bz2 http://www.geexbox.org/firmwares/WiFi/bcm43xx/bcm43xx_initval09.fw.bz2 http://www.geexbox.org/firmwares/WiFi/bcm43xx/bcm43xx_initval10.fw.bz2 http://www.geexbox.org/firmwares/WiFi/bcm43xx/bcm43xx_microcode2.fw.bz2 http://www.geexbox.org/firmwares/WiFi/bcm43xx/bcm43xx_microcode4.fw.bz2 http://www.geexbox.org/firmwares/WiFi/bcm43xx/bcm43xx_microcode5.fw.bz2 http://www.geexbox.org/firmwares/WiFi/bcm43xx/bcm43xx_pcm4.fw.bz2 http://www.geexbox.org/firmwares/WiFi/bcm43xx/bcm43xx_pcm5.fw.bz2 http://www.geexbox.org/firmwares/WiFi/acx/acx100_1.9.8.b/tiacx100.bz2 http://www.geexbox.org/firmwares/WiFi/acx/acx100_1.9.8.b/tiacx100r0D.bz2 http://www.geexbox.org/firmwares/WiFi/acx/acx100_1.9.8.b/tiacx100r11.bz2 http://www.geexbox.org/firmwares/WiFi/acx/acx100_1.9.8.b/tiacx100r15.bz2 http://www.geexbox.org/firmwares/WiFi/acx/acx100_1.0.9-USB/tiacx100usbc0D.bz2 http://www.geexbox.org/firmwares/WiFi/acx/acx111_1.2.1.34/tiacx111.bz2 http://www.geexbox.org/firmwares/WiFi/acx/acx111_1.2.1.34/tiacx111c16.bz2 http://www.geexbox.org/firmwares/WiFi/acx/acx111_1.2.1.34/tiacx111r16.bz2 http://www.geexbox.org/firmwares/WiFi/acx/acx111_1.2.1.34/tiacx111c17.bz2 http://www.geexbox.org/firmwares/WiFi/acx/acx111_1.2.1.34/tiacx111r17.bz2 http://www.geexbox.org/firmwares/WiFi/acx/acx111_2.4.0.70-USB/tiacx111usbc1B.bz2 http://www.geexbox.org/firmwares/WiFi/atmel/atmel-firmware-1.3/atmel_at76c502_3com.bin.bz2 http://www.geexbox.org/firmwares/WiFi/atmel/atmel-firmware-1.3/atmel_at76c502_3com-wpa.bin.bz2 http://www.geexbox.org/firmwares/WiFi/atmel/atmel-firmware-1.3/atmel_at76c502.bin.bz2 http://www.geexbox.org/firmwares/WiFi/atmel/atmel-firmware-1.3/atmel_at76c502d.bin.bz2 http://www.geexbox.org/firmwares/WiFi/atmel/atmel-firmware-1.3/atmel_at76c502d-wpa.bin.bz2 http://www.geexbox.org/firmwares/WiFi/atmel/atmel-firmware-1.3/atmel_at76c502e.bin.bz2 http://www.geexbox.org/firmwares/WiFi/atmel/atmel-firmware-1.3/atmel_at76c502e-wpa.bin.bz2 http://www.geexbox.org/firmwares/WiFi/atmel/atmel-firmware-1.3/atmel_at76c502-wpa.bin.bz2 http://www.geexbox.org/firmwares/WiFi/atmel/atmel-firmware-1.3/atmel_at76c504_2958-wpa.bin.bz2 http://www.geexbox.org/firmwares/WiFi/atmel/atmel-firmware-1.3/atmel_at76c504a_2958-wpa.bin.bz2 http://www.geexbox.org/firmwares/WiFi/atmel/atmel-firmware-1.3/atmel_at76c504.bin.bz2 http://www.geexbox.org/firmwares/WiFi/atmel/atmel-firmware-1.3/atmel_at76c504c-wpa.bin.bz2 http://www.geexbox.org/firmwares/WiFi/atmel/atmel-firmware-1.3/atmel_at76c506.bin.bz2 http://www.geexbox.org/firmwares/WiFi/atmel/atmel-firmware-1.3/atmel_at76c506-wpa.bin.bz2 http://www.geexbox.org/firmwares/WiFi/atmel/atmel-firmware-1.3/atmel_at76c503-i3861.bin.bz2 http://www.geexbox.org/firmwares/WiFi/atmel/atmel-firmware-1.3/atmel_at76c503-i3863.bin.bz2 http://www.geexbox.org/firmwares/WiFi/atmel/atmel-firmware-1.3/atmel_at76c503-rfmd-0.90.2-140.bin.bz2 http://www.geexbox.org/firmwares/WiFi/atmel/atmel-firmware-1.3/atmel_at76c503-rfmd-acc.bin.bz2 http://www.geexbox.org/firmwares/WiFi/atmel/atmel-firmware-1.3/atmel_at76c503-rfmd.bin.bz2 http://www.geexbox.org/firmwares/WiFi/atmel/atmel-firmware-1.3/atmel_at76c505a-rfmd2958.bin.bz2 http://www.geexbox.org/firmwares/WiFi/atmel/atmel-firmware-1.3/atmel_at76c505-rfmd2958.bin.bz2 http://www.geexbox.org/firmwares/WiFi/atmel/atmel-firmware-1.3/atmel_at76c505-rfmd.bin.bz2 http://www.geexbox.org/firmwares/WiFi/ipw/ipw2100-1.3/ipw2100-1.3-i.fw.bz2 http://www.geexbox.org/firmwares/WiFi/ipw/ipw2100-1.3/ipw2100-1.3-p.fw.bz2 http://www.geexbox.org/firmwares/WiFi/ipw/ipw2100-1.3/ipw2100-1.3.fw.bz2 http://www.geexbox.org/firmwares/WiFi/ipw/ipw2200-3.0/ipw2200-bss.fw.bz2 http://www.geexbox.org/firmwares/WiFi/ipw/ipw2200-3.0/ipw2200-ibss.fw.bz2 http://www.geexbox.org/firmwares/WiFi/ipw/ipw2200-3.0/ipw2200-sniffer.fw.bz2 http://www.geexbox.org/firmwares/WiFi/prism54/p54pci_1.0.4.3.arm.bz2 http://www.geexbox.org/firmwares/WiFi/prism54/p54pci_1.1.0.0.arm.bz2 http://www.geexbox.org/firmwares/WiFi/ralink/rt61/rt2561.bin.bz2 http://www.geexbox.org/firmwares/WiFi/ralink/rt61/rt2561s.bin.bz2 http://www.geexbox.org/firmwares/WiFi/ralink/rt61/rt2661.bin.bz2 http://www.geexbox.org/firmwares/WiFi/zd1201/zd1201-ap.fw.bz2 http://www.geexbox.org/firmwares/WiFi/zd1201/zd1201.fw.bz2 http://www.geexbox.org/firmwares/WiFi/zd1211/zd1211b_ub.bz2 http://www.geexbox.org/firmwares/WiFi/zd1211/zd1211b_uph.bz2 http://www.geexbox.org/firmwares/WiFi/zd1211/zd1211b_uphm.bz2 http://www.geexbox.org/firmwares/WiFi/zd1211/zd1211b_uphr.bz2 http://www.geexbox.org/firmwares/WiFi/zd1211/zd1211b_ur.bz2 http://www.geexbox.org/firmwares/WiFi/zd1211/zd1211_ub.bz2 http://www.geexbox.org/firmwares/WiFi/zd1211/zd1211_uph.bz2 http://www.geexbox.org/firmwares/WiFi/zd1211/zd1211_uphm.bz2 http://www.geexbox.org/firmwares/WiFi/zd1211/zd1211_uphr.bz2 http://www.geexbox.org/firmwares/WiFi/zd1211/zd1211_ur.bz2 http://www.geexbox.org/firmwares/DVB/dvb-usb-a800/dvb-usb-avertv-a800-02.fw.bz2 http://www.geexbox.org/firmwares/DVB/dvb-usb-dibusb-mb/dvb-usb-dibusb-5.0.0.11.fw.bz2 http://www.geexbox.org/firmwares/DVB/dvb-usb-dibusb-mc/dvb-usb-dibusb-6.0.0.8.fw.bz2 http://www.geexbox.org/firmwares/DVB/dvb-usb-dtt200u/dvb-usb-dtt200u-01.fw.bz2 http://www.geexbox.org/firmwares/DVB/dvb-usb-dtt200u/dvb-usb-wt220u-01.fw.bz2 http://www.geexbox.org/firmwares/DVB/cxusb-bluebird/dvb-usb-bluebird-01.fw.bz2 http://www.geexbox.org/firmwares/DVB/nxt2002/dvb-fe-nxt2002.fw.bz2 http://www.geexbox.org/firmwares/DVB/nxt2004/dvb-fe-nxt2004.fw.bz2 http://www.geexbox.org/firmwares/DVB/or51132/dvb-fe-or51132-qam.fw.bz2 http://www.geexbox.org/firmwares/DVB/or51132/dvb-fe-or51132-vsb.fw.bz2 http://www.geexbox.org/firmwares/DVB/or51211/dvb-fe-or51211.fw.bz2 http://www.geexbox.org/firmwares/DVB/sp8870/dvb-fe-sp8870.fw.bz2 http://www.geexbox.org/firmwares/DVB/sp887x/dvb-fe-sp887x.fw.bz2 http://www.geexbox.org/firmwares/DVB/tda1004x/dvb-fe-tda10045.fw.bz2 http://www.geexbox.org/firmwares/DVB/tda1004x/dvb-fe-tda10046.fw.bz2 http://www.geexbox.org/firmwares/DVB/ttpci/261f/dvb-ttpci-01.fw.bz2 http://www.geexbox.org/firmwares/DVB/ttusb_dec/dvb-ttusb-dec-2000t.fw.bz2 http://www.geexbox.org/firmwares/DVB/ttusb_dec/dvb-ttusb-dec-2540t.fw.bz2 http://www.geexbox.org/firmwares/DVB/ttusb_dec/dvb-ttusb-dec-3000s.fw.bz2 http://www.geexbox.org/firmwares/DVB/umt-010/dvb-usb-umt-010-02.fw.bz2 http://www.geexbox.org/firmwares/DVB/vp702x/dvb-usb-vp702x-01.fw.bz2 http://www.geexbox.org/firmwares/DVB/vp7045/dvb-usb-vp7045-01.fw.bz2 http://www.geexbox.org/firmwares/IVTV/v4l-cx2341x-dec.fw.bz2 http://www.geexbox.org/firmwares/IVTV/v4l-cx2341x-enc.fw.bz2 http://www.geexbox.org/firmwares/IVTV/v4l-cx2341x-init.mpg.bz2 http://www.geexbox.org/firmwares/IVTV/v4l-cx25840.fw.bz2 http://www.geexbox.org/firmwares/IVTV/v4l-pvrusb2-24xxx-01.fw.bz2 http://www.geexbox.org/firmwares/IVTV/v4l-pvrusb2-29xxx-01.fw.bz2 geexbox-1.1/packages/extra-fonts-nonfree/0000755000175000017500000000000010641745504016576 5ustar benbengeexbox-1.1/packages/extra-fonts-nonfree/unpack0000755000175000017500000000015210641745504020003 0ustar benben#!/bin/sh . config/options mkdir -p $BUILD/$1 $SCRIPTS/extract $1 "*" $BUILD/$1 bunzip2 $BUILD/$1/*.bz2 geexbox-1.1/packages/extra-fonts-nonfree/url0000644000175000017500000000044510641745504017326 0ustar benbenhttp://www.geexbox.org/fonts/asian/arphic/gkai00mp.ttf.bz2 http://www.geexbox.org/fonts/asian/arphic/bkai00mp.ttf.bz2 http://www.geexbox.org/fonts/asian/baekmuk/dotum.ttf.bz2 http://www.geexbox.org/fonts/asian/gt200001.ttf.bz2 http://www.geexbox.org/fonts/asian/mikachanfonts/mikachan.ttf.bz2 geexbox-1.1/packages/fbi/0000755000175000017500000000000010641745504013432 5ustar benbengeexbox-1.1/packages/fbi/build0000755000175000017500000000043510641745504014461 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain $SCRIPTS/build libpcd $SCRIPTS/build jpeg $SCRIPTS/build libpng $SCRIPTS/build zlib $SCRIPTS/build libungif $SCRIPTS/build libexif $SCRIPTS/build lirc CFLAGS="$CFLAGS -ffast-math" make -C $BUILD/$1* \ verbose=yes \ fbi geexbox-1.1/packages/fbi/install0000755000175000017500000000066110641745504015031 0ustar benben#!/bin/sh . config/options $SCRIPTS/install libpng mkdir -p $INSTALL/usr/bin cp $BUILD/$1*/$1 $INSTALL/usr/bin cp $PACKAGES/$1/scripts/fbi_wrapper $INSTALL/usr/bin cp $PACKAGES/$1/scripts/view_img $INSTALL/usr/bin mkdir -p $INSTALL/usr/lib/kbd/consolefonts $SCRIPTS/extract $1 "*.psf" $INSTALL/usr/lib/kbd/consolefonts mkdir -p $INSTALL/etc cp $CONFIG/img_ext $INSTALL/etc echo $VIEW_IMG_TIMEOUT > $INSTALL/etc/view_img_timeout geexbox-1.1/packages/fbi/patches/0000755000175000017500000000000010641745504015061 5ustar benbengeexbox-1.1/packages/fbi/patches/10_lirc.diff0000644000175000017500000000165010641745504017146 0ustar benbendiff -Naur fbi-1.31.orig/fbi.c fbi-1.31/fbi.c --- fbi-1.31.orig/fbi.c 2004-04-03 00:20:19.000000000 +0200 +++ fbi-1.31/fbi.c 2004-04-03 00:55:02.000000000 +0200 @@ -942,7 +942,9 @@ redraw = 1; left += steps; - } else if (0 == strcmp(key, "\x1b[5~")) { + } else if (0 == strcmp(key, "\x1b[5~") || + 0 == strcmp(key, "b") || + 0 == strcmp(key, "B")) { return KEY_PGUP; } else if (0 == strcmp(key, "\x1b[6~") || 0 == strcmp(key, "n") || diff -Naur fbi-1.31.orig/lirc.c fbi-1.31/lirc.c --- fbi-1.31.orig/lirc.c 2004-04-03 00:20:19.000000000 +0200 +++ fbi-1.31/lirc.c 2004-04-03 00:20:31.000000000 +0200 @@ -22,7 +22,7 @@ fprintf(stderr,"lirc: no infrared remote support available\n"); return -1; } - if (0 != lirc_readconfig(NULL,&config,NULL)) { + if (0 != lirc_readconfig("/etc/lircrc",&config,NULL)) { config = NULL; } if (debug) geexbox-1.1/packages/fbi/patches/20_nofork.diff0000644000175000017500000000070410641745504017513 0ustar benbendiff -Naur fbi-1.31.orig/fbtools.c fbi-1.31/fbtools.c --- fbi-1.31.orig/fbtools.c 2004-12-30 01:56:26.767298760 +0100 +++ fbi-1.31/fbtools.c 2004-12-30 01:56:36.956749728 +0100 @@ -265,6 +265,8 @@ fprintf(stderr,"access %s: %s\n",vtname,strerror(errno)); exit(1); } + + /* do not fork! switch (fork()) { case 0: break; @@ -274,6 +276,8 @@ default: exit(0); } + */ + close(tty); close(0); close(1); geexbox-1.1/packages/fbi/patches/30_crosscompile.diff0000644000175000017500000000077310641745504020726 0ustar benben--- fbi-1.31.orig/mk/Variables.mk Wed Nov 17 14:54:13 2004 +++ fbi-1.31/mk/Variables.mk Wed Nov 17 14:54:29 2004 @@ -33,12 +33,6 @@ CFLAGS += -Wall -Wmissing-prototypes -Wstrict-prototypes \ -Wpointer-arith -Wunused -# add /usr/local to the search path if something is in there ... -ifneq ($(wildcard /usr/local/include/*.h),) - CFLAGS += -I/usr/local/include - LDFLAGS += -L/usr/local/$(LIB) -endif - # fixup include path for $(srcdir) != "." ifneq ($(srcdir),.) CFLAGS += -I. -I$(srcdir) geexbox-1.1/packages/fbi/patches/40_no-sys_siglist.diff0000644000175000017500000000044010641745504021202 0ustar benbendiff -Nur fbi-1.31.orig/fbtools.c fbi-1.31/fbtools.c --- fbi-1.31.orig/fbtools.c Sun Feb 22 14:27:40 2004 +++ fbi-1.31/fbtools.c Fri Sep 16 13:03:24 2005 @@ -518,6 +518,5 @@ /* cleanup */ fb_cleanup(); - fprintf(stderr,"Oops: %s\n",sys_siglist[termsig]); exit(42); } geexbox-1.1/packages/fbi/patches/50_alt-scroll-keys.diff0000644000175000017500000000240310641745504021243 0ustar benbendiff -Nur fbi-1.31.orig/fbi.c fbi-1.31/fbi.c --- fbi-1.31.orig/fbi.c 2005-12-18 17:25:44.000000000 +0800 +++ fbi-1.31/fbi.c 2005-12-19 00:58:33.000000000 +0800 @@ -923,10 +923,12 @@ return KEY_SPACE; } - } else if (0 == strcmp(key, "\x1b[A") && img->i.height > fb_var.yres) { + } else if (( 0 == strcmp(key, "\x1b[A") || 0 == strcmp(key, "u")) + && img->i.height > fb_var.yres) { redraw = 1; top -= steps; - } else if (0 == strcmp(key, "\x1b[B") && img->i.height > fb_var.yres) { + } else if (( 0 == strcmp(key, "\x1b[B") || 0 == strcmp(key, "d")) + && img->i.height > fb_var.yres) { redraw = 1; top += steps; } else if (0 == strcmp(key, "\x1b[1~") && img->i.height > fb_var.yres) { @@ -935,10 +937,12 @@ } else if (0 == strcmp(key, "\x1b[4~")) { redraw = 1; top = img->i.height - fb_var.yres; - } else if (0 == strcmp(key, "\x1b[D") && img->i.width > fb_var.xres) { + } else if ((0 == strcmp(key, "\x1b[D") || 0 == strcmp(key, "<")) + && img->i.width > fb_var.xres) { redraw = 1; left -= steps; - } else if (0 == strcmp(key, "\x1b[C") && img->i.width > fb_var.xres) { + } else if ((0 == strcmp(key, "\x1b[C") || 0 == strcmp(key, ">")) + && img->i.width > fb_var.xres) { redraw = 1; left += steps; geexbox-1.1/packages/fbi/scripts/0000755000175000017500000000000010641745504015121 5ustar benbengeexbox-1.1/packages/fbi/scripts/fbi_wrapper0000755000175000017500000000052510641745504017351 0ustar benben#!/bin/sh if [ -f /var/view_img_timeout ]; then VIEW_IMG_TIMEOUT=`cat /var/view_img_timeout` else VIEW_IMG_TIMEOUT=`cat /etc/view_img_timeout` fi if [ $VIEW_IMG_TIMEOUT -eq 0 ] ; then VIEW_IMG_TIMEOUT="" else VIEW_IMG_TIMEOUT="--timeout $VIEW_IMG_TIMEOUT" fi fbi -a -q $VIEW_IMG_TIMEOUT --once --list /tmp/view_img_files >/dev/null geexbox-1.1/packages/fbi/scripts/view_img0000755000175000017500000000127610641745504016663 0ustar benben#!/bin/sh for i in `cat /etc/img_ext`; do if [ -z "$EXTS" ]; then EXTS="$i" else EXTS="$EXTS\|$i" fi done if test "$1" = "-a"; then # display all images in the selected folder DIR=$2 [ -d "$DIR" ] || DIR=${DIR%/[^/]*}/ ls -1 "$DIR" | grep -i "\.\($EXTS\)\$" | sed "s%\(.*\)%$DIR\1%" > /tmp/view_img_files elif test "$1" = "-r"; then # display all images in the selected folder and its subfolders (recursive) DIR=$2 [ -d "$DIR" ] || DIR=${DIR%/[^/]*}/ find "$DIR" | grep -i "\.\($EXTS\)\$" > /tmp/view_img_files else # display a single image echo "$1" > /tmp/view_img_files fi if [ -s /tmp/view_img_files ]; then echo 'quit 165' > /var/mp_control else exit 1 fi geexbox-1.1/packages/fbi/unpack0000755000175000017500000000143710641745504014646 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain sed -i 's/\$(call ac_header,X11\/X.h)/no/' $BUILD/$1*/GNUmakefile sed -i 's/\$(call ac_lib,pcd_open,pcd)/yes/' $BUILD/$1*/GNUmakefile sed -i 's/\$(call ac_lib,jpeg_start_compress,jpeg)/yes/' $BUILD/$1*/GNUmakefile sed -i 's/\$(call ac_lib,DGifOpenFileName,ungif)/yes/' $BUILD/$1*/GNUmakefile sed -i 's/\$(call ac_lib,png_read_info,png,-lz)/yes/' $BUILD/$1*/GNUmakefile sed -i 's/\$(call ac_lib,TIFFOpen,tiff)/no/' $BUILD/$1*/GNUmakefile sed -i 's/\$(call ac_lib,exif_data_new_from_file,exif,-lm)/yes/' $BUILD/$1*/GNUmakefile sed -i 's/\$(call ac_lib,curl_easy_init,curl)/no/' $BUILD/$1*/GNUmakefile sed -i 's/\$(call ac_lib,lirc_init,lirc_client)/yes/' $BUILD/$1*/GNUmakefile for I in $BUILD/$1*/*.c; do sed -i 's/stderr/stdout/g' $I done geexbox-1.1/packages/fbi/url0000644000175000017500000000011610641745504014155 0ustar benbenhttp://dl.bytesex.org/releases/fbida/fbi_1.31.tar.gz GEEXBOX_SRCS/lat1-16.psf geexbox-1.1/packages/freetype/0000755000175000017500000000000010641745504014515 5ustar benbengeexbox-1.1/packages/freetype/build0000755000175000017500000000042610641745504015544 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain $SCRIPTS/build zlib cd $BUILD/$1* ./configure \ --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=$LIB_PREFIX \ --disable-shared \ --with-zlib make make install geexbox-1.1/packages/freetype/unpack0000755000175000017500000000011410641745504015720 0ustar benben#!/bin/sh . config/options $SCRIPTS/fixconfigtools $BUILD/$1*/builds/unix geexbox-1.1/packages/freetype/url0000644000175000017500000000010410641745504015235 0ustar benbenhttp://prdownloads.sourceforge.net/freetype/freetype-2.1.10.tar.bz2 geexbox-1.1/packages/freevo/0000755000175000017500000000000010641745504014160 5ustar benbengeexbox-1.1/packages/freevo/build0000755000175000017500000000106310641745504015205 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain $SCRIPTS/build Python $SCRIPTS/build pygame $SCRIPTS/build imlib2 $SCRIPTS/build pysqlite $SCRIPTS/build pylirc $SCRIPTS/build kaa HOST_PYTHON="`ls -d $ROOT/$BUILD/Python*/objdir/buildpython`/python" SITE_PACKAGES="`ls -d $LIB_PREFIX/lib/python*/site-packages`" cd $BUILD/$1* $HOST_PYTHON setup.py install --prefix=$LIB_PREFIX rm -f $SITE_PACKAGES/freevo/ui/config/configfile.pyc for P in `find "$SITE_PACKAGES/freevo" -name '*.pyc' -o -name 'configfile.py' -o -print`; do [ -f "$P" ] && rm -f "$P" done geexbox-1.1/packages/freevo/config/0000755000175000017500000000000010641745504015425 5ustar benbengeexbox-1.1/packages/freevo/config/freevo.conf0000644000175000017500000000015510641745504017563 0ustar benbenchanlist = france display = framebuffer geometry = 800x600 mplayer = /usr/bin/mplayer tv = pal version = 2.1 geexbox-1.1/packages/freevo/config/local_conf.py0000644000175000017500000010565510641745504020112 0ustar benben# -*- coding: iso-8859-1 -*- # ----------------------------------------------------------------------------- # freevo_config.py - System configuration # ----------------------------------------------------------------------------- # $Id: local_conf.py.example 8140 2006-04-07 17:20:56Z dmeyer $ # # WARNING: this file is not up to date! # # Notes: # # This is no normal config file, it's Python code. Because of that, you # need to follow some rules to avoid crashes. The examples should explain # the settings, but make sure a line starting with a variable has # NO SPACES OR TABS at the beginning. # # ----------------------------------------------------------------------------- # Freevo - A Home Theater PC framework # Copyright (C) 2002-2005 Krister Lagerstrom, Dirk Meyer, et al. # # Maintainer: Dirk Meyer # # Please see the file doc/CREDITS for a complete list of authors. # # 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 # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of MER- # CHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------------- CONFIG_VERSION = 8.0 # ====================================================================== # General freevo settings: # ====================================================================== # AUDIO_DEVICE = '/dev/dsp' # e.g.: /dev/dsp0, /dev/audio # AUDIO_INPUT_DEVICE = '/dev/dsp1' # e.g.: /dev/dsp0, /dev/audio # MAJOR_AUDIO_CTRL = 'VOL' # Freevo takes control over one audio ctrl # 'VOL', 'PCM' 'OGAIN' etc. # CONTROL_ALL_AUDIO = 1 # Should Freevo take complete control of audio # MAX_VOLUME = 90 # Set what you want maximum volume level to be. # DEFAULT_VOLUME = 40 # Set default volume level. # TV_IN_VOLUME = 60 # Set this to your preferred level 0-100. # VCR_IN_VOLUME = 90 # If you use different input from TV # DEV_MIXER = '/dev/mixer' # mixer device # START_FULLSCREEN_X = 0 # Start in fullscreen mode if using x11 or xv. # CONFIRM_SHUTDOWN = 1 # ask before shutdown # # Physical ROM drives, multiple ones can be specified # by adding comma-seperated and quoted entries. # # Format [ ('mountdir1', 'devicename1', 'displayed name1'), # ('mountdir2', 'devicename2', 'displayed name2'), ...] # # Set to None to autodetect drives in during startup from /etc/fstab, # set to [] to disable rom drive support at all # ROM_DRIVES = None # # Hide discs from the wrong menu (e.g. VCDs in audio menu) and empty discs. # HIDE_UNUSABLE_DISCS = 1 # # Attempt to set the speed of the ROM drive. A good value for keeping the # drive silent while playing movies is 8. # ROM_SPEED = 8 # # Perform a whole system shutdown at SHUTDOWN! Useful for standalone boxes. # # ENABLE_SHUTDOWN_SYS = 0 # # You can add more keybindings by adding them to the correct hash. # e.g. If you want to send 'contrast -100' to mplayer by pressing the '1' key, # just add the following line: # # EVENTS['video']['1'] = Event(VIDEO_SEND_MPLAYER_CMD, arg='contrast -100') # # See src/event.py for a list of all possible events. # # Use arrow keys for back and select (alternate way of navigating) # # MENU_ARROW_NAVIGATION = 0 # # Keymap to map keyboard keys to event strings. You can also add new keys # here, e.g. KEYMAP[K_x] = 'SUBTITLE'. The K_-names are defined by pygame. # # # Use Internet resources to fetch information? # For example, Freevo can use CDDB for album information, # the IMDB movie database for movie info, and Amazon for cover searches. # Set this to 0 if your computer isn't connected to a network. # USE_NETWORK = 1 # # Directory location to save files when the normal filesystem # doesn't allow saving. This directory can save covers and fxd files # for read only filesystems like ROM drives. Set this variable to your # old MOVIE_DATA_DIR if you have one. It needs to be set to a directory # Freevo can write to. # # OVERLAY_DIR = os.path.join(FREEVO_CACHEDIR, 'vfs') # # Umask setting for all files. # 022 means only the user has write access. If you share your Freevo # installation with different users, set this to 002 # # UMASK = 022 # # Suffix for playlist files # # PLAYLIST_SUFFIX = [ 'm3u' ] # # Use md5 in mmpython to create unique disc ids. Enable this if you have # problems with different discs having the same id. # # MMPYTHON_CREATE_MD5_ID = 0 # # Keep metadata in memory # Setting this variable will keep all cache files in memory. Startup will be # slower, but for large directories, this will speed up the display. # 0 = Only keep current dir in memory. Use this if you have too much data # and not enough RAM # 1 = Once loaded, keep cachefile for directory in memory # 2 = Load all cachefiles on startup # # WARNING: you should not run 'freevo cache' when freevo is running. # # MEDIAINFO_USE_MEMORY = 1 # # Cache images. This uses a lot of disc space but it's a huge speed # enhancement. The images will be cached in OVERLAY_DIR # CACHE_IMAGES = 1 logging.getLogger().setLevel(logging.INFO) # ====================================================================== # Plugins: # ====================================================================== # Remove undesired plugins by setting plugin.remove(code). # You can also use the name to remove a plugin. But if you do that, # all instances of this plugin will be removed. # # Examples: # plugin.remove(plugin_tv) or # plugin.remove('tv') will remove the tv module from the main menu # plugin.remove(rom_plugins['image']) will remove the rom drives from the # image main menu, # plugin.remove('rom_drives.rom_items') will remove the rom drives from all # menus # # See freevo_config.py for a list of loaded plugins # # Use ivtv_record instead if you have an ivtv based card (PVR-250/350) # and want freevo to do everthing for you. To use you need to set the # following two lines: # # plugin.remove('record.generic_record') # plugin.activate('record.ivtv_record') # # Enable this for joystick support: plugin.activate('input.joystick') # ====================================================================== # Freevo directory settings: # ====================================================================== # You can change all this variables in the folder.fxd on a per folder # basis # # Example: # # # # # A small description of the directory # # # # # Should directories sorted by date instead of filename? # 0 = No, always sort by filename. # 1 = Yes, sort by date # 2 = No, don't sory by date for normal directories, # but sort by date for TV_RECORD_DIR. # # DIRECTORY_SORT_BY_DATE = 2 # # Should directory items be sorted in reverse order? # # DIRECTORY_REVERSE_SORT = 0 # # Should we use "smart" sorting? # Smart sorting ignores the word "The" in item names. # # DIRECTORY_SMART_SORT = 0 # # Should Freevo autoplay an item if only one item is in the directory? # # DIRECTORY_AUTOPLAY_SINGLE_ITEM = 1 # # Force the skin to use a specific layout number. -1 == no force. The layout # toggle with DISPLAY will be disabled # # DIRECTORY_FORCE_SKIN_LAYOUT = -1 # # Format string for the audio item names. # # Possible strings: # a = artist, n = tracknumber, t = title, y = year, f = filename # # Example: # This will show the title and the track number: DIRECTORY_AUDIO_FORMAT_STRING = '%(n)s - %(t)s' # # Use media id tags to generate the name of the item. This should be # enabled all the time. It should only be disabled for directories with # broken tags. # DIRECTORY_USE_MEDIAID_TAG_NAMES = 1 # # The following settings determine which features are available for # which media types. # # If you set this variable in a folder.fxd, the value is 1 (enabled) # or 0 (disabled). # # Examples: # To enable autoplay for audio and image files: # DIRECTORY_AUTOPLAY_ITEMS = [ 'audio', 'image' ] # To disable autoplay entirely: # DIRECTORY_AUTOPLAY_ITEMS = [] # Make all items a playlist. So when one is finished, the next one will # start. It's also possible to browse through the list with UP and DOWN # DIRECTORY_CREATE_PLAYLIST = [ 'audio', 'image' ] # Add playlist files ('m3u') to the directory # DIRECTORY_ADD_PLAYLIST_FILES = [ 'audio', 'image' ] # Add the item 'Random Playlist' to the directory # DIRECTORY_ADD_RANDOM_PLAYLIST = [ 'audio' ] # Make 'Play' not 'Browse' the default action when only items and not # subdirectories are in the directory # # DIRECTORY_AUTOPLAY_ITEMS = [ ] # ====================================================================== # Freevo movie settings: # ====================================================================== plugin.remove('video.bookmarker') # # Where the movie files can be found. # This is a list of items (e.g. directories, fxd files). The items themselves # can also be a list of (title, file) # # VIDEO_ITEMS = [ ('action movies', '/files/movies/action'), # ('funny stuff', '/files/movies/comedy') ] VIDEO_ITEMS = [ ('My files', '/mnt') ] # Some people access movies on a different machine using an automounter. # To avoid timeouts, you can specify the machine name in the directory # to check if the machine is alive first # Directory myserver:/files/server-stuff will show the item for the # directory /files/server-stuff if the computer myserver is alive. # # The list of filename suffixes that are used to match the files that # are played wih MPlayer. # VIDEO_MPLAYER_SUFFIX = [ 'avi', 'mpg', 'mpeg', 'wmv', 'bin', 'rm', 'divx', 'ogm', 'vob', 'asf', 'm2v', 'm2p', 'mp4', 'viv', 'nuv', 'mov', 'iso', 'nsv', 'mkv' ] # # The list of filename suffixes that are used to match the files that # are played wih Xine. # # VIDEO_XINE_SUFFIX = [ 'avi', 'mpg', 'mpeg', 'rm', 'divx', 'ogm', # 'asf', 'm2v', 'm2p', 'mp4', 'mov', 'cue' ] # # Preferred video player # VIDEO_PREFERED_PLAYER = 'mplayer' # ====================================================================== # Freevo audio settings: # ====================================================================== plugin.remove('mixer') # # Where the Audio (mp3, ogg) files can be found. # This is a list of items (e.g. directories, fxd files). The items themselves # can also be a list of (title, file) # # To add webradio support, add fxd/webradio.fxd to this list # # AUDIO_ITEMS = [ ('Music Collection', '/local/mp3/'), # 'fxd/webradio.fxd' ] AUDIO_ITEMS = [ ('My files', '/mnt') ] # # The list of filename suffixes that are used to match the files that # are played as audio. # AUDIO_SUFFIX = [ 'mp3', 'ogg', 'wav','m4a', 'wma', 'aac', 'flac', 'mka' ] # # Regular expression used to recognize filenames which are likely to be # covers for an album # # This will match front.jpg and cover-f.jpg, but not back.jpg nor cover-b.jpg: AUDIO_COVER_REGEXP = 'front|-f' # # Preferred audio player # AUDIO_PREFERED_PLAYER = 'mplayer' # # Show video files in the audio menu (for music-videos) # # AUDIO_SHOW_VIDEOFILES = False # ====================================================================== # Freevo image viewer settings: # ====================================================================== # # Where image files can be found. # This is a list of items (e.g. directories, fxd files). The items itself # can also be a list of (title, file) # # IMAGE_ITEMS = None # # The list of filename suffixes that are used to match the files that # are used for the image viewer. # IMAGE_SUFFIX = [ 'jpg','gif','png', 'jpeg','bmp','tiff','psd' ] # # The viewer now supports a new type of menu entry, a slideshow file. # It also has the slideshow alarm signal handler for automated shows. # It uses a new configuration option: # # IMAGE_SSHOW_SUFFIX = [ 'ssr' ] # # Mode of the blending effect in the image viewer between two images # Possible values are: # # None: no blending # -1 random effect # 0 alpha blending # 1 wipe effect # IMAGEVIEWER_BLEND_MODE = -1 # ====================================================================== # Freevo games settings: # ====================================================================== # YET ANOTHER NEW GAMES SYSTEM : (as of Freevo 2) # ============================== # # The GAMES_ITEMS structure is now built as follows : # # ( , , ( , , . . . ), # [ ( , , ), # ( , , ), # ( , , ) ], # , [ , , ] ) # # where : # - : Internal known game types: # NES - Nintendo Entertainment System # SNES - Super Nintendo # N64 - Nintendo 64 # GB - Gameboy handheld # GBC - Gameboy Color handheld # GBA - Gameboy Advance handheld # VBOY - Virtual Boy (or 'that which shall not be # spoken of' at Nintendo HQ) # SMS - Sega Master System # SMD - Sega Megadrive (Genesis) # SG1K - Sega SG-1000/SC-3000 # GG - Sega Game Gear handheld # PCE - NEC PC-Engine (Turbografx-16) # SGX - NEC Supergrafx # 2600 - Atari 2600 # 5200 - Atari 5200 # 7800 - Atari 7800 # JAG - Atari Jaguar # LYNX - Atari Lynx handheld # USER - Formerly GENERIC. For user specified entries # - : What will be shown for a USER entry # in the main games menu. Ignored for known # game types. # - : A comma seperated list of all the directories # where games of TYPE can be found. # *IMPORTANT* - : This is a completely arbitrary name the user # specifies for each emulator/argument set. # The games database will store this value as # the reference to your preferred emulator and # command line on a per-rom basis. This allows # you to update command line options and even # change the emulator used while hopefully # maintaining a desired ability to play certain # games a certain way. See the example below # for an idea of how this could be useful. # Each EMU_ID needs to be unique per TYPE. # You could use LIGHTGUN as your EMU_ID for # both NES and SMS, but not have two LIGHTGUN # entries for NES. # - : Emulator command. May contain the path or # just the binary if its within your path. # - : Arguments for the emulator # - : Path to a directory containing either # individual game screenshots in png form, # named the same as what the game appears as # within the menu (with .png of course), or # the path can point directly to a zipfile # containing all the screenshots for . # - : If this is a USER type definition, then you # must specify the file suffix used by the # valid roms you need to emulate # # GAMES_ITEMS = [ # ( 'NES', None, ( '/shared/roms/NES', '/home/user/Nintendo' ), # [ ( 'DEFAULT', 'mednafen', '-fs 1 -nes.stretch 1' ), # ( 'LIGHTGUN', 'mednafen', '-nes.input1 zapper' ), # ( 'FCE', 'fceu', '-somefceopt' ), # ( 'FAKE', 'fakenes', '-fakenesopt1 -fakenesopt2' ) ], # '/shared/roms/NES/.screens', None ), # # ( 'USER', 'Wanderswan', ( '/shared/roms/WS' ), # [ ( 'DEFAULT', 'xe', '-ws 1' ) ], '/shared/roms/WS/screens.zip', # [ 'ws', 'bws' ] ), # # # Changing the shell scripts for most linux games from game-name # # to game-name.sh would allow something like this easily enough. # ( 'USER', 'Native Games', ( '/usr/games/bin' ), # [ ( 'DEFAULT', 'bash', '' ) ], '/usr/games/share/screenshots.zip', # [ 'sh' ] ) # ] # # GAMES_ITEMS = None # Priority of the game process # 0 = Don't change the priority # >0 - Lower priority # <0 - Higher priority # # GAMES_NICE = -20 # ====================================================================== # Freevo SKIN settings: # ====================================================================== # # Select a way when to switch to text view even if a image menu is there # # 1 = Force text view when all items have the same image and there are no # directories # 2 = Ignore the directories, always switch to text view when all images # are the same # # GUI_FORCE_TEXTVIEW_STYLE = 1 # # Force text view for the media menu # (The media menu is the first menu displayed for video, audio, images # and games). # # GUI_MEDIAMENU_FORCE_TEXTVIEW = 0 GUI_DEFAULT_XML_FILE = 'geexbox' # ====================================================================== # Freevo OSD settings: # ====================================================================== # # System Path to search for fonts not included in the Freevo distribution # # GUI_FONT_PATH = [ '/usr/X11R6/lib/X11/fonts/truetype/' ] # # Font aliases # All names must be lowercase! All alternate fonts must be in './share/fonts/' # # GUI_FONT_ALIASES = { 'arial_bold.ttf' : 'VeraBd.ttf' } # # Number of seconds to wait until the busy icon is shown in the menu. # Busy icon can also be shown right away when there is more than a certain # number of files in a directory. # # Set this to None to disable this. # (seconds, files) # # GUI_BUSYICON_TIMER = (0.7, 200) # GUI_OVERSCAN_X = 0 # GUI_OVERSCAN_Y = 0 # # Execute a script on OSD startup. # # GUI_SDL_EXEC_AFTER_STARTUP = "" # # Execute a script on OSD close. # # GUI_SDL_EXEC_AFTER_CLOSE = "" GUI_DISPLAY="SDL" # # Stop the osd before playing a movie with xine or mplayer. Some output # devices need this. After playback, the osd will be restored # # GUI_STOP_WHEN_PLAYING = 0 # # Dim text that doesn't fit instead of using ellipses. # OSD_DIM_TEXT = 1 # ====================================================================== # Freevo remote control settings: # ====================================================================== # # Location of the lircrc file # # For remote control support, Freevo needs a lircrc file, like this: # # begin # prog = freevo # button = select # config = SELECT # end # # Check contrib/lirc for examples and helpers/freevo2lirc.pl for a converter # script. # LIRCRC = '/etc/lircrc' # # Joystick support # 0 = Disable joystick support # 1 = Use js0, # 2 = Use js1, # ... etc # JOY_DEV = 1 # Freevo can support as many buttons as your controller has # as long as there is a corresponding entry in JOY_CMDS. # You will also need to plugin.activate('joy'). # FYI: new kernels use /dev/input/jsX, but joy.py will fall back on /dev/jsX # JOY_CMDS = { 'up' : 'UP', 'down' : 'DOWN', 'left' : 'LEFT', 'right' : 'RIGHT', 'button 1' : 'PLAY', 'button 2' : 'PAUSE', 'button 3' : 'STOP', 'button 4' : 'ENTER', } # ====================================================================== # TVtime settings: # ====================================================================== # # Location of the TV time program # Default: Use the value in freevo.conf # # TVTIME_CMD = CONF.tvtime # ====================================================================== # MPlayer settings: # ====================================================================== MPLAYER_VO_DEV = 'cvidix,vesa' MPLAYER_VO_DEV_OPTS = '' MPLAYER_ARGS_DEF = '-nolirc' MPLAYER_SOFTWARE_SCALER = '' MPLAYER_VF_INTERLACED = 0 MPLAYER_VF_PROGRESSIVE = 0 MPLAYER_AUTOCROP = 0 # MPLAYER_AO_DEV = 'oss:/dev/dsp' # e.g.: oss,sdl,alsa, see mplayer docs # MPLAYER_VO_DEV_OPTS = '' # e.g.: ':some_var=vcal' # DVD_LANG_PREF = 'en,se,no' # Order of preferred languages on DVD. # DVD_SUBTITLE_PREF = '' # Order of preferred subtitles on DVD. # Priority of mplayer process. 0 is unchanged, <0 is higher prio, >0 lower prio. # prio <0 has no effect unless run as root. # MPLAYER_NICE = -20 # # Mplayer options to use the software scaler. If your CPU is fast enough, you # might try a software scaler. You can disable it later for some larger files # with the mplayer option '-nosws'. If you have -framedrop or -hardframedrop # as mplayer option, the software scaler will also not be used. # A good value for this variable is: # MPLAYER_SOFTWARE_SCALER = "-subfont-text-scale 5 -fs -sws 2 -vf scale=%s:-3,"\ # "expand=%s:%s " % ( CONF.width, CONF.width, CONF.height ) # older versions of mplayer may need # MPLAYER_SOFTWARE_SCALER = '-xy %s -sws 2 -vop scale:-1:-1:-1:100' % CONF.width # # MPLAYER_SOFTWARE_SCALER = '' # # Mplayer arguments for different media formats. (eg DVDs, CDs, AVI files, etc) # Uses a default value if nothing else matches. # # MPLAYER_ARGS = { 'dvd' : '-cache 8192', # 'vcd' : '-cache 4096', # 'cd' : '-cache 1024 -cdda speed=2', # 'tv' : '-nocache', # 'ivtv' : '-cache 8192', # 'avi' : '-cache 5000 -idx', # 'rm' : '-cache 5000 -forceidx', # 'rmvb' : '-cache 5000 -forceidx', # 'webcam' : 'tv:// -tv driver=v4l:width=352:height=288:outfmt=yuy2:device=/dev/video2', # 'default': '-cache 5000' # } # # Number of seconds before seek value times out. This is used when # seeking a specified number of minutes into a movie. If you make # a mistake or change your mind, the seek value will timeout after # this many seconds. # # MPLAYER_SEEK_TIMEOUT = 8 # # Autocrop files when playing. This is useful for files in 4:3 with black # bars on a 16:9 tv # # MPLAYER_AUTOCROP = 0 # # Try to set correct 'delay' and 'mc' values for mplayer based on the delay # from mmpython. # # This should correct av sync problems with mplayer for some files, but # may also break things. (I don't know, that's why it's disabled by default). # WARNING: When seeking, the playback is out of sync for some seconds! # # MPLAYER_SET_AUDIO_DELAY = 0 # ====================================================================== # Freevo TV settings: # ====================================================================== plugin.remove('tv') plugin.remove('tv.xine') # # This is where recorded video is written. # # XXX the path doesn't work from the www cgi scripts! # TV_RECORD_DIR = '/records' # # Watching TV # # # Size (in MB) of the timeshift buffer. (ie: how long you can pause tv for.) # This is set to a low default because the default buffer location is # under FREEVO_CACHEDIR and we don't want to blow /var or /tmp. # TIMESHIFT_BUFFER_SIZE = 128 # TIMESHIFT_ENCODE_CMD = None # TIMESHIFT_BUFFER = '%s/timeshift.mpeg' % FREEVO_CACHEDIR # TV_CHANNEL_PROG = './chchan %(channel)s %(norm)s %(freqtable)s' # TV_DATEFORMAT = '%e-%b' # Day-Month: 11-Jun # TV_TIMEFORMAT = '%H:%M' # Hour-Minute 14:05 # TV_DATETIMEFORMAT = '%A %b %d %I:%M %p' # Thursday September 24 8:54 am # This is the filename format for files recorded using Freevo. # You can use any of the strftime variables in it, provided you # put two '%%' at the beginning. # # Some examples: # %%A - Full weekday name. # %%H - Hour (24-hour clock) as a decimal number [00,23]. # %%M - Minute as a decimal number [00,59]. # %%m - Month as a decimal number [01,12]. # %%d - Day of the month as a decimal number [01,31]. # %%p - Locale's equivalent of either AM or PM. # # More can be found at: http://www.python.org/doc/current/lib/module-time.html # TV_RECORD_FILEMASK = '%%m-%%d %%H:%%M %(progname)s - %(title)s' # if using the persitant recordserver # TV_RECORD_SCHEDULE = '%s/record_schedule.xml' % FREEVO_CACHEDIR # TV_RECORD_SERVER_IP = 'localhost' # TV_RECORD_SERVER_PORT = 18001 # start every recording X minutes before scheduled, # and stop X minutes after scheduled - default to zero minutes. # This must be a value in seconds although at the moment only has # the percision of one minute. # TV_RECORD_PADDING = 0 * 60 # VCR_AUDIO = (':adevice=%s' % AUDIO_DEVICE + # ':audiorate=32000' + # 44100 for better sound # ':forceaudio:forcechan=1:' + # Forced mono for bug in my driver # 'buffersize=64') # 64MB capture buffer, change? # TV capture size for viewing and recording. Max 768x480 for NTSC, # 768x576 for PAL. Set lower if you have a slow computer! # # For the 'tvtime' TV viewing application, only the horizontal size is used. # Set the horizontal size to 400 or 480 if you have a slow (~500MHz) computer, # it still looks OK, and the picture will not be as jerky. # The vertical size is always either fullscreen or 480/576 (NTSC/PAL) # for tvtime. # TV_VIEW_SIZE = (640, 480) # TV_REC_SIZE = (320, 240) # Default for slower computers # Input formats for viewing and recording. The format affect viewing # and recording performance. It is specific to your hardware, so read # the MPlayer docs and experiment with mplayer to see which one fits # your computer best. # TV_VIEW_OUTFMT = 'yuy2' # Better quality, slower on pure FB/X11 # TV_REC_OUTFMT = 'yuy2' # XXX Please see the mencoder docs for more info about the settings # XXX below. Some stuff must be changed (adevice), others probably # XXX should be ("Change"), or could be in some cases ("change?") # VCR_CMD = (CONF.mencoder + ' ' + # 'tv:// ' + # New mplayer requires this. # '-tv driver=%s:input=%d' % (TV_DRIVER, TV_INPUT) + # ':norm=%s' % CONF.tv + # ':channel=%(channel)s' + # Filled in by Freevo # ':chanlist=%s' % CONF.chanlist + # ':width=%d:height=%d' % (TV_REC_SIZE[0], TV_REC_SIZE[1]) + # ':outfmt=%s' % TV_REC_OUTFMT + # ':device=%s' % TV_DEVICE + # VCR_AUDIO + # set above # ' -ovc lavc -lavcopts ' + # Mencoder lavcodec video codec # 'vcodec=mpeg4' + # lavcodec mpeg-4 # ':vbitrate=1200:' + # Change lower/higher, bitrate # 'keyint=30 ' + # Keyframe every 10 secs, change? # '-oac mp3lame -lameopts ' + # Use Lame for MP3 encoding, must be enabled in mencoder! # 'br=128:cbr:mode=3 ' + # MP3 const. bitrate, 128 kbit/s # '-ffourcc divx ' + # Force 'divx' ident, better compat. # '-endpos %(seconds)s ' + # only mencoder uses this so do it here. # '-o %(filename)s') # Filled in by Freevo # # FREQUENCY_TABLE - This is only used when Freevo changes the channel natively. # This is only the case if you are using V4L2 and any of the following plugins: # timeshift, ivtv_record, ivtv_basic_tv. # For the standard frequancy tables see src/tv/freq.py. To add your own just # replace tuner_id in the following example with a valid tuner id (ie: '5' or # 'BBC1') and a frequency in KHz. You may have as many entries as you like, # anything here will simply override a corresponding entry in your standard # frequency table and you can also have entries here that are not present in # there. # FREQUENCY_TABLE = { # 'tuner_id' : 55250, # } # # TV Channels. This list contains a mapping from the displayed channel name # to the actual channel name as used by the TV watching application. # The display name must match the names from the XMLTV guide, # and the TV channel name must be what the tuner expects (usually a number). # # The TV menu is supposed to be supported by the XMLTV application for # up to date listings, but can be used without it to just display # the available channels. # # This list also determines the order in which the channels are displayed! # N.B.: You must delete the XMLTV cache file (e.g. /var/cache/freevo/TV.xml.pickled) # if you make changes here and restart! # # Format: [('xmltv channel id', 'freevo display name', 'tv channel name'), ...] # # If this variable is set to None (default), Freevo will try to auto-detect # the channel list based on the xmltv file. This doesn't work for all # xmltv grabber, e.g. the German list doesn't contain station lists. In this # case Freevo will output the possible list for you to add them manually. # # If auto-detection doesn't work or you want to edit the list, run # freevo tv_grab -query. # # If you don't have a tv card, you may also want to add plugin.remove('tv') to # remove the whole tv menu. # # All channels listed here will be displayed on the TV menu, even if they're # not present in the XMLTV listing. # # # Timedependent channels: # # The TV_CHANNELS-list can look like this: # # TV_CHANNELS = [('21', 'SVT1', 'E5'), # ('22', 'SVT2', 'E3'), # ('26', 'TV3', 'E10'), # ('27', 'TV4', 'E6'), # ('10', 'Kanal 5', 'E7'), # ('60', 'Fox Kids', 'E8', ('1234567','0600','1659')), # ('16', 'TV6', 'E8', ('1234567','1700','2359'), # ('1234567','0000','0300')), # ('14', 'MTV Europe', 'E11') ] # # As you can see the list takes optional tuples: # ( 'DAYS', 'START','END') # # 1234567 in days means all days. # 12345 would mean monday to friday. # # It will display "Fox Kids" from 06:00 to 16:59 and "TV6" from 17:00 to 03:00. # 03:00 to 06:00 it won't be displayed at all. # # TV_CHANNELS = [] # If you would like to change the display format of your channels and prefer # not to list your entire TV_CHANNELS then you can apply rules using # TV_CHANNELS_DISPLAY_FORMAT. This defaults to the plain name of the channel # in order to not mess with TV_CHANNELS. # Valid keywords are: # %(id)s # %(tunerid)s # %(name)s # For example, if you prefer to see the channel number with the name you # could use '%(tunerid)s %(name)s'. # TV_CHANNELS_DISPLAY_FORMAT = '%(name)s' # Sometimes we can't control the contents of our XMLTV file and it may contain # channels we don't want. Here you can specify a list of channel_id values # to explicitly remove from Freevo. # TV_CHANNELS_EXCLUDE = [] # # Program to grab xmltv listings. To get a grabber, you need to download # xmltv. A possible value for users in the USA is tv_grab_na # Use the tv_grab helper to grab the listings and cache them. Start # 'freevo tv_grab --help' for more informations. # XMLTV_GRABBER = '/usr/bin/tv_grab_fr' # # If you want to run tv_sort on your listings add the path to tv_sort here. # tv_sort will make sure all your programs have proper stop times, otherwise # programs might get cut off at midnight. # # XMLTV_SORT = '' # # Number of days the grabber should get # # XMLTV_DAYS = 3 # ====================================================================== # VDR settings for Freevo plugins and programs that interface to VDR. # You can read about VDR at http://www.cadsoft.de/vdr/. # ====================================================================== # The directory where the VDR config files can be found. # VDR_DIR = '/video' # If VDR is on another host, which one. # VDR_HOST = 'localhost' # The port (SVDRP) it is listening on. # VDR_PORT = 2001 # The EPG filename. # VDR_EPG = 'epg.data' # The configuration file for VDR channels. # VDR_CHANNELS = 'channels.conf' # The property of a channel we are going to access it with. The options here # are 'name', 'sid', and 'rid'. # VDR_ACCESS_ID = 'sid' # ====================================================================== # Freevo builtin WWW server settings: # ====================================================================== # # To activate the built in web server, uncomment the following line # # plugin.activate('www') # # Web server port number. 80 is the standard port, but is often # taken already by apache, and cannot be used unless the server # runs as root. Port 8080 is the default, change to 80 if # needed. # # WWW_PORT = 8080 # # Username / Password combinations to login to the web interface. # # WWW_USERS = { "user1" : "changeme", # "optional" : "changeme2" } # # # Divide the TV guide into intervals of this length (in minutes) # # WWW_GUIDE_INTERVAL = 30 # # Precision for TV guide (in minutes) # # WWW_GUIDE_PRECISION = 5 # # # Show this many blocks at once # # WWW_GUIDE_COLS = 6 # WWW_STYLESHEET = 'styles/main.css' # WWW_JAVASCRIPT = 'scripts/display_prog-head.js' # ====================================================================== # Internal stuff, you shouldn't change anything here unless you know # what you are doing # ====================================================================== # # Config for xml support in the movie browser # the regexp has to be with ([0-9]|[0-9][0-9]) so we can get the numbers # # VIDEO_SHOW_REGEXP = "s?([0-9]|[0-9][0-9])[xe]([0-9]|[0-9][0-9])[^0-9]" # # Remote control daemon. The server is in the Freevo main application, # and the client is a standalone application in rc_client/ # # ENABLE_NETWORK_REMOTE = 0 # REMOTE_CONTROL_HOST = '127.0.0.1' # REMOTE_CONTROL_PORT = 16310 # # XMLTV File # # This is the XMLTV file that can be optionally used for TV listings # # XMLTV_FILE = '/tmp/TV.xml' # # XML TV Logo Location # # Use the "makelogos.py" script to download all the # Station logos into a directory. And then put the path # to those logos here # TV_LOGOS = OS_CACHEDIR + '/xmltv/logos' # LOCALE='latin-1' geexbox-1.1/packages/freevo/config/player.conf0000644000175000017500000000322510641745504017572 0ustar benben# -*- coding: utf-8 -*- # Preferred player backend. preferred = mplayer # How to handle 4:3 content on 16:9 screens. Possible values are # bars: add black bars on the left and on the right # zoom: zoom into the video, drop content on top and bottom # scale: ignore aspect ratio and fill the screen # # widescreen = bars # # audio # audio settings # # audio driver (alsa or oss) audio.driver = alsa # # audio.device # Device settings (only used by alsa). Set them to a specific alsa # device, e.g. hw:0,0 or default or special devices like # plug:front:default. If not set, player defaults will be used. # # audio.device.mono = # audio.device.stereo = # audio.device.surround40 = # audio.device.surround51 = # audio.device.passthrough = # number of channels (2, 4 or 6) # audio.channels = 2 # AC3 and DTS passthrough # audio.passthrough = False # # mplayer # mplayer configuration # # activate backend # mplayer.activate = True # Path to mplayer binary (if empty, search $PATH) # mplayer.path = # # mplayer.capability # # Capability rating of the player. The possible values are between # 0 (unable to play) up to 10 (perfect). Do not change this unless # you know what you are doing. # # # mplayer.capability.dvd = 8 # mplayer.capability.dvdmenu = 2 # mplayer.capability.deinterlace = 6 # Comma seperated list of extentions for which this player should # be the preferred player. # mplayer.preferred.extentions = nuv,rmvb # Comma seperated list of video or audio codecs fourcc codes for # which this player should be the preferred player. Use mminfo # on a file to get to the needed fourcc code. # mplayer.preferred.codecs = AVC1,FLV1 geexbox-1.1/packages/freevo/config/webserver.conf0000644000175000017500000000175610641745504020311 0ustar benben# -*- coding: latin-1 -*- # ************************************************************* # This file is auto-generated # # The possible variables are commented out with the default # values. Removing lines has no effect, they will be added # again when this file is saved again. Changing the order of # the items will also be changed back on the next write. # Any custom comments will also be removed. # ************************************************************* # Port for the server to listen to port = 80 # # style # some basic style settings # # Format how to display a time # style.timeformat = %H:%M # Default stylesheet to use (do not change) # style.stylesheet = styles/main.css # Additional javascript settings (do not change) # style.javascript = scripts/display_prog-head.js # # guide # Settings for the TV Guide page # # guide.interval = 30 # guide.precision = 5 # guide.cols = 6 # # users # user and password settings. Set users[name] = password # users[geexbox] = WWRk5ZmKfcsZY geexbox-1.1/packages/freevo/init.d/0000755000175000017500000000000010641745504015345 5ustar benbengeexbox-1.1/packages/freevo/init.d/82_freevo0000755000175000017500000000074410641745504017077 0ustar benben#!/bin/sh # # launch freevo # # runlevels: geexbox, debug # do not run if Freevo is NOT present if test ! -x /usr/bin/freevo; then exit 0 fi echo "### Starting Freevo ###" # disable console blanking and cursor blinking echo -e "\033[9;0]\033[?25l" # disable kernel messages echo 0 > /proc/sys/kernel/printk # tty used for the video display and commands input TTY=4 # disable fbdev cursor echo -e "\033[?1;;c" >/dev/tty$TTY chvt $TTY ( freevo ) > $file fi geexbox-1.1/packages/freevo/url0000644000175000017500000000004210641745504014701 0ustar benbenGEEXBOX_SRCS/freevo-r8861.tar.bz2 geexbox-1.1/packages/fribidi/0000755000175000017500000000000010641745504014302 5ustar benbengeexbox-1.1/packages/fribidi/build0000755000175000017500000000053310641745504015330 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain cd $BUILD/$1* ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=$LIB_PREFIX \ --disable-debug \ --enable-malloc \ --disable-shared make make install cp -f $ROOT/$PACKAGES/$1/scripts/$1-config $LIB_PREFIX/bin/$1-config geexbox-1.1/packages/fribidi/patches/0000755000175000017500000000000010641745504015731 5ustar benbengeexbox-1.1/packages/fribidi/patches/10_chunk-size.diff0000644000175000017500000000153510641745504021147 0ustar benbenDefine FRIBIDI_CHUNK_SIZE only if using allocation pools diff -Nur fribidi2-cvs-20061020.orig/lib/common.h fribidi2-cvs-20061020/lib/common.h --- fribidi2-cvs-20061020.orig/lib/common.h Tue Jan 31 05:23:12 2006 +++ fribidi2-cvs-20061020/lib/common.h Sat Oct 21 16:42:41 2006 @@ -131,6 +131,8 @@ /* FRIBIDI_CHUNK_SIZE is the number of bytes in each chunk of memory being * allocated for data structure pools. */ +#if USE_SIMPLE_MALLOC+0 +#else #ifndef FRIBIDI_CHUNK_SIZE # if HAVE_ASM_PAGE_H # ifndef __FRIBIDI_DOC @@ -145,6 +147,7 @@ # error FRIBIDI_CHUNK_SIZE now should define the size of a chunk in bytes. # endif /* FRIBIDI_CHUNK_SIZE < 256 */ #endif /* FRIBIDI_CHUNK_SIZE */ +#endif /* USE_SIMPLE_MALLOC */ /* FRIBIDI_BEGIN_STMT should be used at the beginning of your macro * definitions that are to behave like simple statements. Use geexbox-1.1/packages/fribidi/scripts/0000755000175000017500000000000010641745504015771 5ustar benbengeexbox-1.1/packages/fribidi/scripts/fribidi-config0000755000175000017500000000015710641745504020575 0ustar benben#!/bin/sh while test $# -gt 0; do case $1 in --libs) echo "-lfribidi" ;; esac shift done geexbox-1.1/packages/fribidi/url0000644000175000017500000000005310641745504015025 0ustar benbenGEEXBOX_SRCS/fribidi2-cvs-20061020.tar.bz2 geexbox-1.1/packages/fuse/0000755000175000017500000000000010641745504013634 5ustar benbengeexbox-1.1/packages/fuse/build0000755000175000017500000000060310641745504014660 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain cd $BUILD/$1* ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=$LIB_PREFIX \ --disable-shared \ --enable-static \ --disable-kernel-module \ --enable-lib \ --with-kernel=$(kernel_path) make make -C include install make -C lib install geexbox-1.1/packages/fuse/install0000755000175000017500000000014610641745504015231 0ustar benben#!/bin/sh . config/options mkdir -p $INSTALL/usr/bin cp $BUILD/$1*/util/fusermount $INSTALL/usr/bin geexbox-1.1/packages/fuse/url0000644000175000017500000000007210641745504014360 0ustar benbenhttp://prdownloads.sourceforge.net/fuse/fuse-2.6.5.tar.gz geexbox-1.1/packages/gcc-core/0000755000175000017500000000000010641745504014354 5ustar benbengeexbox-1.1/packages/gcc-core/build0000755000175000017500000000116510641745504015404 0ustar benben#!/bin/sh . config/options $SCRIPTS/install ccache $SCRIPTS/install binutils $SCRIPTS/build $TARGET_LIBC-headers $SCRIPTS/unpack gcc setup_toolchain host cd $BUILD/gcc* mkdir -p objdir-$1 cd objdir-$1 ../configure --host=$HOST_NAME \ --build=$HOST_NAME \ --target=$TARGET_NAME \ --prefix=$ROOT/$TOOLCHAIN \ --with-sysroot=$SYSROOT_PREFIX \ --with-local-prefix=${LIB_PREFIX#$SYSROOT_PREFIX} \ --enable-languages=c \ --disable-libmudflap \ --disable-libssp \ --disable-shared \ --disable-nls make geexbox-1.1/packages/gcc-core/install0000755000175000017500000000014610641745504015751 0ustar benben#!/bin/sh . config/options make -C $BUILD/gcc*/objdir-$1 install $SCRIPTS/install ccache toolchain geexbox-1.1/packages/gcc-final/0000755000175000017500000000000010641745504014515 5ustar benbengeexbox-1.1/packages/gcc-final/build0000755000175000017500000000131010641745504015535 0ustar benben#!/bin/sh . config/options $SCRIPTS/install ccache toolchain $SCRIPTS/install binutils toolchain $SCRIPTS/install $TARGET_LIBC toolchain $SCRIPTS/unpack gcc setup_toolchain host cd $BUILD/gcc* mkdir -p objdir-$1 cd objdir-$1 ../configure --host=$HOST_NAME \ --build=$HOST_NAME \ --target=$TARGET_NAME \ --prefix=$ROOT/$TOOLCHAIN \ --with-sysroot=$SYSROOT_PREFIX \ --with-local-prefix=${LIB_PREFIX#$SYSROOT_PREFIX} \ --enable-languages=${TOOLCHAIN_LANGUAGES} \ --disable-__cxa_atexit \ --disable-libmudflap \ --disable-libssp \ --disable-shared \ --disable-nls make geexbox-1.1/packages/gcc-final/install0000755000175000017500000000014610641745504016112 0ustar benben#!/bin/sh . config/options make -C $BUILD/gcc*/objdir-$1 install $SCRIPTS/install ccache toolchain geexbox-1.1/packages/gcc/0000755000175000017500000000000010641745504013426 5ustar benbengeexbox-1.1/packages/gcc/patches/0000755000175000017500000000000010641745504015055 5ustar benbengeexbox-1.1/packages/gcc/patches/10_uclibc-conf.diff0000644000175000017500000003544110641745504020402 0ustar benben--- gcc-4.1.0/gcc/config/t-linux-uclibc +++ gcc-4.1.0/gcc/config/t-linux-uclibc @@ -0,0 +1,5 @@ +# Remove glibc specific files added in t-linux +SHLIB_MAPFILES := $(filter-out $(srcdir)/config/libgcc-glibc.ver, $(SHLIB_MAPFILES)) + +# Use unwind-dw2-fde instead of unwind-dw2-fde-glibc +LIB2ADDEH := $(subst unwind-dw2-fde-glibc.c,unwind-dw2-fde.c,$(LIB2ADDEH)) --- gcc-4.1.0/gcc/config.gcc +++ gcc-4.1.0/gcc/config.gcc @@ -1887,7 +1887,7 @@ s390x-ibm-tpf*) ;; sh-*-elf* | sh[12346l]*-*-elf* | sh*-*-kaos* | \ sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \ - sh-*-linux* | sh[346lbe]*-*-linux* | \ + sh*-*-linux* | sh[346lbe]*-*-linux* | \ sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \ sh64-*-netbsd* | sh64l*-*-netbsd*) tmake_file="${tmake_file} sh/t-sh sh/t-elf" @@ -2341,6 +2341,12 @@ m32c-*-elf*) ;; esac +# Rather than hook into each target, just do it after all the linux +# targets have been processed +case ${target} in +*-linux-uclibc*) tm_defines="${tm_defines} USE_UCLIBC" ; tmake_file="${tmake_file} t-linux-uclibc" +esac + case ${target} in i[34567]86-*-linux*aout* | i[34567]86-*-linux*libc1) tmake_file="${tmake_file} i386/t-gmm_malloc" --- gcc-4.1.0/configure +++ gcc-4.1.0/configure @@ -1133,7 +1133,7 @@ no) ;; "") case "${target}" in - *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu) + *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*) # Enable libmudflap by default in GNU and friends. ;; *-*-freebsd*) --- gcc-4.1.0/configure.in +++ gcc-4.1.0/configure.in @@ -341,7 +341,7 @@ no) ;; "") case "${target}" in - *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu) + *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*) # Enable libmudflap by default in GNU and friends. ;; *-*-freebsd*) --- gcc-4.1.0/contrib/regression/objs-gcc.sh +++ gcc-4.1.0/contrib/regression/objs-gcc.sh @@ -105,6 +105,10 @@ if [ $H_REAL_TARGET = $H_REAL_HOST -a $H then make all-gdb all-dejagnu all-ld || exit 1 make install-gdb install-dejagnu install-ld || exit 1 +elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ] + then + make all-gdb all-dejagnu all-ld || exit 1 + make install-gdb install-dejagnu install-ld || exit 1 elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then make bootstrap || exit 1 make install || exit 1 --- gcc-4.1.0/gcc/config/alpha/linux-elf.h +++ gcc-4.1.0/gcc/config/alpha/linux-elf.h @@ -27,7 +27,11 @@ Boston, MA 02110-1301, USA. */ #define SUBTARGET_EXTRA_SPECS \ { "elf_dynamic_linker", ELF_DYNAMIC_LINKER }, +#if defined USE_UCLIBC +#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" +#else #define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" +#endif #define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ %{O*:-O3} %{!O*:-O1} \ --- gcc-4.1.0/gcc/config/arm/linux-elf.h +++ gcc-4.1.0/gcc/config/arm/linux-elf.h @@ -51,7 +51,11 @@ #define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc" +#ifdef USE_UCLIBC +#define LINUX_TARGET_INTERPRETER "/lib/ld-uClibc.so.0" +#else #define LINUX_TARGET_INTERPRETER "/lib/ld-linux.so.2" +#endif #define LINUX_TARGET_LINK_SPEC "%{h*} %{version:-v} \ %{b} \ --- gcc-4.1.0/gcc/config/cris/linux.h +++ gcc-4.1.0/gcc/config/cris/linux.h @@ -73,6 +73,25 @@ Boston, MA 02110-1301, USA. */ #undef CRIS_DEFAULT_CPU_VERSION #define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG +#ifdef USE_UCLIBC + +#undef CRIS_SUBTARGET_VERSION +#define CRIS_SUBTARGET_VERSION " - cris-axis-linux-uclibc" + +#undef CRIS_LINK_SUBTARGET_SPEC +#define CRIS_LINK_SUBTARGET_SPEC \ + "-mcrislinux\ + -rpath-link include/asm/../..%s\ + %{shared} %{static}\ + %{symbolic:-Bdynamic} %{shlib:-Bdynamic} %{static:-Bstatic}\ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}} \ + %{!r:%{O2|O3: --gc-sections}}" + +#else /* USE_UCLIBC */ + #undef CRIS_SUBTARGET_VERSION #define CRIS_SUBTARGET_VERSION " - cris-axis-linux-gnu" @@ -87,6 +106,8 @@ Boston, MA 02110-1301, USA. */ %{!shared:%{!static:%{rdynamic:-export-dynamic}}}\ %{!r:%{O2|O3: --gc-sections}}" +#endif /* USE_UCLIBC */ + /* Node: Run-time Target */ --- gcc-4.1.0/gcc/config/i386/linux.h +++ gcc-4.1.0/gcc/config/i386/linux.h @@ -107,6 +107,11 @@ Boston, MA 02110-1301, USA. */ #define LINK_EMULATION "elf_i386" #define DYNAMIC_LINKER "/lib/ld-linux.so.2" +#if defined USE_UCLIBC +#undef DYNAMIC_LINKER +#define DYNAMIC_LINKER "/lib/ld-uClibc.so.0" +#endif + #undef SUBTARGET_EXTRA_SPECS #define SUBTARGET_EXTRA_SPECS \ { "link_emulation", LINK_EMULATION },\ --- gcc-4.1.0/gcc/config/i386/linux64.h +++ gcc-4.1.0/gcc/config/i386/linux64.h @@ -54,14 +54,21 @@ Boston, MA 02110-1301, USA. */ When the -shared link option is used a final link is not being done. */ +#ifdef USE_UCLIBC +#define ELF32_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" +#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0" +#else +#define ELF32_DYNAMIC_LINKER "/lib/ld-linux.so.2" +#define ELF64_DYNAMIC_LINKER "/lib64/ld-linux-x86-64.so.2" +#endif #undef LINK_SPEC #define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \ %{shared:-shared} \ %{!shared: \ %{!static: \ %{rdynamic:-export-dynamic} \ - %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ - %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \ + %{m32:%{!dynamic-linker:-dynamic-linker " ELF32_DYNAMIC_LINKER "}} \ + %{!m32:%{!dynamic-linker:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}} \ %{static:-static}}" /* Similar to standard Linux, but adding -ffast-math support. */ --- gcc-4.1.0/gcc/config/ia64/linux.h +++ gcc-4.1.0/gcc/config/ia64/linux.h @@ -37,13 +37,18 @@ do { \ /* Define this for shared library support because it isn't in the main linux.h file. */ +#ifdef USE_UCLIBC +#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" +#else +#define ELF_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" +#endif #undef LINK_SPEC #define LINK_SPEC "\ %{shared:-shared} \ %{!shared: \ %{!static: \ %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \ + %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ %{static:-static}}" --- gcc-4.1.0/gcc/config/m68k/linux.h +++ gcc-4.1.0/gcc/config/m68k/linux.h @@ -123,12 +123,17 @@ Boston, MA 02110-1301, USA. */ /* If ELF is the default format, we should not use /lib/elf. */ +#ifdef USE_UCLIBC +#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" +#else +#define ELF_DYNAMIC_LINKER "/lib/ld.so.1" +#endif #undef LINK_SPEC #define LINK_SPEC "-m m68kelf %{shared} \ %{!shared: \ %{!static: \ %{rdynamic:-export-dynamic} \ - %{!dynamic-linker*:-dynamic-linker /lib/ld.so.1}} \ + %{!dynamic-linker*:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ %{static}}" /* For compatibility with linux/a.out */ --- gcc-4.1.0/gcc/config/mips/linux.h +++ gcc-4.1.0/gcc/config/mips/linux.h @@ -105,6 +105,11 @@ Boston, MA 02110-1301, USA. */ /* Borrowed from sparc/linux.h */ #undef LINK_SPEC +#ifdef USE_UCLIBC +#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" +#else +#define ELF_DYNAMIC_LINKER "/lib/ld.so.1" +#endif #define LINK_SPEC \ "%(endian_spec) \ %{shared:-shared} \ @@ -112,7 +117,7 @@ Boston, MA 02110-1301, USA. */ %{!ibcs: \ %{!static: \ %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ + %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ %{static:-static}}}" #undef SUBTARGET_ASM_SPEC --- gcc-4.1.0/gcc/config/pa/pa-linux.h +++ gcc-4.1.0/gcc/config/pa/pa-linux.h @@ -49,13 +49,18 @@ Boston, MA 02110-1301, USA. */ /* Define this for shared library support because it isn't in the main linux.h file. */ +#ifdef USE_UCLIBC +#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" +#else +#define ELF_DYNAMIC_LINKER "/lib/ld.so.1" +#endif #undef LINK_SPEC #define LINK_SPEC "\ %{shared:-shared} \ %{!shared: \ %{!static: \ %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ + %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ %{static:-static}}" /* glibc's profiling functions don't need gcc to allocate counters. */ --- gcc-4.1.0/gcc/config/rs6000/linux.h +++ gcc-4.1.0/gcc/config/rs6000/linux.h @@ -72,7 +72,11 @@ #define LINK_START_DEFAULT_SPEC "%(link_start_linux)" #undef LINK_OS_DEFAULT_SPEC +#ifdef USE_UCLIBC +#define LINK_OS_DEFAULT_SPEC "%(link_os_linux_uclibc)" +#else #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)" +#endif #define LINK_GCC_C_SEQUENCE_SPEC \ "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}" --- gcc-4.1.0/gcc/config/rs6000/sysv4.h +++ gcc-4.1.0/gcc/config/rs6000/sysv4.h @@ -866,6 +866,7 @@ extern int fixuplabelno; mcall-linux : %(link_os_linux) ; \ mcall-gnu : %(link_os_gnu) ; \ mcall-netbsd : %(link_os_netbsd) ; \ + mcall-linux-uclibc : %(link_os_linux_uclibc); \ mcall-openbsd: %(link_os_openbsd) ; \ : %(link_os_default) }" @@ -1043,6 +1044,10 @@ extern int fixuplabelno; %{rdynamic:-export-dynamic} \ %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}" +#define LINK_OS_LINUX_UCLIBC_SPEC "-m elf32ppclinux %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}}" + #if defined(HAVE_LD_EH_FRAME_HDR) # define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " #endif @@ -1209,6 +1214,7 @@ ncrtn.o%s" { "link_os_sim", LINK_OS_SIM_SPEC }, \ { "link_os_freebsd", LINK_OS_FREEBSD_SPEC }, \ { "link_os_linux", LINK_OS_LINUX_SPEC }, \ + { "link_os_linux_uclibc", LINK_OS_LINUX_UCLIBC_SPEC }, \ { "link_os_gnu", LINK_OS_GNU_SPEC }, \ { "link_os_netbsd", LINK_OS_NETBSD_SPEC }, \ { "link_os_openbsd", LINK_OS_OPENBSD_SPEC }, \ --- gcc-4.1.0/gcc/config/s390/linux.h +++ gcc-4.1.0/gcc/config/s390/linux.h @@ -77,6 +77,13 @@ Software Foundation, 51 Franklin Street, #define MULTILIB_DEFAULTS { "m31" } #endif +#ifdef USE_UCLIBC +#define ELF31_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" +#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0" +#else +#define ELF31_DYNAMIC_LINKER "/lib/ld.so.1" +#define ELF64_DYNAMIC_LINKER "/lib/ld64.so.1" +#endif #undef LINK_SPEC #define LINK_SPEC \ "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ @@ -86,8 +93,8 @@ Software Foundation, 51 Franklin Street, %{!static: \ %{rdynamic:-export-dynamic} \ %{!dynamic-linker: \ - %{m31:-dynamic-linker /lib/ld.so.1} \ - %{m64:-dynamic-linker /lib/ld64.so.1}}}}" + %{m31:-dynamic-linker " ELF31_DYNAMIC_LINKER "} \ + %{m64:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}}}" #define TARGET_ASM_FILE_END file_end_indicate_exec_stack --- gcc-4.1.0/gcc/config/sh/linux.h +++ gcc-4.1.0/gcc/config/sh/linux.h @@ -56,12 +56,21 @@ Boston, MA 02110-1301, USA. */ #undef SUBTARGET_LINK_EMUL_SUFFIX #define SUBTARGET_LINK_EMUL_SUFFIX "_linux" #undef SUBTARGET_LINK_SPEC +#ifdef USE_UCLIBC +#define SUBTARGET_LINK_SPEC \ + "%{shared:-shared} \ + %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \ + %{static:-static}" +#else #define SUBTARGET_LINK_SPEC \ "%{shared:-shared} \ %{!static: \ %{rdynamic:-export-dynamic} \ %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ %{static:-static}" +#endif /* Output assembler code to STREAM to call the profiler. */ --- gcc-4.1.0/gcc/config/sparc/linux.h +++ gcc-4.1.0/gcc/config/sparc/linux.h @@ -125,6 +125,11 @@ Boston, MA 02110-1301, USA. */ /* If ELF is the default format, we should not use /lib/elf. */ +#ifdef USE_UCLIBC +#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" +#else +#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" +#endif #undef LINK_SPEC #define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ %{!mno-relax:%{!r:-relax}} \ @@ -132,7 +137,7 @@ Boston, MA 02110-1301, USA. */ %{!ibcs: \ %{!static: \ %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ + %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ %{static:-static}}}" /* The sun bundled assembler doesn't accept -Yd, (and neither does gas). --- gcc-4.1.0/gcc/config/sparc/linux64.h +++ gcc-4.1.0/gcc/config/sparc/linux64.h @@ -162,12 +162,17 @@ Boston, MA 02110-1301, USA. */ { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \ { "link_arch", LINK_ARCH_SPEC }, +#ifdef USE_UCLIBC +#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" +#else +#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" +#endif #define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ %{!shared: \ %{!ibcs: \ %{!static: \ %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ + %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ %{static:-static}}} \ " --- gcc-4.1.0/libmudflap/configure +++ gcc-4.1.0/libmudflap/configure @@ -5382,6 +5382,11 @@ linux-gnu*) lt_cv_deplibs_check_method=pass_all ;; +linux-uclibc*) + lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` + ;; + netbsd* | knetbsd*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' --- gcc-4.1.0/libtool.m4 +++ gcc-4.1.0/libtool.m4 @@ -743,6 +743,11 @@ linux-gnu*) lt_cv_deplibs_check_method=pass_all ;; +linux-uclibc*) + lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` + ;; + netbsd* | knetbsd*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'] --- gcc-4.1.0/ltconfig +++ gcc-4.1.0/ltconfig @@ -603,6 +603,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)- # Transform linux* to *-*-linux-gnu*, to support old configure scripts. case $host_os in +linux-uclibc*) ;; linux-gnu*) ;; linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` esac @@ -1274,6 +1275,23 @@ linux-gnu*) dynamic_linker='GNU/Linux ld.so' ;; +linux-uclibc*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + # Assume using the uClibc dynamic linker. + dynamic_linker="uClibc ld.so" + ;; + netbsd*) need_lib_prefix=no need_version=no geexbox-1.1/packages/gcc/patches/20_uclibc-locale.diff0000644000175000017500000033303710641745504020717 0ustar benbendiff -urN gcc-4.1.0-dist/libstdc++-v3/acinclude.m4 gcc-4.1.0/libstdc++-v3/acinclude.m4 --- gcc-4.1.0-dist/libstdc++-v3/acinclude.m4 2006-03-26 12:08:28.000000000 -0700 +++ gcc-4.1.0/libstdc++-v3/acinclude.m4 2006-03-25 22:06:30.000000000 -0700 @@ -1071,7 +1071,7 @@ AC_MSG_CHECKING([for C locale to use]) GLIBCXX_ENABLE(clocale,auto,[@<:@=MODEL@:>@], [use MODEL for target locale package], - [permit generic|gnu|ieee_1003.1-2001|yes|no|auto]) + [permit generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto]) # If they didn't use this option switch, or if they specified --enable # with no specific model, we'll have to look for one. If they @@ -1087,6 +1087,9 @@ # Default to "generic". if test $enable_clocale_flag = auto; then case ${target_os} in + *-uclibc*) + enable_clocale_flag=uclibc + ;; linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu) AC_EGREP_CPP([_GLIBCXX_ok], [ #include @@ -1230,6 +1233,40 @@ CTIME_CC=config/locale/generic/time_members.cc CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h ;; + uclibc) + AC_MSG_RESULT(uclibc) + + # Declare intention to use gettext, and add support for specific + # languages. + # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT + ALL_LINGUAS="de fr" + + # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. + AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no) + if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then + USE_NLS=yes + fi + # Export the build objects. + for ling in $ALL_LINGUAS; do \ + glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ + glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ + done + AC_SUBST(glibcxx_MOFILES) + AC_SUBST(glibcxx_POFILES) + + CLOCALE_H=config/locale/uclibc/c_locale.h + CLOCALE_CC=config/locale/uclibc/c_locale.cc + CCODECVT_CC=config/locale/uclibc/codecvt_members.cc + CCOLLATE_CC=config/locale/uclibc/collate_members.cc + CCTYPE_CC=config/locale/uclibc/ctype_members.cc + CMESSAGES_H=config/locale/uclibc/messages_members.h + CMESSAGES_CC=config/locale/uclibc/messages_members.cc + CMONEY_CC=config/locale/uclibc/monetary_members.cc + CNUMERIC_CC=config/locale/uclibc/numeric_members.cc + CTIME_H=config/locale/uclibc/time_members.h + CTIME_CC=config/locale/uclibc/time_members.cc + CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h + ;; esac # This is where the testsuite looks for locale catalogs, using the diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/c++locale_internal.h gcc-4.1.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h --- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 1969-12-31 17:00:00.000000000 -0700 +++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2006-03-25 22:18:37.000000000 -0700 @@ -0,0 +1,63 @@ +// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*- + +// Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +// Written by Jakub Jelinek + +#include +#include + +#ifdef __UCLIBC_MJN3_ONLY__ +#warning clean this up +#endif + +#ifdef __UCLIBC_HAS_XLOCALE__ + +extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l; +extern "C" __typeof(strcoll_l) __strcoll_l; +extern "C" __typeof(strftime_l) __strftime_l; +extern "C" __typeof(strtod_l) __strtod_l; +extern "C" __typeof(strtof_l) __strtof_l; +extern "C" __typeof(strtold_l) __strtold_l; +extern "C" __typeof(strxfrm_l) __strxfrm_l; +extern "C" __typeof(newlocale) __newlocale; +extern "C" __typeof(freelocale) __freelocale; +extern "C" __typeof(duplocale) __duplocale; +extern "C" __typeof(uselocale) __uselocale; + +#ifdef _GLIBCXX_USE_WCHAR_T +extern "C" __typeof(iswctype_l) __iswctype_l; +extern "C" __typeof(towlower_l) __towlower_l; +extern "C" __typeof(towupper_l) __towupper_l; +extern "C" __typeof(wcscoll_l) __wcscoll_l; +extern "C" __typeof(wcsftime_l) __wcsftime_l; +extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l; +extern "C" __typeof(wctype_l) __wctype_l; +#endif + +#endif // GLIBC 2.3 and later diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-4.1.0/libstdc++-v3/config/locale/uclibc/c_locale.cc --- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/c_locale.cc 1969-12-31 17:00:00.000000000 -0700 +++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/c_locale.cc 2006-03-25 22:18:37.000000000 -0700 @@ -0,0 +1,152 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001, 2002, 2003, 2004, 2005 +// Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#include // For errno +#include +#include +#include +#include + +#ifndef __UCLIBC_HAS_XLOCALE__ +#define __strtol_l(S, E, B, L) strtol((S), (E), (B)) +#define __strtoul_l(S, E, B, L) strtoul((S), (E), (B)) +#define __strtoll_l(S, E, B, L) strtoll((S), (E), (B)) +#define __strtoull_l(S, E, B, L) strtoull((S), (E), (B)) +#define __strtof_l(S, E, L) strtof((S), (E)) +#define __strtod_l(S, E, L) strtod((S), (E)) +#define __strtold_l(S, E, L) strtold((S), (E)) +#warning should dummy __newlocale check for C|POSIX ? +#define __newlocale(a, b, c) NULL +#define __freelocale(a) ((void)0) +#define __duplocale(a) __c_locale() +#endif + +namespace std +{ + template<> + void + __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, + const __c_locale& __cloc) + { + char* __sanity; + errno = 0; + float __f = __strtof_l(__s, &__sanity, __cloc); + if (__sanity != __s && errno != ERANGE) + __v = __f; + else + __err |= ios_base::failbit; + } + + template<> + void + __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, + const __c_locale& __cloc) + { + char* __sanity; + errno = 0; + double __d = __strtod_l(__s, &__sanity, __cloc); + if (__sanity != __s && errno != ERANGE) + __v = __d; + else + __err |= ios_base::failbit; + } + + template<> + void + __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err, + const __c_locale& __cloc) + { + char* __sanity; + errno = 0; + long double __ld = __strtold_l(__s, &__sanity, __cloc); + if (__sanity != __s && errno != ERANGE) + __v = __ld; + else + __err |= ios_base::failbit; + } + + void + locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, + __c_locale __old) + { + __cloc = __newlocale(1 << LC_ALL, __s, __old); +#ifdef __UCLIBC_HAS_XLOCALE__ + if (!__cloc) + { + // This named locale is not supported by the underlying OS. + __throw_runtime_error(__N("locale::facet::_S_create_c_locale " + "name not valid")); + } +#endif + } + + void + locale::facet::_S_destroy_c_locale(__c_locale& __cloc) + { + if (__cloc && _S_get_c_locale() != __cloc) + __freelocale(__cloc); + } + + __c_locale + locale::facet::_S_clone_c_locale(__c_locale& __cloc) + { return __duplocale(__cloc); } +} // namespace std + +namespace __gnu_cxx +{ + const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] = + { + "LC_CTYPE", + "LC_NUMERIC", + "LC_TIME", + "LC_COLLATE", + "LC_MONETARY", + "LC_MESSAGES", +#if _GLIBCXX_NUM_CATEGORIES != 0 + "LC_PAPER", + "LC_NAME", + "LC_ADDRESS", + "LC_TELEPHONE", + "LC_MEASUREMENT", + "LC_IDENTIFICATION" +#endif + }; +} + +namespace std +{ + const char* const* const locale::_S_categories = __gnu_cxx::category_names; +} // namespace std diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-4.1.0/libstdc++-v3/config/locale/uclibc/c_locale.h --- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/c_locale.h 1969-12-31 17:00:00.000000000 -0700 +++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/c_locale.h 2006-03-26 13:03:42.000000000 -0700 @@ -0,0 +1,117 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _C_LOCALE_H +#define _C_LOCALE_H 1 + +#pragma GCC system_header + +#include // get std::strlen +#include // get std::snprintf or std::sprintf +#include +#include // For codecvt +#ifdef __UCLIBC_MJN3_ONLY__ +#warning fix this +#endif +#ifdef __UCLIBC_HAS_LOCALE__ +#include // For codecvt using iconv, iconv_t +#endif +#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ +#include // For messages +#endif + +#ifdef __UCLIBC_MJN3_ONLY__ +#warning what is _GLIBCXX_C_LOCALE_GNU for +#endif +#define _GLIBCXX_C_LOCALE_GNU 1 + +#ifdef __UCLIBC_MJN3_ONLY__ +#warning fix categories +#endif +// #define _GLIBCXX_NUM_CATEGORIES 6 +#define _GLIBCXX_NUM_CATEGORIES 0 + +#ifdef __UCLIBC_HAS_XLOCALE__ +namespace __gnu_cxx +{ + extern "C" __typeof(uselocale) __uselocale; +} +#endif + +namespace std +{ +#ifdef __UCLIBC_HAS_XLOCALE__ + typedef __locale_t __c_locale; +#else + typedef int* __c_locale; +#endif + + // Convert numeric value of type _Tv to string and return length of + // string. If snprintf is available use it, otherwise fall back to + // the unsafe sprintf which, in general, can be dangerous and should + // be avoided. + template + int + __convert_from_v(char* __out, + const int __size __attribute__ ((__unused__)), + const char* __fmt, +#ifdef __UCLIBC_HAS_XLOCALE__ + _Tv __v, const __c_locale& __cloc, int __prec) + { + __c_locale __old = __gnu_cxx::__uselocale(__cloc); +#else + _Tv __v, const __c_locale&, int __prec) + { +# ifdef __UCLIBC_HAS_LOCALE__ + char* __old = std::setlocale(LC_ALL, NULL); + char* __sav = new char[std::strlen(__old) + 1]; + std::strcpy(__sav, __old); + std::setlocale(LC_ALL, "C"); +# endif +#endif + + const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v); + +#ifdef __UCLIBC_HAS_XLOCALE__ + __gnu_cxx::__uselocale(__old); +#elif defined __UCLIBC_HAS_LOCALE__ + std::setlocale(LC_ALL, __sav); + delete [] __sav; +#endif + return __ret; + } +} + +#endif diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/codecvt_members.cc gcc-4.1.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc --- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/codecvt_members.cc 1969-12-31 17:00:00.000000000 -0700 +++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc 2006-03-25 22:18:37.000000000 -0700 @@ -0,0 +1,306 @@ +// std::codecvt implementation details, GNU version -*- C++ -*- + +// Copyright (C) 2002, 2003 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +// +// ISO C++ 14882: 22.2.1.5 - Template class codecvt +// + +// Written by Benjamin Kosnik + +#include +#include + +namespace std +{ + // Specializations. +#ifdef _GLIBCXX_USE_WCHAR_T + codecvt_base::result + codecvt:: + do_out(state_type& __state, const intern_type* __from, + const intern_type* __from_end, const intern_type*& __from_next, + extern_type* __to, extern_type* __to_end, + extern_type*& __to_next) const + { + result __ret = ok; + state_type __tmp_state(__state); + +#ifdef __UCLIBC_HAS_XLOCALE__ + __c_locale __old = __uselocale(_M_c_locale_codecvt); +#endif + + // wcsnrtombs is *very* fast but stops if encounters NUL characters: + // in case we fall back to wcrtomb and then continue, in a loop. + // NB: wcsnrtombs is a GNU extension + for (__from_next = __from, __to_next = __to; + __from_next < __from_end && __to_next < __to_end + && __ret == ok;) + { + const intern_type* __from_chunk_end = wmemchr(__from_next, L'\0', + __from_end - __from_next); + if (!__from_chunk_end) + __from_chunk_end = __from_end; + + __from = __from_next; + const size_t __conv = wcsnrtombs(__to_next, &__from_next, + __from_chunk_end - __from_next, + __to_end - __to_next, &__state); + if (__conv == static_cast(-1)) + { + // In case of error, in order to stop at the exact place we + // have to start again from the beginning with a series of + // wcrtomb. + for (; __from < __from_next; ++__from) + __to_next += wcrtomb(__to_next, *__from, &__tmp_state); + __state = __tmp_state; + __ret = error; + } + else if (__from_next && __from_next < __from_chunk_end) + { + __to_next += __conv; + __ret = partial; + } + else + { + __from_next = __from_chunk_end; + __to_next += __conv; + } + + if (__from_next < __from_end && __ret == ok) + { + extern_type __buf[MB_LEN_MAX]; + __tmp_state = __state; + const size_t __conv = wcrtomb(__buf, *__from_next, &__tmp_state); + if (__conv > static_cast(__to_end - __to_next)) + __ret = partial; + else + { + memcpy(__to_next, __buf, __conv); + __state = __tmp_state; + __to_next += __conv; + ++__from_next; + } + } + } + +#ifdef __UCLIBC_HAS_XLOCALE__ + __uselocale(__old); +#endif + + return __ret; + } + + codecvt_base::result + codecvt:: + do_in(state_type& __state, const extern_type* __from, + const extern_type* __from_end, const extern_type*& __from_next, + intern_type* __to, intern_type* __to_end, + intern_type*& __to_next) const + { + result __ret = ok; + state_type __tmp_state(__state); + +#ifdef __UCLIBC_HAS_XLOCALE__ + __c_locale __old = __uselocale(_M_c_locale_codecvt); +#endif + + // mbsnrtowcs is *very* fast but stops if encounters NUL characters: + // in case we store a L'\0' and then continue, in a loop. + // NB: mbsnrtowcs is a GNU extension + for (__from_next = __from, __to_next = __to; + __from_next < __from_end && __to_next < __to_end + && __ret == ok;) + { + const extern_type* __from_chunk_end; + __from_chunk_end = static_cast(memchr(__from_next, '\0', + __from_end + - __from_next)); + if (!__from_chunk_end) + __from_chunk_end = __from_end; + + __from = __from_next; + size_t __conv = mbsnrtowcs(__to_next, &__from_next, + __from_chunk_end - __from_next, + __to_end - __to_next, &__state); + if (__conv == static_cast(-1)) + { + // In case of error, in order to stop at the exact place we + // have to start again from the beginning with a series of + // mbrtowc. + for (;; ++__to_next, __from += __conv) + { + __conv = mbrtowc(__to_next, __from, __from_end - __from, + &__tmp_state); + if (__conv == static_cast(-1) + || __conv == static_cast(-2)) + break; + } + __from_next = __from; + __state = __tmp_state; + __ret = error; + } + else if (__from_next && __from_next < __from_chunk_end) + { + // It is unclear what to return in this case (see DR 382). + __to_next += __conv; + __ret = partial; + } + else + { + __from_next = __from_chunk_end; + __to_next += __conv; + } + + if (__from_next < __from_end && __ret == ok) + { + if (__to_next < __to_end) + { + // XXX Probably wrong for stateful encodings + __tmp_state = __state; + ++__from_next; + *__to_next++ = L'\0'; + } + else + __ret = partial; + } + } + +#ifdef __UCLIBC_HAS_XLOCALE__ + __uselocale(__old); +#endif + + return __ret; + } + + int + codecvt:: + do_encoding() const throw() + { + // XXX This implementation assumes that the encoding is + // stateless and is either single-byte or variable-width. + int __ret = 0; +#ifdef __UCLIBC_HAS_XLOCALE__ + __c_locale __old = __uselocale(_M_c_locale_codecvt); +#endif + if (MB_CUR_MAX == 1) + __ret = 1; +#ifdef __UCLIBC_HAS_XLOCALE__ + __uselocale(__old); +#endif + return __ret; + } + + int + codecvt:: + do_max_length() const throw() + { +#ifdef __UCLIBC_HAS_XLOCALE__ + __c_locale __old = __uselocale(_M_c_locale_codecvt); +#endif + // XXX Probably wrong for stateful encodings. + int __ret = MB_CUR_MAX; +#ifdef __UCLIBC_HAS_XLOCALE__ + __uselocale(__old); +#endif + return __ret; + } + + int + codecvt:: + do_length(state_type& __state, const extern_type* __from, + const extern_type* __end, size_t __max) const + { + int __ret = 0; + state_type __tmp_state(__state); + +#ifdef __UCLIBC_HAS_XLOCALE__ + __c_locale __old = __uselocale(_M_c_locale_codecvt); +#endif + + // mbsnrtowcs is *very* fast but stops if encounters NUL characters: + // in case we advance past it and then continue, in a loop. + // NB: mbsnrtowcs is a GNU extension + + // A dummy internal buffer is needed in order for mbsnrtocws to consider + // its fourth parameter (it wouldn't with NULL as first parameter). + wchar_t* __to = static_cast(__builtin_alloca(sizeof(wchar_t) + * __max)); + while (__from < __end && __max) + { + const extern_type* __from_chunk_end; + __from_chunk_end = static_cast(memchr(__from, '\0', + __end + - __from)); + if (!__from_chunk_end) + __from_chunk_end = __end; + + const extern_type* __tmp_from = __from; + size_t __conv = mbsnrtowcs(__to, &__from, + __from_chunk_end - __from, + __max, &__state); + if (__conv == static_cast(-1)) + { + // In case of error, in order to stop at the exact place we + // have to start again from the beginning with a series of + // mbrtowc. + for (__from = __tmp_from;; __from += __conv) + { + __conv = mbrtowc(NULL, __from, __end - __from, + &__tmp_state); + if (__conv == static_cast(-1) + || __conv == static_cast(-2)) + break; + } + __state = __tmp_state; + __ret += __from - __tmp_from; + break; + } + if (!__from) + __from = __from_chunk_end; + + __ret += __from - __tmp_from; + __max -= __conv; + + if (__from < __end && __max) + { + // XXX Probably wrong for stateful encodings + __tmp_state = __state; + ++__from; + ++__ret; + --__max; + } + } + +#ifdef __UCLIBC_HAS_XLOCALE__ + __uselocale(__old); +#endif + + return __ret; + } +#endif +} diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/collate_members.cc gcc-4.1.0/libstdc++-v3/config/locale/uclibc/collate_members.cc --- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/collate_members.cc 1969-12-31 17:00:00.000000000 -0700 +++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/collate_members.cc 2006-03-25 22:18:37.000000000 -0700 @@ -0,0 +1,80 @@ +// std::collate implementation details, GNU version -*- C++ -*- + +// Copyright (C) 2001, 2002 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +// +// ISO C++ 14882: 22.2.4.1.2 collate virtual functions +// + +// Written by Benjamin Kosnik + +#include +#include + +#ifndef __UCLIBC_HAS_XLOCALE__ +#define __strcoll_l(S1, S2, L) strcoll((S1), (S2)) +#define __strxfrm_l(S1, S2, N, L) strxfrm((S1), (S2), (N)) +#define __wcscoll_l(S1, S2, L) wcscoll((S1), (S2)) +#define __wcsxfrm_l(S1, S2, N, L) wcsxfrm((S1), (S2), (N)) +#endif + +namespace std +{ + // These are basically extensions to char_traits, and perhaps should + // be put there instead of here. + template<> + int + collate::_M_compare(const char* __one, const char* __two) const + { + int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate); + return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); + } + + template<> + size_t + collate::_M_transform(char* __to, const char* __from, + size_t __n) const + { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); } + +#ifdef _GLIBCXX_USE_WCHAR_T + template<> + int + collate::_M_compare(const wchar_t* __one, + const wchar_t* __two) const + { + int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate); + return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); + } + + template<> + size_t + collate::_M_transform(wchar_t* __to, const wchar_t* __from, + size_t __n) const + { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); } +#endif +} diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-4.1.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc --- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/ctype_members.cc 1969-12-31 17:00:00.000000000 -0700 +++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2006-03-25 22:18:37.000000000 -0700 @@ -0,0 +1,314 @@ +// std::ctype implementation details, GNU version -*- C++ -*- + +// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +// +// ISO C++ 14882: 22.2.1.1.2 ctype virtual functions. +// + +// Written by Benjamin Kosnik + +#define _LIBC +#include +#undef _LIBC +#include + +#ifndef __UCLIBC_HAS_XLOCALE__ +#define __wctype_l(S, L) wctype((S)) +#define __towupper_l(C, L) towupper((C)) +#define __towlower_l(C, L) towlower((C)) +#define __iswctype_l(C, M, L) iswctype((C), (M)) +#endif + +namespace std +{ + // NB: The other ctype specializations are in src/locale.cc and + // various /config/os/* files. + template<> + ctype_byname::ctype_byname(const char* __s, size_t __refs) + : ctype(0, false, __refs) + { + if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_ctype); + this->_S_create_c_locale(this->_M_c_locale_ctype, __s); +#ifdef __UCLIBC_HAS_XLOCALE__ + this->_M_toupper = this->_M_c_locale_ctype->__ctype_toupper; + this->_M_tolower = this->_M_c_locale_ctype->__ctype_tolower; + this->_M_table = this->_M_c_locale_ctype->__ctype_b; +#endif + } + } + +#ifdef _GLIBCXX_USE_WCHAR_T + ctype::__wmask_type + ctype::_M_convert_to_wmask(const mask __m) const + { + __wmask_type __ret; + switch (__m) + { + case space: + __ret = __wctype_l("space", _M_c_locale_ctype); + break; + case print: + __ret = __wctype_l("print", _M_c_locale_ctype); + break; + case cntrl: + __ret = __wctype_l("cntrl", _M_c_locale_ctype); + break; + case upper: + __ret = __wctype_l("upper", _M_c_locale_ctype); + break; + case lower: + __ret = __wctype_l("lower", _M_c_locale_ctype); + break; + case alpha: + __ret = __wctype_l("alpha", _M_c_locale_ctype); + break; + case digit: + __ret = __wctype_l("digit", _M_c_locale_ctype); + break; + case punct: + __ret = __wctype_l("punct", _M_c_locale_ctype); + break; + case xdigit: + __ret = __wctype_l("xdigit", _M_c_locale_ctype); + break; + case alnum: + __ret = __wctype_l("alnum", _M_c_locale_ctype); + break; + case graph: + __ret = __wctype_l("graph", _M_c_locale_ctype); + break; + default: + __ret = __wmask_type(); + } + return __ret; + } + + wchar_t + ctype::do_toupper(wchar_t __c) const + { return __towupper_l(__c, _M_c_locale_ctype); } + + const wchar_t* + ctype::do_toupper(wchar_t* __lo, const wchar_t* __hi) const + { + while (__lo < __hi) + { + *__lo = __towupper_l(*__lo, _M_c_locale_ctype); + ++__lo; + } + return __hi; + } + + wchar_t + ctype::do_tolower(wchar_t __c) const + { return __towlower_l(__c, _M_c_locale_ctype); } + + const wchar_t* + ctype::do_tolower(wchar_t* __lo, const wchar_t* __hi) const + { + while (__lo < __hi) + { + *__lo = __towlower_l(*__lo, _M_c_locale_ctype); + ++__lo; + } + return __hi; + } + + bool + ctype:: + do_is(mask __m, wchar_t __c) const + { + // The case of __m == ctype_base::space is particularly important, + // due to its use in many istream functions. Therefore we deal with + // it first, exploiting the knowledge that on GNU systems _M_bit[5] + // is the mask corresponding to ctype_base::space. NB: an encoding + // change would not affect correctness! + bool __ret = false; + if (__m == _M_bit[5]) + __ret = __iswctype_l(__c, _M_wmask[5], _M_c_locale_ctype); + else + { + // Highest bitmask in ctype_base == 10, but extra in "C" + // library for blank. + const size_t __bitmasksize = 11; + for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) + if (__m & _M_bit[__bitcur]) + { + if (__iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype)) + { + __ret = true; + break; + } + else if (__m == _M_bit[__bitcur]) + break; + } + } + return __ret; + } + + const wchar_t* + ctype:: + do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const + { + for (; __lo < __hi; ++__vec, ++__lo) + { + // Highest bitmask in ctype_base == 10, but extra in "C" + // library for blank. + const size_t __bitmasksize = 11; + mask __m = 0; + for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) + if (__iswctype_l(*__lo, _M_wmask[__bitcur], _M_c_locale_ctype)) + __m |= _M_bit[__bitcur]; + *__vec = __m; + } + return __hi; + } + + const wchar_t* + ctype:: + do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const + { + while (__lo < __hi && !this->do_is(__m, *__lo)) + ++__lo; + return __lo; + } + + const wchar_t* + ctype:: + do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const + { + while (__lo < __hi && this->do_is(__m, *__lo) != 0) + ++__lo; + return __lo; + } + + wchar_t + ctype:: + do_widen(char __c) const + { return _M_widen[static_cast(__c)]; } + + const char* + ctype:: + do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const + { + while (__lo < __hi) + { + *__dest = _M_widen[static_cast(*__lo)]; + ++__lo; + ++__dest; + } + return __hi; + } + + char + ctype:: + do_narrow(wchar_t __wc, char __dfault) const + { + if (__wc >= 0 && __wc < 128 && _M_narrow_ok) + return _M_narrow[__wc]; +#ifdef __UCLIBC_HAS_XLOCALE__ + __c_locale __old = __uselocale(_M_c_locale_ctype); +#endif + const int __c = wctob(__wc); +#ifdef __UCLIBC_HAS_XLOCALE__ + __uselocale(__old); +#endif + return (__c == EOF ? __dfault : static_cast(__c)); + } + + const wchar_t* + ctype:: + do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault, + char* __dest) const + { +#ifdef __UCLIBC_HAS_XLOCALE__ + __c_locale __old = __uselocale(_M_c_locale_ctype); +#endif + if (_M_narrow_ok) + while (__lo < __hi) + { + if (*__lo >= 0 && *__lo < 128) + *__dest = _M_narrow[*__lo]; + else + { + const int __c = wctob(*__lo); + *__dest = (__c == EOF ? __dfault : static_cast(__c)); + } + ++__lo; + ++__dest; + } + else + while (__lo < __hi) + { + const int __c = wctob(*__lo); + *__dest = (__c == EOF ? __dfault : static_cast(__c)); + ++__lo; + ++__dest; + } +#ifdef __UCLIBC_HAS_XLOCALE__ + __uselocale(__old); +#endif + return __hi; + } + + void + ctype::_M_initialize_ctype() + { +#ifdef __UCLIBC_HAS_XLOCALE__ + __c_locale __old = __uselocale(_M_c_locale_ctype); +#endif + wint_t __i; + for (__i = 0; __i < 128; ++__i) + { + const int __c = wctob(__i); + if (__c == EOF) + break; + else + _M_narrow[__i] = static_cast(__c); + } + if (__i == 128) + _M_narrow_ok = true; + else + _M_narrow_ok = false; + for (size_t __j = 0; + __j < sizeof(_M_widen) / sizeof(wint_t); ++__j) + _M_widen[__j] = btowc(__j); + + for (size_t __k = 0; __k <= 11; ++__k) + { + _M_bit[__k] = static_cast(_ISbit(__k)); + _M_wmask[__k] = _M_convert_to_wmask(_M_bit[__k]); + } +#ifdef __UCLIBC_HAS_XLOCALE__ + __uselocale(__old); +#endif + } +#endif // _GLIBCXX_USE_WCHAR_T +} diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/messages_members.cc gcc-4.1.0/libstdc++-v3/config/locale/uclibc/messages_members.cc --- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/messages_members.cc 1969-12-31 17:00:00.000000000 -0700 +++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/messages_members.cc 2006-03-25 22:18:37.000000000 -0700 @@ -0,0 +1,100 @@ +// std::messages implementation details, GNU version -*- C++ -*- + +// Copyright (C) 2001, 2002 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +#include +#include + +#ifdef __UCLIBC_MJN3_ONLY__ +#warning fix gettext stuff +#endif +#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ +extern "C" char *__dcgettext(const char *domainname, + const char *msgid, int category); +#undef gettext +#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES) +#else +#undef gettext +#define gettext(msgid) (msgid) +#endif + +namespace std +{ + // Specializations. + template<> + string + messages::do_get(catalog, int, int, const string& __dfault) const + { +#ifdef __UCLIBC_HAS_XLOCALE__ + __c_locale __old = __uselocale(_M_c_locale_messages); + const char* __msg = const_cast(gettext(__dfault.c_str())); + __uselocale(__old); + return string(__msg); +#elif defined __UCLIBC_HAS_LOCALE__ + char* __old = strdup(setlocale(LC_ALL, NULL)); + setlocale(LC_ALL, _M_name_messages); + const char* __msg = gettext(__dfault.c_str()); + setlocale(LC_ALL, __old); + free(__old); + return string(__msg); +#else + const char* __msg = gettext(__dfault.c_str()); + return string(__msg); +#endif + } + +#ifdef _GLIBCXX_USE_WCHAR_T + template<> + wstring + messages::do_get(catalog, int, int, const wstring& __dfault) const + { +# ifdef __UCLIBC_HAS_XLOCALE__ + __c_locale __old = __uselocale(_M_c_locale_messages); + char* __msg = gettext(_M_convert_to_char(__dfault)); + __uselocale(__old); + return _M_convert_from_char(__msg); +# elif defined __UCLIBC_HAS_LOCALE__ + char* __old = strdup(setlocale(LC_ALL, NULL)); + setlocale(LC_ALL, _M_name_messages); + char* __msg = gettext(_M_convert_to_char(__dfault)); + setlocale(LC_ALL, __old); + free(__old); + return _M_convert_from_char(__msg); +# else + char* __msg = gettext(_M_convert_to_char(__dfault)); + return _M_convert_from_char(__msg); +# endif + } +#endif +} diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-4.1.0/libstdc++-v3/config/locale/uclibc/messages_members.h --- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/messages_members.h 1969-12-31 17:00:00.000000000 -0700 +++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/messages_members.h 2006-03-25 22:18:37.000000000 -0700 @@ -0,0 +1,121 @@ +// std::messages implementation details, GNU version -*- C++ -*- + +// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +// +// ISO C++ 14882: 22.2.7.1.2 messages functions +// + +// Written by Benjamin Kosnik + +#ifdef __UCLIBC_MJN3_ONLY__ +#warning fix prototypes for *textdomain funcs +#endif +#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ +extern "C" char *__textdomain(const char *domainname); +extern "C" char *__bindtextdomain(const char *domainname, + const char *dirname); +#else +#undef __textdomain +#undef __bindtextdomain +#define __textdomain(D) ((void)0) +#define __bindtextdomain(D,P) ((void)0) +#endif + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs), _M_c_locale_messages(_S_get_c_locale()), + _M_name_messages(_S_get_c_name()) + { } + + template + messages<_CharT>::messages(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_c_locale_messages(NULL), _M_name_messages(NULL) + { + const size_t __len = std::strlen(__s) + 1; + char* __tmp = new char[__len]; + std::memcpy(__tmp, __s, __len); + _M_name_messages = __tmp; + + // Last to avoid leaking memory if new throws. + _M_c_locale_messages = _S_clone_c_locale(__cloc); + } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char* __dir) const + { + __bindtextdomain(__s.c_str(), __dir); + return this->do_open(__s, __loc); + } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { + if (_M_name_messages != _S_get_c_name()) + delete [] _M_name_messages; + _S_destroy_c_locale(_M_c_locale_messages); + } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string& __s, + const locale&) const + { + // No error checking is done, assume the catalog exists and can + // be used. + __textdomain(__s.c_str()); + return 0; + } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (this->_M_name_messages != locale::facet::_S_get_c_name()) + delete [] this->_M_name_messages; + char* __tmp = new char[std::strlen(__s) + 1]; + std::strcpy(__tmp, __s); + this->_M_name_messages = __tmp; + + if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-4.1.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc --- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/monetary_members.cc 1969-12-31 17:00:00.000000000 -0700 +++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2006-03-25 22:18:37.000000000 -0700 @@ -0,0 +1,692 @@ +// std::moneypunct implementation details, GNU version -*- C++ -*- + +// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +// +// ISO C++ 14882: 22.2.6.3.2 moneypunct virtual functions +// + +// Written by Benjamin Kosnik + +#define _LIBC +#include +#undef _LIBC +#include + +#ifdef __UCLIBC_MJN3_ONLY__ +#warning optimize this for uclibc +#warning tailor for stub locale support +#endif + +#ifndef __UCLIBC_HAS_XLOCALE__ +#define __nl_langinfo_l(N, L) nl_langinfo((N)) +#endif + +namespace std +{ + // Construct and return valid pattern consisting of some combination of: + // space none symbol sign value + money_base::pattern + money_base::_S_construct_pattern(char __precedes, char __space, char __posn) + { + pattern __ret; + + // This insanely complicated routine attempts to construct a valid + // pattern for use with monyepunct. A couple of invariants: + + // if (__precedes) symbol -> value + // else value -> symbol + + // if (__space) space + // else none + + // none == never first + // space never first or last + + // Any elegant implementations of this are welcome. + switch (__posn) + { + case 0: + case 1: + // 1 The sign precedes the value and symbol. + __ret.field[0] = sign; + if (__space) + { + // Pattern starts with sign. + if (__precedes) + { + __ret.field[1] = symbol; + __ret.field[3] = value; + } + else + { + __ret.field[1] = value; + __ret.field[3] = symbol; + } + __ret.field[2] = space; + } + else + { + // Pattern starts with sign and ends with none. + if (__precedes) + { + __ret.field[1] = symbol; + __ret.field[2] = value; + } + else + { + __ret.field[1] = value; + __ret.field[2] = symbol; + } + __ret.field[3] = none; + } + break; + case 2: + // 2 The sign follows the value and symbol. + if (__space) + { + // Pattern either ends with sign. + if (__precedes) + { + __ret.field[0] = symbol; + __ret.field[2] = value; + } + else + { + __ret.field[0] = value; + __ret.field[2] = symbol; + } + __ret.field[1] = space; + __ret.field[3] = sign; + } + else + { + // Pattern ends with sign then none. + if (__precedes) + { + __ret.field[0] = symbol; + __ret.field[1] = value; + } + else + { + __ret.field[0] = value; + __ret.field[1] = symbol; + } + __ret.field[2] = sign; + __ret.field[3] = none; + } + break; + case 3: + // 3 The sign immediately precedes the symbol. + if (__precedes) + { + __ret.field[0] = sign; + __ret.field[1] = symbol; + if (__space) + { + __ret.field[2] = space; + __ret.field[3] = value; + } + else + { + __ret.field[2] = value; + __ret.field[3] = none; + } + } + else + { + __ret.field[0] = value; + if (__space) + { + __ret.field[1] = space; + __ret.field[2] = sign; + __ret.field[3] = symbol; + } + else + { + __ret.field[1] = sign; + __ret.field[2] = symbol; + __ret.field[3] = none; + } + } + break; + case 4: + // 4 The sign immediately follows the symbol. + if (__precedes) + { + __ret.field[0] = symbol; + __ret.field[1] = sign; + if (__space) + { + __ret.field[2] = space; + __ret.field[3] = value; + } + else + { + __ret.field[2] = value; + __ret.field[3] = none; + } + } + else + { + __ret.field[0] = value; + if (__space) + { + __ret.field[1] = space; + __ret.field[2] = symbol; + __ret.field[3] = sign; + } + else + { + __ret.field[1] = symbol; + __ret.field[2] = sign; + __ret.field[3] = none; + } + } + break; + default: + __ret = pattern(); + } + return __ret; + } + + template<> + void + moneypunct::_M_initialize_moneypunct(__c_locale __cloc, + const char*) + { + if (!_M_data) + _M_data = new __moneypunct_cache; + + if (!__cloc) + { + // "C" locale + _M_data->_M_decimal_point = '.'; + _M_data->_M_thousands_sep = ','; + _M_data->_M_grouping = ""; + _M_data->_M_grouping_size = 0; + _M_data->_M_curr_symbol = ""; + _M_data->_M_curr_symbol_size = 0; + _M_data->_M_positive_sign = ""; + _M_data->_M_positive_sign_size = 0; + _M_data->_M_negative_sign = ""; + _M_data->_M_negative_sign_size = 0; + _M_data->_M_frac_digits = 0; + _M_data->_M_pos_format = money_base::_S_default_pattern; + _M_data->_M_neg_format = money_base::_S_default_pattern; + + for (size_t __i = 0; __i < money_base::_S_end; ++__i) + _M_data->_M_atoms[__i] = money_base::_S_atoms[__i]; + } + else + { + // Named locale. + _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, + __cloc)); + _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, + __cloc)); + _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); + _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); + _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); + _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign); + + char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); + if (!__nposn) + _M_data->_M_negative_sign = "()"; + else + _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, + __cloc); + _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign); + + // _Intl == true + _M_data->_M_curr_symbol = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); + _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol); + _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, + __cloc)); + char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); + char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); + char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); + _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, + __pposn); + char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); + char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); + _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, + __nposn); + } + } + + template<> + void + moneypunct::_M_initialize_moneypunct(__c_locale __cloc, + const char*) + { + if (!_M_data) + _M_data = new __moneypunct_cache; + + if (!__cloc) + { + // "C" locale + _M_data->_M_decimal_point = '.'; + _M_data->_M_thousands_sep = ','; + _M_data->_M_grouping = ""; + _M_data->_M_grouping_size = 0; + _M_data->_M_curr_symbol = ""; + _M_data->_M_curr_symbol_size = 0; + _M_data->_M_positive_sign = ""; + _M_data->_M_positive_sign_size = 0; + _M_data->_M_negative_sign = ""; + _M_data->_M_negative_sign_size = 0; + _M_data->_M_frac_digits = 0; + _M_data->_M_pos_format = money_base::_S_default_pattern; + _M_data->_M_neg_format = money_base::_S_default_pattern; + + for (size_t __i = 0; __i < money_base::_S_end; ++__i) + _M_data->_M_atoms[__i] = money_base::_S_atoms[__i]; + } + else + { + // Named locale. + _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, + __cloc)); + _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, + __cloc)); + _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); + _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); + _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); + _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign); + + char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); + if (!__nposn) + _M_data->_M_negative_sign = "()"; + else + _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, + __cloc); + _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign); + + // _Intl == false + _M_data->_M_curr_symbol = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); + _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol); + _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); + char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); + char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); + char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); + _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, + __pposn); + char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); + char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); + _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, + __nposn); + } + } + + template<> + moneypunct::~moneypunct() + { delete _M_data; } + + template<> + moneypunct::~moneypunct() + { delete _M_data; } + +#ifdef _GLIBCXX_USE_WCHAR_T + template<> + void + moneypunct::_M_initialize_moneypunct(__c_locale __cloc, +#ifdef __UCLIBC_HAS_XLOCALE__ + const char*) +#else + const char* __name) +#endif + { + if (!_M_data) + _M_data = new __moneypunct_cache; + + if (!__cloc) + { + // "C" locale + _M_data->_M_decimal_point = L'.'; + _M_data->_M_thousands_sep = L','; + _M_data->_M_grouping = ""; + _M_data->_M_grouping_size = 0; + _M_data->_M_curr_symbol = L""; + _M_data->_M_curr_symbol_size = 0; + _M_data->_M_positive_sign = L""; + _M_data->_M_positive_sign_size = 0; + _M_data->_M_negative_sign = L""; + _M_data->_M_negative_sign_size = 0; + _M_data->_M_frac_digits = 0; + _M_data->_M_pos_format = money_base::_S_default_pattern; + _M_data->_M_neg_format = money_base::_S_default_pattern; + + // Use ctype::widen code without the facet... + for (size_t __i = 0; __i < money_base::_S_end; ++__i) + _M_data->_M_atoms[__i] = + static_cast(money_base::_S_atoms[__i]); + } + else + { + // Named locale. +#ifdef __UCLIBC_HAS_XLOCALE__ + __c_locale __old = __uselocale(__cloc); +#else + // Switch to named locale so that mbsrtowcs will work. + char* __old = strdup(setlocale(LC_ALL, NULL)); + setlocale(LC_ALL, __name); +#endif + +#ifdef __UCLIBC_MJN3_ONLY__ +#warning fix this... should be monetary +#endif +#ifdef __UCLIBC__ +# ifdef __UCLIBC_HAS_XLOCALE__ + _M_data->_M_decimal_point = __cloc->decimal_point_wc; + _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; +# else + _M_data->_M_decimal_point = __global_locale->decimal_point_wc; + _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; +# endif +#else + union { char *__s; wchar_t __w; } __u; + __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc); + _M_data->_M_decimal_point = __u.__w; + + __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); + _M_data->_M_thousands_sep = __u.__w; +#endif + _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); + _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); + + const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); + const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); + const char* __ccurr = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); + + wchar_t* __wcs_ps = 0; + wchar_t* __wcs_ns = 0; + const char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); + try + { + mbstate_t __state; + size_t __len = strlen(__cpossign); + if (__len) + { + ++__len; + memset(&__state, 0, sizeof(mbstate_t)); + __wcs_ps = new wchar_t[__len]; + mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state); + _M_data->_M_positive_sign = __wcs_ps; + } + else + _M_data->_M_positive_sign = L""; + _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); + + __len = strlen(__cnegsign); + if (!__nposn) + _M_data->_M_negative_sign = L"()"; + else if (__len) + { + ++__len; + memset(&__state, 0, sizeof(mbstate_t)); + __wcs_ns = new wchar_t[__len]; + mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state); + _M_data->_M_negative_sign = __wcs_ns; + } + else + _M_data->_M_negative_sign = L""; + _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign); + + // _Intl == true. + __len = strlen(__ccurr); + if (__len) + { + ++__len; + memset(&__state, 0, sizeof(mbstate_t)); + wchar_t* __wcs = new wchar_t[__len]; + mbsrtowcs(__wcs, &__ccurr, __len, &__state); + _M_data->_M_curr_symbol = __wcs; + } + else + _M_data->_M_curr_symbol = L""; + _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol); + } + catch (...) + { + delete _M_data; + _M_data = 0; + delete __wcs_ps; + delete __wcs_ns; +#ifdef __UCLIBC_HAS_XLOCALE__ + __uselocale(__old); +#else + setlocale(LC_ALL, __old); + free(__old); +#endif + __throw_exception_again; + } + + _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, + __cloc)); + char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); + char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); + char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); + _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, + __pposn); + char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); + char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); + _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, + __nposn); + +#ifdef __UCLIBC_HAS_XLOCALE__ + __uselocale(__old); +#else + setlocale(LC_ALL, __old); + free(__old); +#endif + } + } + + template<> + void + moneypunct::_M_initialize_moneypunct(__c_locale __cloc, +#ifdef __UCLIBC_HAS_XLOCALE__ + const char*) +#else + const char* __name) +#endif + { + if (!_M_data) + _M_data = new __moneypunct_cache; + + if (!__cloc) + { + // "C" locale + _M_data->_M_decimal_point = L'.'; + _M_data->_M_thousands_sep = L','; + _M_data->_M_grouping = ""; + _M_data->_M_grouping_size = 0; + _M_data->_M_curr_symbol = L""; + _M_data->_M_curr_symbol_size = 0; + _M_data->_M_positive_sign = L""; + _M_data->_M_positive_sign_size = 0; + _M_data->_M_negative_sign = L""; + _M_data->_M_negative_sign_size = 0; + _M_data->_M_frac_digits = 0; + _M_data->_M_pos_format = money_base::_S_default_pattern; + _M_data->_M_neg_format = money_base::_S_default_pattern; + + // Use ctype::widen code without the facet... + for (size_t __i = 0; __i < money_base::_S_end; ++__i) + _M_data->_M_atoms[__i] = + static_cast(money_base::_S_atoms[__i]); + } + else + { + // Named locale. +#ifdef __UCLIBC_HAS_XLOCALE__ + __c_locale __old = __uselocale(__cloc); +#else + // Switch to named locale so that mbsrtowcs will work. + char* __old = strdup(setlocale(LC_ALL, NULL)); + setlocale(LC_ALL, __name); +#endif + +#ifdef __UCLIBC_MJN3_ONLY__ +#warning fix this... should be monetary +#endif +#ifdef __UCLIBC__ +# ifdef __UCLIBC_HAS_XLOCALE__ + _M_data->_M_decimal_point = __cloc->decimal_point_wc; + _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; +# else + _M_data->_M_decimal_point = __global_locale->decimal_point_wc; + _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; +# endif +#else + union { char *__s; wchar_t __w; } __u; + __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc); + _M_data->_M_decimal_point = __u.__w; + + __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); + _M_data->_M_thousands_sep = __u.__w; +#endif + _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); + _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); + + const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); + const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); + const char* __ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); + + wchar_t* __wcs_ps = 0; + wchar_t* __wcs_ns = 0; + const char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); + try + { + mbstate_t __state; + size_t __len; + __len = strlen(__cpossign); + if (__len) + { + ++__len; + memset(&__state, 0, sizeof(mbstate_t)); + __wcs_ps = new wchar_t[__len]; + mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state); + _M_data->_M_positive_sign = __wcs_ps; + } + else + _M_data->_M_positive_sign = L""; + _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); + + __len = strlen(__cnegsign); + if (!__nposn) + _M_data->_M_negative_sign = L"()"; + else if (__len) + { + ++__len; + memset(&__state, 0, sizeof(mbstate_t)); + __wcs_ns = new wchar_t[__len]; + mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state); + _M_data->_M_negative_sign = __wcs_ns; + } + else + _M_data->_M_negative_sign = L""; + _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign); + + // _Intl == true. + __len = strlen(__ccurr); + if (__len) + { + ++__len; + memset(&__state, 0, sizeof(mbstate_t)); + wchar_t* __wcs = new wchar_t[__len]; + mbsrtowcs(__wcs, &__ccurr, __len, &__state); + _M_data->_M_curr_symbol = __wcs; + } + else + _M_data->_M_curr_symbol = L""; + _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol); + } + catch (...) + { + delete _M_data; + _M_data = 0; + delete __wcs_ps; + delete __wcs_ns; +#ifdef __UCLIBC_HAS_XLOCALE__ + __uselocale(__old); +#else + setlocale(LC_ALL, __old); + free(__old); +#endif + __throw_exception_again; + } + + _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); + char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); + char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); + char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); + _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, + __pposn); + char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); + char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); + _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, + __nposn); + +#ifdef __UCLIBC_HAS_XLOCALE__ + __uselocale(__old); +#else + setlocale(LC_ALL, __old); + free(__old); +#endif + } + } + + template<> + moneypunct::~moneypunct() + { + if (_M_data->_M_positive_sign_size) + delete [] _M_data->_M_positive_sign; + if (_M_data->_M_negative_sign_size + && wcscmp(_M_data->_M_negative_sign, L"()") != 0) + delete [] _M_data->_M_negative_sign; + if (_M_data->_M_curr_symbol_size) + delete [] _M_data->_M_curr_symbol; + delete _M_data; + } + + template<> + moneypunct::~moneypunct() + { + if (_M_data->_M_positive_sign_size) + delete [] _M_data->_M_positive_sign; + if (_M_data->_M_negative_sign_size + && wcscmp(_M_data->_M_negative_sign, L"()") != 0) + delete [] _M_data->_M_negative_sign; + if (_M_data->_M_curr_symbol_size) + delete [] _M_data->_M_curr_symbol; + delete _M_data; + } +#endif +} diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-4.1.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc --- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/numeric_members.cc 1969-12-31 17:00:00.000000000 -0700 +++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2006-03-25 22:18:37.000000000 -0700 @@ -0,0 +1,173 @@ +// std::numpunct implementation details, GNU version -*- C++ -*- + +// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +// +// ISO C++ 14882: 22.2.3.1.2 numpunct virtual functions +// + +// Written by Benjamin Kosnik + +#define _LIBC +#include +#undef _LIBC +#include + +#ifdef __UCLIBC_MJN3_ONLY__ +#warning tailor for stub locale support +#endif +#ifndef __UCLIBC_HAS_XLOCALE__ +#define __nl_langinfo_l(N, L) nl_langinfo((N)) +#endif + +namespace std +{ + template<> + void + numpunct::_M_initialize_numpunct(__c_locale __cloc) + { + if (!_M_data) + _M_data = new __numpunct_cache; + + if (!__cloc) + { + // "C" locale + _M_data->_M_grouping = ""; + _M_data->_M_grouping_size = 0; + _M_data->_M_use_grouping = false; + + _M_data->_M_decimal_point = '.'; + _M_data->_M_thousands_sep = ','; + + for (size_t __i = 0; __i < __num_base::_S_oend; ++__i) + _M_data->_M_atoms_out[__i] = __num_base::_S_atoms_out[__i]; + + for (size_t __j = 0; __j < __num_base::_S_iend; ++__j) + _M_data->_M_atoms_in[__j] = __num_base::_S_atoms_in[__j]; + } + else + { + // Named locale. + _M_data->_M_decimal_point = *(__nl_langinfo_l(DECIMAL_POINT, + __cloc)); + _M_data->_M_thousands_sep = *(__nl_langinfo_l(THOUSANDS_SEP, + __cloc)); + + // Check for NULL, which implies no grouping. + if (_M_data->_M_thousands_sep == '\0') + _M_data->_M_grouping = ""; + else + _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc); + _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); + } + + // NB: There is no way to extact this info from posix locales. + // _M_truename = __nl_langinfo_l(YESSTR, __cloc); + _M_data->_M_truename = "true"; + _M_data->_M_truename_size = 4; + // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); + _M_data->_M_falsename = "false"; + _M_data->_M_falsename_size = 5; + } + + template<> + numpunct::~numpunct() + { delete _M_data; } + +#ifdef _GLIBCXX_USE_WCHAR_T + template<> + void + numpunct::_M_initialize_numpunct(__c_locale __cloc) + { + if (!_M_data) + _M_data = new __numpunct_cache; + + if (!__cloc) + { + // "C" locale + _M_data->_M_grouping = ""; + _M_data->_M_grouping_size = 0; + _M_data->_M_use_grouping = false; + + _M_data->_M_decimal_point = L'.'; + _M_data->_M_thousands_sep = L','; + + // Use ctype::widen code without the facet... + for (size_t __i = 0; __i < __num_base::_S_oend; ++__i) + _M_data->_M_atoms_out[__i] = + static_cast(__num_base::_S_atoms_out[__i]); + + for (size_t __j = 0; __j < __num_base::_S_iend; ++__j) + _M_data->_M_atoms_in[__j] = + static_cast(__num_base::_S_atoms_in[__j]); + } + else + { + // Named locale. + // NB: In the GNU model wchar_t is always 32 bit wide. +#ifdef __UCLIBC_MJN3_ONLY__ +#warning fix this +#endif +#ifdef __UCLIBC__ +# ifdef __UCLIBC_HAS_XLOCALE__ + _M_data->_M_decimal_point = __cloc->decimal_point_wc; + _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; +# else + _M_data->_M_decimal_point = __global_locale->decimal_point_wc; + _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; +# endif +#else + union { char *__s; wchar_t __w; } __u; + __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc); + _M_data->_M_decimal_point = __u.__w; + + __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc); + _M_data->_M_thousands_sep = __u.__w; +#endif + + if (_M_data->_M_thousands_sep == L'\0') + _M_data->_M_grouping = ""; + else + _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc); + _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); + } + + // NB: There is no way to extact this info from posix locales. + // _M_truename = __nl_langinfo_l(YESSTR, __cloc); + _M_data->_M_truename = L"true"; + _M_data->_M_truename_size = 4; + // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); + _M_data->_M_falsename = L"false"; + _M_data->_M_falsename_size = 5; + } + + template<> + numpunct::~numpunct() + { delete _M_data; } + #endif +} diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/time_members.cc gcc-4.1.0/libstdc++-v3/config/locale/uclibc/time_members.cc --- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/time_members.cc 1969-12-31 17:00:00.000000000 -0700 +++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/time_members.cc 2006-03-25 22:18:37.000000000 -0700 @@ -0,0 +1,406 @@ +// std::time_get, std::time_put implementation, GNU version -*- C++ -*- + +// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions +// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions +// + +// Written by Benjamin Kosnik + +#include +#include + +#ifdef __UCLIBC_MJN3_ONLY__ +#warning tailor for stub locale support +#endif +#ifndef __UCLIBC_HAS_XLOCALE__ +#define __nl_langinfo_l(N, L) nl_langinfo((N)) +#endif + +namespace std +{ + template<> + void + __timepunct:: + _M_put(char* __s, size_t __maxlen, const char* __format, + const tm* __tm) const + { +#ifdef __UCLIBC_HAS_XLOCALE__ + const size_t __len = __strftime_l(__s, __maxlen, __format, __tm, + _M_c_locale_timepunct); +#else + char* __old = strdup(setlocale(LC_ALL, NULL)); + setlocale(LC_ALL, _M_name_timepunct); + const size_t __len = strftime(__s, __maxlen, __format, __tm); + setlocale(LC_ALL, __old); + free(__old); +#endif + // Make sure __s is null terminated. + if (__len == 0) + __s[0] = '\0'; + } + + template<> + void + __timepunct::_M_initialize_timepunct(__c_locale __cloc) + { + if (!_M_data) + _M_data = new __timepunct_cache; + + if (!__cloc) + { + // "C" locale + _M_c_locale_timepunct = _S_get_c_locale(); + + _M_data->_M_date_format = "%m/%d/%y"; + _M_data->_M_date_era_format = "%m/%d/%y"; + _M_data->_M_time_format = "%H:%M:%S"; + _M_data->_M_time_era_format = "%H:%M:%S"; + _M_data->_M_date_time_format = ""; + _M_data->_M_date_time_era_format = ""; + _M_data->_M_am = "AM"; + _M_data->_M_pm = "PM"; + _M_data->_M_am_pm_format = ""; + + // Day names, starting with "C"'s Sunday. + _M_data->_M_day1 = "Sunday"; + _M_data->_M_day2 = "Monday"; + _M_data->_M_day3 = "Tuesday"; + _M_data->_M_day4 = "Wednesday"; + _M_data->_M_day5 = "Thursday"; + _M_data->_M_day6 = "Friday"; + _M_data->_M_day7 = "Saturday"; + + // Abbreviated day names, starting with "C"'s Sun. + _M_data->_M_aday1 = "Sun"; + _M_data->_M_aday2 = "Mon"; + _M_data->_M_aday3 = "Tue"; + _M_data->_M_aday4 = "Wed"; + _M_data->_M_aday5 = "Thu"; + _M_data->_M_aday6 = "Fri"; + _M_data->_M_aday7 = "Sat"; + + // Month names, starting with "C"'s January. + _M_data->_M_month01 = "January"; + _M_data->_M_month02 = "February"; + _M_data->_M_month03 = "March"; + _M_data->_M_month04 = "April"; + _M_data->_M_month05 = "May"; + _M_data->_M_month06 = "June"; + _M_data->_M_month07 = "July"; + _M_data->_M_month08 = "August"; + _M_data->_M_month09 = "September"; + _M_data->_M_month10 = "October"; + _M_data->_M_month11 = "November"; + _M_data->_M_month12 = "December"; + + // Abbreviated month names, starting with "C"'s Jan. + _M_data->_M_amonth01 = "Jan"; + _M_data->_M_amonth02 = "Feb"; + _M_data->_M_amonth03 = "Mar"; + _M_data->_M_amonth04 = "Apr"; + _M_data->_M_amonth05 = "May"; + _M_data->_M_amonth06 = "Jun"; + _M_data->_M_amonth07 = "Jul"; + _M_data->_M_amonth08 = "Aug"; + _M_data->_M_amonth09 = "Sep"; + _M_data->_M_amonth10 = "Oct"; + _M_data->_M_amonth11 = "Nov"; + _M_data->_M_amonth12 = "Dec"; + } + else + { + _M_c_locale_timepunct = _S_clone_c_locale(__cloc); + + _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc); + _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc); + _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc); + _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc); + _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc); + _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT, + __cloc); + _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc); + _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc); + _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc); + + // Day names, starting with "C"'s Sunday. + _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc); + _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc); + _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc); + _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc); + _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc); + _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc); + _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc); + + // Abbreviated day names, starting with "C"'s Sun. + _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc); + _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc); + _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc); + _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc); + _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc); + _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc); + _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc); + + // Month names, starting with "C"'s January. + _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc); + _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc); + _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc); + _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc); + _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc); + _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc); + _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc); + _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc); + _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc); + _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc); + _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc); + _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc); + + // Abbreviated month names, starting with "C"'s Jan. + _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc); + _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc); + _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc); + _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc); + _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc); + _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc); + _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc); + _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc); + _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc); + _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc); + _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc); + _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc); + } + } + +#ifdef _GLIBCXX_USE_WCHAR_T + template<> + void + __timepunct:: + _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, + const tm* __tm) const + { +#ifdef __UCLIBC_HAS_XLOCALE__ + __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct); + const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm, + _M_c_locale_timepunct); +#else + char* __old = strdup(setlocale(LC_ALL, NULL)); + setlocale(LC_ALL, _M_name_timepunct); + const size_t __len = wcsftime(__s, __maxlen, __format, __tm); + setlocale(LC_ALL, __old); + free(__old); +#endif + // Make sure __s is null terminated. + if (__len == 0) + __s[0] = L'\0'; + } + + template<> + void + __timepunct::_M_initialize_timepunct(__c_locale __cloc) + { + if (!_M_data) + _M_data = new __timepunct_cache; + +#warning wide time stuff +// if (!__cloc) + { + // "C" locale + _M_c_locale_timepunct = _S_get_c_locale(); + + _M_data->_M_date_format = L"%m/%d/%y"; + _M_data->_M_date_era_format = L"%m/%d/%y"; + _M_data->_M_time_format = L"%H:%M:%S"; + _M_data->_M_time_era_format = L"%H:%M:%S"; + _M_data->_M_date_time_format = L""; + _M_data->_M_date_time_era_format = L""; + _M_data->_M_am = L"AM"; + _M_data->_M_pm = L"PM"; + _M_data->_M_am_pm_format = L""; + + // Day names, starting with "C"'s Sunday. + _M_data->_M_day1 = L"Sunday"; + _M_data->_M_day2 = L"Monday"; + _M_data->_M_day3 = L"Tuesday"; + _M_data->_M_day4 = L"Wednesday"; + _M_data->_M_day5 = L"Thursday"; + _M_data->_M_day6 = L"Friday"; + _M_data->_M_day7 = L"Saturday"; + + // Abbreviated day names, starting with "C"'s Sun. + _M_data->_M_aday1 = L"Sun"; + _M_data->_M_aday2 = L"Mon"; + _M_data->_M_aday3 = L"Tue"; + _M_data->_M_aday4 = L"Wed"; + _M_data->_M_aday5 = L"Thu"; + _M_data->_M_aday6 = L"Fri"; + _M_data->_M_aday7 = L"Sat"; + + // Month names, starting with "C"'s January. + _M_data->_M_month01 = L"January"; + _M_data->_M_month02 = L"February"; + _M_data->_M_month03 = L"March"; + _M_data->_M_month04 = L"April"; + _M_data->_M_month05 = L"May"; + _M_data->_M_month06 = L"June"; + _M_data->_M_month07 = L"July"; + _M_data->_M_month08 = L"August"; + _M_data->_M_month09 = L"September"; + _M_data->_M_month10 = L"October"; + _M_data->_M_month11 = L"November"; + _M_data->_M_month12 = L"December"; + + // Abbreviated month names, starting with "C"'s Jan. + _M_data->_M_amonth01 = L"Jan"; + _M_data->_M_amonth02 = L"Feb"; + _M_data->_M_amonth03 = L"Mar"; + _M_data->_M_amonth04 = L"Apr"; + _M_data->_M_amonth05 = L"May"; + _M_data->_M_amonth06 = L"Jun"; + _M_data->_M_amonth07 = L"Jul"; + _M_data->_M_amonth08 = L"Aug"; + _M_data->_M_amonth09 = L"Sep"; + _M_data->_M_amonth10 = L"Oct"; + _M_data->_M_amonth11 = L"Nov"; + _M_data->_M_amonth12 = L"Dec"; + } +#if 0 + else + { + _M_c_locale_timepunct = _S_clone_c_locale(__cloc); + + union { char *__s; wchar_t *__w; } __u; + + __u.__s = __nl_langinfo_l(_NL_WD_FMT, __cloc); + _M_data->_M_date_format = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WERA_D_FMT, __cloc); + _M_data->_M_date_era_format = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WT_FMT, __cloc); + _M_data->_M_time_format = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WERA_T_FMT, __cloc); + _M_data->_M_time_era_format = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WD_T_FMT, __cloc); + _M_data->_M_date_time_format = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc); + _M_data->_M_date_time_era_format = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WAM_STR, __cloc); + _M_data->_M_am = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WPM_STR, __cloc); + _M_data->_M_pm = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc); + _M_data->_M_am_pm_format = __u.__w; + + // Day names, starting with "C"'s Sunday. + __u.__s = __nl_langinfo_l(_NL_WDAY_1, __cloc); + _M_data->_M_day1 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WDAY_2, __cloc); + _M_data->_M_day2 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WDAY_3, __cloc); + _M_data->_M_day3 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WDAY_4, __cloc); + _M_data->_M_day4 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WDAY_5, __cloc); + _M_data->_M_day5 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WDAY_6, __cloc); + _M_data->_M_day6 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WDAY_7, __cloc); + _M_data->_M_day7 = __u.__w; + + // Abbreviated day names, starting with "C"'s Sun. + __u.__s = __nl_langinfo_l(_NL_WABDAY_1, __cloc); + _M_data->_M_aday1 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WABDAY_2, __cloc); + _M_data->_M_aday2 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WABDAY_3, __cloc); + _M_data->_M_aday3 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WABDAY_4, __cloc); + _M_data->_M_aday4 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WABDAY_5, __cloc); + _M_data->_M_aday5 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WABDAY_6, __cloc); + _M_data->_M_aday6 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WABDAY_7, __cloc); + _M_data->_M_aday7 = __u.__w; + + // Month names, starting with "C"'s January. + __u.__s = __nl_langinfo_l(_NL_WMON_1, __cloc); + _M_data->_M_month01 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WMON_2, __cloc); + _M_data->_M_month02 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WMON_3, __cloc); + _M_data->_M_month03 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WMON_4, __cloc); + _M_data->_M_month04 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WMON_5, __cloc); + _M_data->_M_month05 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WMON_6, __cloc); + _M_data->_M_month06 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WMON_7, __cloc); + _M_data->_M_month07 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WMON_8, __cloc); + _M_data->_M_month08 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WMON_9, __cloc); + _M_data->_M_month09 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WMON_10, __cloc); + _M_data->_M_month10 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WMON_11, __cloc); + _M_data->_M_month11 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WMON_12, __cloc); + _M_data->_M_month12 = __u.__w; + + // Abbreviated month names, starting with "C"'s Jan. + __u.__s = __nl_langinfo_l(_NL_WABMON_1, __cloc); + _M_data->_M_amonth01 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WABMON_2, __cloc); + _M_data->_M_amonth02 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WABMON_3, __cloc); + _M_data->_M_amonth03 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WABMON_4, __cloc); + _M_data->_M_amonth04 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WABMON_5, __cloc); + _M_data->_M_amonth05 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WABMON_6, __cloc); + _M_data->_M_amonth06 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WABMON_7, __cloc); + _M_data->_M_amonth07 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WABMON_8, __cloc); + _M_data->_M_amonth08 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WABMON_9, __cloc); + _M_data->_M_amonth09 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WABMON_10, __cloc); + _M_data->_M_amonth10 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WABMON_11, __cloc); + _M_data->_M_amonth11 = __u.__w; + __u.__s = __nl_langinfo_l(_NL_WABMON_12, __cloc); + _M_data->_M_amonth12 = __u.__w; + } +#endif // 0 + } +#endif +} diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/time_members.h gcc-4.1.0/libstdc++-v3/config/locale/uclibc/time_members.h --- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/time_members.h 1969-12-31 17:00:00.000000000 -0700 +++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/time_members.h 2005-10-21 02:34:06.000000000 -0600 @@ -0,0 +1,76 @@ +// std::time_get, std::time_put implementation, GNU version -*- C++ -*- + +// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), + _M_name_timepunct(_S_get_c_name()) + { _M_initialize_timepunct(); } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL), + _M_name_timepunct(_S_get_c_name()) + { _M_initialize_timepunct(); } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), + _M_name_timepunct(NULL) + { + const size_t __len = std::strlen(__s) + 1; + char* __tmp = new char[__len]; + std::memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + + try + { _M_initialize_timepunct(__cloc); } + catch(...) + { + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } diff -urN gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/ctype_base.h gcc-4.1.0/libstdc++-v3/config/os/uclibc/ctype_base.h --- gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/ctype_base.h 1969-12-31 17:00:00.000000000 -0700 +++ gcc-4.1.0/libstdc++-v3/config/os/uclibc/ctype_base.h 2006-03-25 22:06:30.000000000 -0700 @@ -0,0 +1,64 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2004 +// Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +// +// ISO C++ 14882: 22.1 Locales +// + +/** @file ctype_base.h + * This is an internal header file, included by other library headers. + * You should not attempt to use it directly. + */ + +// Information as gleaned from /usr/include/ctype.h + + /// @brief Base class for ctype. + struct ctype_base + { + // Note: In uClibc, the following two types depend on configuration. + + // Non-standard typedefs. + typedef const __ctype_touplow_t* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef __ctype_mask_t mask; + static const mask upper = _ISupper; + static const mask lower = _ISlower; + static const mask alpha = _ISalpha; + static const mask digit = _ISdigit; + static const mask xdigit = _ISxdigit; + static const mask space = _ISspace; + static const mask print = _ISprint; + static const mask graph = _ISalpha | _ISdigit | _ISpunct; + static const mask cntrl = _IScntrl; + static const mask punct = _ISpunct; + static const mask alnum = _ISalpha | _ISdigit; + }; diff -urN gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/ctype_inline.h gcc-4.1.0/libstdc++-v3/config/os/uclibc/ctype_inline.h --- gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/ctype_inline.h 1969-12-31 17:00:00.000000000 -0700 +++ gcc-4.1.0/libstdc++-v3/config/os/uclibc/ctype_inline.h 2006-03-25 22:06:30.000000000 -0700 @@ -0,0 +1,69 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000, 2002 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high + && !(_M_table[static_cast(*__low)] & __m)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high + && (_M_table[static_cast(*__low)] & __m) != 0) + ++__low; + return __low; + } diff -urN gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/ctype_noninline.h gcc-4.1.0/libstdc++-v3/config/os/uclibc/ctype_noninline.h --- gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/ctype_noninline.h 1969-12-31 17:00:00.000000000 -0700 +++ gcc-4.1.0/libstdc++-v3/config/os/uclibc/ctype_noninline.h 2006-03-25 22:06:30.000000000 -0700 @@ -0,0 +1,92 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004 +// Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h + + const ctype_base::mask* + ctype::classic_table() throw() + { return __C_ctype_b; } + + ctype::ctype(__c_locale, const mask* __table, bool __del, + size_t __refs) + : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), + _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0) + { + _M_toupper = __C_ctype_toupper; + _M_tolower = __C_ctype_tolower; + _M_table = __table ? __table : __C_ctype_b; + memset(_M_widen, 0, sizeof(_M_widen)); + memset(_M_narrow, 0, sizeof(_M_narrow)); + } + + ctype::ctype(const mask* __table, bool __del, size_t __refs) + : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), + _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0) + { + _M_toupper = __C_ctype_toupper; + _M_tolower = __C_ctype_tolower; + _M_table = __table ? __table : __C_ctype_b; + memset(_M_widen, 0, sizeof(_M_widen)); + memset(_M_narrow, 0, sizeof(_M_narrow)); + } + + char + ctype::do_toupper(char __c) const + { return _M_toupper[static_cast(__c)]; } + + const char* + ctype::do_toupper(char* __low, const char* __high) const + { + while (__low < __high) + { + *__low = _M_toupper[static_cast(*__low)]; + ++__low; + } + return __high; + } + + char + ctype::do_tolower(char __c) const + { return _M_tolower[static_cast(__c)]; } + + const char* + ctype::do_tolower(char* __low, const char* __high) const + { + while (__low < __high) + { + *__low = _M_tolower[static_cast(*__low)]; + ++__low; + } + return __high; + } diff -urN gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/os_defines.h gcc-4.1.0/libstdc++-v3/config/os/uclibc/os_defines.h --- gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/os_defines.h 1969-12-31 17:00:00.000000000 -0700 +++ gcc-4.1.0/libstdc++-v3/config/os/uclibc/os_defines.h 2006-03-25 22:06:30.000000000 -0700 @@ -0,0 +1,44 @@ +// Specific definitions for GNU/Linux -*- C++ -*- + +// Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +#ifndef _GLIBCXX_OS_DEFINES +#define _GLIBCXX_OS_DEFINES 1 + +// System-specific #define, typedefs, corrections, etc, go here. This +// file will come before all others. + +// This keeps isanum, et al from being propagated as macros. +#define __NO_CTYPE 1 + +#include + +// We must not see the optimized string functions GNU libc defines. +#define __NO_STRING_INLINES + +#endif diff -urN gcc-4.1.0-dist/libstdc++-v3/configure gcc-4.1.0/libstdc++-v3/configure --- gcc-4.1.0-dist/libstdc++-v3/configure 2006-03-26 12:08:28.000000000 -0700 +++ gcc-4.1.0/libstdc++-v3/configure 2006-03-25 22:06:30.000000000 -0700 @@ -4005,6 +4005,11 @@ lt_cv_deplibs_check_method=pass_all ;; +linux-uclibc*) + lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` + ;; + netbsd* | knetbsd*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' @@ -5740,7 +5745,7 @@ enableval="$enable_clocale" case "$enableval" in - generic|gnu|ieee_1003.1-2001|yes|no|auto) ;; + generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto) ;; *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable clocale" >&5 echo "$as_me: error: Unknown argument to enable/disable clocale" >&2;} { (exit 1); exit 1; }; } ;; @@ -5765,6 +5770,9 @@ # Default to "generic". if test $enable_clocale_flag = auto; then case ${target_os} in + linux-uclibc*) + enable_clocale_flag=uclibc + ;; linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu) cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -5995,6 +6003,76 @@ CTIME_CC=config/locale/generic/time_members.cc CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h ;; + uclibc) + echo "$as_me:$LINENO: result: uclibc" >&5 +echo "${ECHO_T}uclibc" >&6 + + # Declare intention to use gettext, and add support for specific + # languages. + # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT + ALL_LINGUAS="de fr" + + # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. + # Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_check_msgfmt+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$check_msgfmt"; then + ac_cv_prog_check_msgfmt="$check_msgfmt" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_check_msgfmt="yes" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_check_msgfmt" && ac_cv_prog_check_msgfmt="no" +fi +fi +check_msgfmt=$ac_cv_prog_check_msgfmt +if test -n "$check_msgfmt"; then + echo "$as_me:$LINENO: result: $check_msgfmt" >&5 +echo "${ECHO_T}$check_msgfmt" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then + USE_NLS=yes + fi + # Export the build objects. + for ling in $ALL_LINGUAS; do \ + glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ + glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ + done + + + + CLOCALE_H=config/locale/uclibc/c_locale.h + CLOCALE_CC=config/locale/uclibc/c_locale.cc + CCODECVT_CC=config/locale/uclibc/codecvt_members.cc + CCOLLATE_CC=config/locale/uclibc/collate_members.cc + CCTYPE_CC=config/locale/uclibc/ctype_members.cc + CMESSAGES_H=config/locale/uclibc/messages_members.h + CMESSAGES_CC=config/locale/uclibc/messages_members.cc + CMONEY_CC=config/locale/uclibc/monetary_members.cc + CNUMERIC_CC=config/locale/uclibc/numeric_members.cc + CTIME_H=config/locale/uclibc/time_members.h + CTIME_CC=config/locale/uclibc/time_members.cc + CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h + ;; esac # This is where the testsuite looks for locale catalogs, using the diff -urN gcc-4.1.0-dist/libstdc++-v3/configure.host gcc-4.1.0/libstdc++-v3/configure.host --- gcc-4.1.0-dist/libstdc++-v3/configure.host 2006-03-26 12:08:28.000000000 -0700 +++ gcc-4.1.0/libstdc++-v3/configure.host 2006-03-25 22:06:30.000000000 -0700 @@ -261,6 +261,12 @@ ;; esac +# Override for uClibc since linux-uclibc gets mishandled above. +case "${host_os}" in + *-uclibc*) + os_include_dir="os/uclibc" + ;; +esac # Set any OS-dependent and CPU-dependent bits. # THIS TABLE IS SORTED. KEEP IT THAT WAY. diff -urN gcc-4.1.0-dist/libstdc++-v3/crossconfig.m4 gcc-4.1.0/libstdc++-v3/crossconfig.m4 --- gcc-4.1.0-dist/libstdc++-v3/crossconfig.m4 2006-03-26 12:08:28.000000000 -0700 +++ gcc-4.1.0/libstdc++-v3/crossconfig.m4 2006-03-25 22:06:30.000000000 -0700 @@ -143,6 +143,99 @@ ;; esac ;; + *-uclibc*) +# Temporary hack until we implement the float versions of the libm funcs + AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \ + machine/endian.h machine/param.h sys/machine.h sys/types.h \ + fp.h float.h endian.h inttypes.h locale.h float.h stdint.h]) + SECTION_FLAGS='-ffunction-sections -fdata-sections' + AC_SUBST(SECTION_FLAGS) + GLIBCXX_CHECK_LINKER_FEATURES + GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT + GLIBCXX_CHECK_WCHAR_T_SUPPORT + + # For LFS. + AC_DEFINE(HAVE_INT64_T) + case "$target" in + *-uclinux*) + # Don't enable LFS with uClinux + ;; + *) + AC_DEFINE(_GLIBCXX_USE_LFS) + esac + + # For showmanyc_helper(). + AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h) + GLIBCXX_CHECK_POLL + GLIBCXX_CHECK_S_ISREG_OR_S_IFREG + + # For xsputn_2(). + AC_CHECK_HEADERS(sys/uio.h) + GLIBCXX_CHECK_WRITEV + +# AC_DEFINE(HAVE_ACOSF) +# AC_DEFINE(HAVE_ASINF) +# AC_DEFINE(HAVE_ATANF) +# AC_DEFINE(HAVE_ATAN2F) + AC_DEFINE(HAVE_CEILF) + AC_DEFINE(HAVE_COPYSIGN) +# AC_DEFINE(HAVE_COPYSIGNF) +# AC_DEFINE(HAVE_COSF) +# AC_DEFINE(HAVE_COSHF) +# AC_DEFINE(HAVE_EXPF) +# AC_DEFINE(HAVE_FABSF) + AC_DEFINE(HAVE_FINITE) + AC_DEFINE(HAVE_FINITEF) + AC_DEFINE(HAVE_FLOORF) +# AC_DEFINE(HAVE_FMODF) +# AC_DEFINE(HAVE_FREXPF) + AC_DEFINE(HAVE_HYPOT) +# AC_DEFINE(HAVE_HYPOTF) + AC_DEFINE(HAVE_ISINF) + AC_DEFINE(HAVE_ISINFF) + AC_DEFINE(HAVE_ISNAN) + AC_DEFINE(HAVE_ISNANF) +# AC_DEFINE(HAVE_LOGF) +# AC_DEFINE(HAVE_LOG10F) +# AC_DEFINE(HAVE_MODFF) +# AC_DEFINE(HAVE_SINF) +# AC_DEFINE(HAVE_SINHF) +# AC_DEFINE(HAVE_SINCOS) +# AC_DEFINE(HAVE_SINCOSF) + AC_DEFINE(HAVE_SQRTF) +# AC_DEFINE(HAVE_TANF) +# AC_DEFINE(HAVE_TANHF) + if test x"long_double_math_on_this_cpu" = x"yes"; then + AC_MSG_ERROR([long_double_math_on_this_cpu is yes!]) +# AC_DEFINE(HAVE_ACOSL) +# AC_DEFINE(HAVE_ASINL) +# AC_DEFINE(HAVE_ATANL) +# AC_DEFINE(HAVE_ATAN2L) +# AC_DEFINE(HAVE_CEILL) +# AC_DEFINE(HAVE_COPYSIGNL) +# AC_DEFINE(HAVE_COSL) +# AC_DEFINE(HAVE_COSHL) +# AC_DEFINE(HAVE_EXPL) +# AC_DEFINE(HAVE_FABSL) +# AC_DEFINE(HAVE_FINITEL) +# AC_DEFINE(HAVE_FLOORL) +# AC_DEFINE(HAVE_FMODL) +# AC_DEFINE(HAVE_FREXPL) +# AC_DEFINE(HAVE_HYPOTL) +# AC_DEFINE(HAVE_ISINFL) +# AC_DEFINE(HAVE_ISNANL) +# AC_DEFINE(HAVE_LOGL) +# AC_DEFINE(HAVE_LOG10L) +# AC_DEFINE(HAVE_MODFL) +# AC_DEFINE(HAVE_POWL) +# AC_DEFINE(HAVE_SINL) +# AC_DEFINE(HAVE_SINHL) +# AC_DEFINE(HAVE_SINCOSL) +# AC_DEFINE(HAVE_SQRTL) +# AC_DEFINE(HAVE_TANL) +# AC_DEFINE(HAVE_TANHL) + fi + ;; *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-knetbsd*-gnu) AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \ machine/endian.h machine/param.h sys/machine.h sys/types.h \ @@ -157,7 +250,7 @@ AC_DEFINE(HAVE_INT64_T) case "$target" in *-uclinux*) - # Don't enable LFS with uClibc + # Don't enable LFS with uClinux ;; *) AC_DEFINE(_GLIBCXX_USE_LFS) diff -urN gcc-4.1.0-dist/libstdc++-v3/include/c_compatibility/wchar.h gcc-4.1.0/libstdc++-v3/include/c_compatibility/wchar.h --- gcc-4.1.0-dist/libstdc++-v3/include/c_compatibility/wchar.h 2006-03-26 12:08:28.000000000 -0700 +++ gcc-4.1.0/libstdc++-v3/include/c_compatibility/wchar.h 2006-03-25 22:06:30.000000000 -0700 @@ -101,7 +101,9 @@ using std::wmemcpy; using std::wmemmove; using std::wmemset; +#if _GLIBCXX_HAVE_WCSFTIME using std::wcsftime; +#endif #if _GLIBCXX_USE_C99 using std::wcstold; diff -urN gcc-4.1.0-dist/libstdc++-v3/include/c_std/std_cwchar.h gcc-4.1.0/libstdc++-v3/include/c_std/std_cwchar.h --- gcc-4.1.0-dist/libstdc++-v3/include/c_std/std_cwchar.h 2006-03-26 12:08:28.000000000 -0700 +++ gcc-4.1.0/libstdc++-v3/include/c_std/std_cwchar.h 2006-03-25 22:06:30.000000000 -0700 @@ -180,7 +180,9 @@ using ::wcscoll; using ::wcscpy; using ::wcscspn; +#if _GLIBCXX_HAVE_WCSFTIME using ::wcsftime; +#endif using ::wcslen; using ::wcsncat; using ::wcsncmp; geexbox-1.1/packages/gcc/patches/21_uclibc-locale-snprintf-c99-fix.diff0000644000175000017500000000111610641745504023735 0ustar benbendiff -Nur gcc-3.4.5.orig/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-3.4.5/libstdc++-v3/config/locale/uclibc/c_locale.h --- gcc-3.4.5.orig/libstdc++-v3/config/locale/uclibc/c_locale.h Fri Mar 3 16:38:52 2006 +++ gcc-3.4.5/libstdc++-v3/config/locale/uclibc/c_locale.h Fri Mar 3 16:40:34 2006 @@ -100,7 +100,11 @@ # endif #endif +#ifdef _GLIBCXX_USE_C99 const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v); +#else + const int __ret = std::sprintf(__out, __fmt, __prec, __v); +#endif #ifdef __UCLIBC_HAS_XLOCALE__ __gnu_cxx::__uselocale(__old); geexbox-1.1/packages/gcc/patches/22_libstdc-index-macro.diff0000644000175000017500000000132110641745504022037 0ustar benben--- gcc-4.1.0/libstdc++-v3/include/ext/rope.mps 2006-03-24 01:49:51 +0100 +++ gcc-4.1.0/libstdc++-v3/include/ext/rope 2006-03-24 01:49:37 +0100 @@ -59,6 +59,9 @@ #include #include +/* cope w/ index defined as macro, SuSv3 proposal */ +#undef index + # ifdef __GC # define __GC_CONST const # else --- gcc-4.1.0/libstdc++-v3/include/ext/ropeimpl.h.mps 2006-03-24 01:50:04 +0100 +++ gcc-4.1.0/libstdc++-v3/include/ext/ropeimpl.h 2006-03-24 01:50:28 +0100 @@ -53,6 +53,9 @@ #include // For uninitialized_copy_n #include // For power +/* cope w/ index defined as macro, SuSv3 proposal */ +#undef index + namespace __gnu_cxx { using std::size_t; geexbox-1.1/packages/gcc/patches/30_fastmath-fxsave.diff0000644000175000017500000000160410641745504021313 0ustar benben* change fxsave to be global variable (static) instand of stack variable, to really make it 16 bytes aligned. this bug happens because we compile our code with -Os which effects the stack preferred stack boundary (-mpreferred-stack-boundary) to be 2^2 = 4 bytes instand of 2^4 = 16 bytes and then __attribute__ ((aligned (16))) does always work for stack variables. this adds (atleast) 512 bytes to programs which uses -ffast-math but allows them to use DAZ optimization. diff -Nur gcc-4.1.0.orig/gcc/config/i386/crtfastmath.c gcc-4.1.0/gcc/config/i386/crtfastmath.c --- gcc-4.1.0.orig/gcc/config/i386/crtfastmath.c Wed Aug 17 06:07:06 2005 +++ gcc-4.1.0/gcc/config/i386/crtfastmath.c Fri Mar 17 12:43:50 2006 @@ -75,7 +75,7 @@ if (edx & FXSAVE) { /* Check if DAZ is available. */ - struct + static struct { unsigned short int cwd; unsigned short int swd; geexbox-1.1/packages/gcc/unpack0000755000175000017500000000010410641745504014630 0ustar benben#!/bin/sh . config/options $SCRIPTS/fixconfigtools $BUILD/$1*/gcc geexbox-1.1/packages/gcc/url0000644000175000017500000000024710641745504014156 0ustar benbenftp://ftp.fu-berlin.de/unix/languages/gcc/releases/gcc-4.1.2/gcc-core-4.1.2.tar.bz2 ftp://ftp.fu-berlin.de/unix/languages/gcc/releases/gcc-4.1.2/gcc-g++-4.1.2.tar.bz2 geexbox-1.1/packages/gdb/0000755000175000017500000000000010641745504013426 5ustar benbengeexbox-1.1/packages/gdb/build0000755000175000017500000000075010641745504014455 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain $SCRIPTS/build ncurses export bash_cv_have_mbstate_t=set export CC_FOR_BUILD="$HOST_CC" export CFLAGS_FOR_BUILD="$HOST_CFLAGS" cd $BUILD/$1* mkdir -p objdir cd objdir ../configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --with-sysroot=$SYSROOT_PREFIX \ --disable-nls \ --disable-sim \ --without-x \ --disable-tui \ --disable-libada make geexbox-1.1/packages/gdb/install0000755000175000017500000000011110641745504015013 0ustar benben#!/bin/sh . config/options cp $BUILD/$1*/objdir/$1/$1 $INSTALL/usr/bin geexbox-1.1/packages/gdb/patches/0000755000175000017500000000000010641745504015055 5ustar benbengeexbox-1.1/packages/gdb/patches/10_uclibc-conf.diff0000644000175000017500000000460310641745504020376 0ustar benben--- gdb-6.3/bfd/configure.orig Fri Oct 8 16:53:56 2004 +++ gdb-6.3/bfd/configure Sun Feb 27 18:32:58 2005 @@ -3583,6 +3583,11 @@ lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` ;; +linux-uclibc*) + lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` + ;; + netbsd* | knetbsd*-gnu) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' --- gdb-6.3/libtool.m4.orig Wed Jul 21 21:21:41 2004 +++ gdb-6.3/libtool.m4 Mon Feb 28 00:08:11 2005 @@ -653,6 +653,11 @@ fi ;; +linux-uclibc*) + lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` + ;; + newsos6) [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'] lt_cv_file_magic_cmd=/usr/bin/file --- gdb-6.3/ltconfig.orig Tue Oct 5 15:34:42 2004 +++ gdb-6.3/ltconfig Sun Feb 27 18:14:41 2005 @@ -602,7 +602,7 @@ # Transform linux* to *-*-linux-gnu*, to support old configure scripts. case $host_os in -linux-gnu*) ;; +linux-gnu*|linux-uclibc*) ;; linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` esac @@ -1270,6 +1270,24 @@ dynamic_linker='GNU/Linux ld.so' ;; +linux-uclibc*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + # Note: copied from linux-gnu, and may not be appropriate. + hardcode_into_libs=yes + # Assume using the uClibc dynamic linker. + dynamic_linker="uClibc ld.so" + ;; + netbsd*) need_lib_prefix=no need_version=no --- gdb-6.3/opcodes/configure.orig Fri Sep 17 08:13:38 2004 +++ gdb-6.3/opcodes/configure Mon Feb 28 00:09:42 2005 @@ -3595,6 +3595,11 @@ fi ;; +linux-uclibc*) + lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` + ;; + newsos6) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file geexbox-1.1/packages/gdb/url0000644000175000017500000000005310641745504014151 0ustar benbenhttp://ftp.gnu.org/gnu/gdb/gdb-6.6.tar.bz2 geexbox-1.1/packages/generator/0000755000175000017500000000000010641745504014660 5ustar benbengeexbox-1.1/packages/generator/build0000755000175000017500000000002210641745504015677 0ustar benben#!/bin/sh exit 0 geexbox-1.1/packages/generator/install0000755000175000017500000000027010641745504016253 0ustar benben#!/bin/sh . config/options $SCRIPTS/install tools-generator cp $BUILD/$1*/generator.exe $INSTALL cp $BUILD/$1*/linux-i386-generator $INSTALL cp $BUILD/$1*/macosx-generator $INSTALL geexbox-1.1/packages/generator/url0000644000175000017500000000005010641745504015400 0ustar benbenGEEXBOX_SRCS/generator-fltk-r248.tar.gz geexbox-1.1/packages/genext2fs/0000755000175000017500000000000010641745504014577 5ustar benbengeexbox-1.1/packages/genext2fs/build0000755000175000017500000000016110641745504015622 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain setup_toolchain host make -C $BUILD/$1* \ genext2fs geexbox-1.1/packages/genext2fs/patches/0000755000175000017500000000000010641745504016226 5ustar benbengeexbox-1.1/packages/genext2fs/patches/10_glibc.diff0000644000175000017500000000052510641745504020442 0ustar benben--- genext2fs-1.3.orig.orig/genext2fs.c Mon Jun 18 11:11:32 2001 +++ genext2fs-1.3.orig/genext2fs.c Wed Nov 17 22:02:07 2004 @@ -168,7 +168,7 @@ // which of course is not the same on Solaris, old glibc and new // glibc ... -#ifdef __GNUC__ +#ifdef __GLIBC__ #define SCANF_PREFIX "a" #define SCANF_STRING(s) (&s) #define GETCWD_SIZE 0 geexbox-1.1/packages/genext2fs/url0000644000175000017500000000012010641745504015315 0ustar benbenhttp://ftp.de.debian.org/debian/pool/main/g/genext2fs/genext2fs_1.3.orig.tar.gz geexbox-1.1/packages/gettext/0000755000175000017500000000000010641745504014356 5ustar benbengeexbox-1.1/packages/gettext/build0000755000175000017500000000062410641745504015405 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain cd $BUILD/$1*/$1-runtime ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=$LIB_PREFIX \ --enable-static \ --disable-shared \ --disable-dependency-tracking \ --disable-java \ --disable-native-java \ --disable-libasprintf make make install geexbox-1.1/packages/gettext/url0000644000175000017500000000010210641745504015074 0ustar benbenhttp://mirrors.ircam.fr/pub/gnu/gnu/gettext/gettext-0.16.1.tar.gz geexbox-1.1/packages/glibc-headers/0000755000175000017500000000000010641745504015363 5ustar benbengeexbox-1.1/packages/glibc-headers/build0000755000175000017500000000202710641745504016411 0ustar benben#!/bin/sh . config/options HEADERS=$SYSROOT_PREFIX/usr/include rm -rf $HEADERS mkdir -p $HEADERS touch $HEADERS/stddef.h $SCRIPTS/install ccache $SCRIPTS/install linux-headers $SCRIPTS/unpack glibc setup_toolchain host cd $BUILD/glibc* mkdir -p objdir-$1 cd objdir-$1 cat >config.cache <>config.cache <>config.cache <configparms <config.cache <configparms < #include +#include static const double almost_half = 0.5000000000000001; /* 0.5 + 2^-53 */ static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 }; diff -Nur glibc-2.5.orig/sysdeps/powerpc/fpu/e_sqrtf.c glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c --- glibc-2.5.orig/sysdeps/powerpc/fpu/e_sqrtf.c Sat Sep 30 11:33:34 2006 +++ glibc-2.5/sysdeps/powerpc/fpu/e_sqrtf.c Sat Sep 30 11:48:44 2006 @@ -24,6 +24,7 @@ #include #include +#include static const float almost_half = 0.50000006; /* 0.5 + 2^-24 */ static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 }; geexbox-1.1/packages/glibc/patches/20_remove-libgcc_eh.diff0000644000175000017500000000136610641745504021734 0ustar benbenSubmitted By: Jim Gifford (patches at jg555 dot com) Date: 2005-07-20 Initial Package Version: 2.3.5 Origin: Rene Rebe Upstream Status: Unknown Description: Removes dependency for libgcc_eh --- glibc-2.3.5/Makeconfig.orig 2005-07-21 04:53:30.000000000 +0000 +++ glibc-2.3.5/Makeconfig 2005-07-21 04:53:49.000000000 +0000 @@ -503,12 +503,12 @@ libunwind = -lunwind endif ifneq ($(have-as-needed),yes) - libgcc_eh := -lgcc_eh $(libunwind) + libgcc_eh := $(libunwind) else libgcc_eh := -Wl,--as-needed -lgcc_s$(libgcc_s_suffix) $(libunwind) -Wl,--no-as-needed endif gnulib := -lgcc $(libgcc_eh) -static-gnulib := -lgcc -lgcc_eh $(libunwind) +static-gnulib := -lgcc $(libunwind) libc.so-gnulib := -lgcc endif ifeq ($(elf),yes) geexbox-1.1/packages/glibc/url0000644000175000017500000000010310641745504014471 0ustar benbenftp://ftp.belnet.be/mirror/ftp.gnu.org/gnu/glibc/glibc-2.5.tar.bz2 geexbox-1.1/packages/grub/0000755000175000017500000000000010641745504013631 5ustar benbengeexbox-1.1/packages/grub/arch0000644000175000017500000000000510641745504014464 0ustar benbeni386 geexbox-1.1/packages/grub/build0000755000175000017500000000045610641745504014663 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain cd $BUILD/$1* ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix="`ls -d $ROOT/$BUILD/$1*`/build" \ --disable-shared \ --without-curses \ --enable-graphics make make install geexbox-1.1/packages/grub/install0000755000175000017500000000131110641745504015221 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain FILES="e2fs_stage1_5 fat_stage1_5 stage1 stage2" mkdir -p $INSTALL/usr/share if [ "$COMPRESSION_METHOD" = lzma ]; then tar cf - -C $BUILD/$1*/build/lib/grub/i386-pc $FILES | lzma e $INSTALL/usr/share/grub-i386-pc.tar.lzma -si -a2 else tar cf $INSTALL/usr/share/grub-i386-pc.tar -C $BUILD/$1*/build/lib/grub/i386-pc $FILES gzip -9 $INSTALL/usr/share/grub-i386-pc.tar fi mkdir -p $INSTALL/usr/bin cp $BUILD/$1*/build/sbin/grub $INSTALL/usr/bin if [ "$2" != generator ]; then $SCRIPTS/unpack theme-$THEME [ -f "$BUILD/theme-$THEME/grub-splash.xpm.gz" ] && cp $BUILD/theme-$THEME/grub-splash.xpm.gz $INSTALL/usr/share/grub-splash.xpm.gz fi exit 0 geexbox-1.1/packages/grub/patches/0000755000175000017500000000000010641745504015260 5ustar benbengeexbox-1.1/packages/grub/patches/10_2gb_limit.diff0000644000175000017500000000242510641745504020265 0ustar benben Author: Goswin Brederlow Status: pending Updated by: Otavio Salvador - resync with 0.97 code diff -r 190816689333 stage2/char_io.c --- a/stage2/char_io.c Sat Nov 5 15:00:55 2005 +++ b/stage2/char_io.c Sat Nov 5 13:09:55 2005 @@ -1175,13 +1175,13 @@ #endif /* ! STAGE1_5 */ int -memcheck (int addr, int len) +memcheck (unsigned long int addr, unsigned long int len) { #ifdef GRUB_UTIL - auto int start_addr (void); - auto int end_addr (void); + auto unsigned long int start_addr (void); + auto int unsigned long end_addr (void); - auto int start_addr (void) + auto unsigned long int start_addr (void) { int ret; # if defined(HAVE_START_SYMBOL) @@ -1192,7 +1192,7 @@ return ret; } - auto int end_addr (void) + auto unsigned long int end_addr (void) { int ret; # if defined(HAVE_END_SYMBOL) diff -r 190816689333 stage2/shared.h --- a/stage2/shared.h Sat Nov 5 15:00:55 2005 +++ b/stage2/shared.h Sat Nov 5 13:09:55 2005 @@ -911,7 +911,7 @@ int nul_terminate (char *str); int get_based_digit (int c, int base); int safe_parse_maxint (char **str_ptr, int *myint_ptr); -int memcheck (int start, int len); +int memcheck (unsigned long int start, unsigned long int len); void grub_putstr (const char *str); #ifndef NO_DECOMPRESSION geexbox-1.1/packages/grub/patches/11_initrd-max-address.diff0000644000175000017500000000153010641745504022111 0ustar benben Date: 2005-11-11 Author: Otavio Salvador Comment: Stolen from SuSE grub package. It fix the max address of initrd image and include a safe default in case of it isn't available --- grub-0.94/stage2/boot.c.orig 2004-01-11 09:49:05.000000000 +0100 +++ grub-0.94/stage2/boot.c 2004-03-04 16:11:21.857403508 +0100 @@ -810,8 +810,11 @@ moveto = (mbi.mem_upper + 0x400) << 10; moveto = (moveto - len) & 0xfffff000; - max_addr = (lh->header == LINUX_MAGIC_SIGNATURE && lh->version >= 0x0203 - ? lh->initrd_addr_max : LINUX_INITRD_MAX_ADDRESS); + max_addr = LINUX_INITRD_MAX_ADDRESS; + if (lh->header == LINUX_MAGIC_SIGNATURE && + lh->version >= 0x0203 && + lh->initrd_addr_max < max_addr) + max_addr = lh->initrd_addr_max; if (moveto + len >= max_addr) moveto = (max_addr - len) & 0xfffff000; geexbox-1.1/packages/grub/patches/13_geometry-26kernel.diff0000644000175000017500000001535210641745504021704 0ustar benben Date: 2005-11-11 Author: Otavio Salvador Comment: Stolen from Fedora grub package. Put geometry discover inside of grub code since kernel 2.6 doesn't do that anymore. --- grub-0.95/lib/device.c.26geom 2004-11-30 16:33:00.186025728 -0500 +++ grub-0.95/lib/device.c 2004-11-30 16:45:09.073218032 -0500 @@ -131,6 +131,152 @@ #include #include +#if defined(__linux__) +/* The 2.6 kernel has removed all of the geometry handling for IDE drives + * that did fixups for LBA, etc. This means that the geometry we get + * with the ioctl has a good chance of being wrong. So, we get to + * also know about partition tables and try to read what the geometry + * is there. *grumble* Very closely based on code from cfdisk + */ +static void get_kernel_geometry(int fd, long long *cyl, int *heads, int *sectors) { + struct hd_geometry hdg; + + if (ioctl (fd, HDIO_GETGEO, &hdg)) + return; + + *cyl = hdg.cylinders; + *heads = hdg.heads; + *sectors = hdg.sectors; +} + +struct partition { + unsigned char boot_ind; /* 0x80 - active */ + unsigned char head; /* starting head */ + unsigned char sector; /* starting sector */ + unsigned char cyl; /* starting cylinder */ + unsigned char sys_ind; /* What partition type */ + unsigned char end_head; /* end head */ + unsigned char end_sector; /* end sector */ + unsigned char end_cyl; /* end cylinder */ + unsigned char start4[4]; /* starting sector counting from 0 */ + unsigned char size4[4]; /* nr of sectors in partition */ +}; + +#define ALIGNMENT 2 +typedef union { + struct { + unsigned char align[ALIGNMENT]; + unsigned char b[SECTOR_SIZE]; + } c; + struct { + unsigned char align[ALIGNMENT]; + unsigned char buffer[0x1BE]; + struct partition part[4]; + unsigned char magicflag[2]; + } p; +} partition_table; + +#define PART_TABLE_FLAG0 0x55 +#define PART_TABLE_FLAG1 0xAA + +static void +get_partition_table_geometry(partition_table *bufp, long long *cyl, int *heads, + int *sectors) { + struct partition *p; + int i,h,s,hh,ss; + int first = 1; + int bad = 0; + + if (bufp->p.magicflag[0] != PART_TABLE_FLAG0 || + bufp->p.magicflag[1] != PART_TABLE_FLAG1) { + /* Matthew Wilcox: slightly friendlier version of + fatal(_("Bad signature on partition table"), 3); + */ + fprintf(stderr, "Unknown partition table signature\n"); + return; + } + + hh = ss = 0; + for (i=0; i<4; i++) { + p = &(bufp->p.part[i]); + if (p->sys_ind != 0) { + h = p->end_head + 1; + s = (p->end_sector & 077); + if (first) { + hh = h; + ss = s; + first = 0; + } else if (hh != h || ss != s) + bad = 1; + } + } + + if (!first && !bad) { + *heads = hh; + *sectors = ss; + } +} + +static long long my_lseek (unsigned int fd, long long offset, + unsigned int origin) +{ +#if defined(__linux__) && (!defined(__GLIBC__) || \ + ((__GLIBC__ < 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 1)))) + /* Maybe libc doesn't have large file support. */ + loff_t offset, result; + static int _llseek (uint filedes, ulong hi, ulong lo, + loff_t *res, uint wh); + _syscall5 (int, _llseek, uint, filedes, ulong, hi, ulong, lo, + loff_t *, res, uint, wh); + + if (_llseek (fd, offset >> 32, offset & 0xffffffff, &result, SEEK_SET) < 0) + return (long long) -1; + return result; +#else + return lseek(fd, offset, SEEK_SET); +#endif +} + +static void get_linux_geometry (int fd, struct geometry *geom) { + long long kern_cyl = 0; int kern_head = 0, kern_sectors = 0; + long long pt_cyl = 0; int pt_head = 0, pt_sectors = 0; + partition_table bufp; + char *buff, *buf_unaligned; + + buf_unaligned = malloc(sizeof(partition_table) + 4095); + buff = (char *) (((unsigned long)buf_unaligned + 4096 - 1) & + (~(4096-1))); + + get_kernel_geometry(fd, &kern_cyl, &kern_head, &kern_sectors); + + if (my_lseek (fd, 0*SECTOR_SIZE, SEEK_SET) < 0) { + fprintf(stderr, "Unable to seek"); + } + + if (read(fd, buff, SECTOR_SIZE) == SECTOR_SIZE) { + memcpy(bufp.c.b, buff, SECTOR_SIZE); + get_partition_table_geometry(&bufp, &pt_cyl, &pt_head, &pt_sectors); + } else { + fprintf(stderr, "Unable to read partition table: %s\n", strerror(errno)); + } + + if (pt_head && pt_sectors) { + int cyl_size; + + geom->heads = pt_head; + geom->sectors = pt_sectors; + cyl_size = pt_head * pt_sectors; + geom->cylinders = geom->total_sectors/cyl_size; + } else { + geom->heads = kern_head; + geom->sectors = kern_sectors; + geom->cylinders = kern_cyl; + } + + return; +} +#endif + /* Get the geometry of a drive DRIVE. */ void get_drive_geometry (struct geometry *geom, char **map, int drive) @@ -151,21 +297,16 @@ #if defined(__linux__) /* Linux */ { - struct hd_geometry hdg; unsigned long nr; - - if (ioctl (fd, HDIO_GETGEO, &hdg)) - goto fail; if (ioctl (fd, BLKGETSIZE, &nr)) goto fail; /* Got the geometry, so save it. */ - geom->cylinders = hdg.cylinders; - geom->heads = hdg.heads; - geom->sectors = hdg.sectors; geom->total_sectors = nr; - + get_linux_geometry(fd, geom); + if (!geom->heads && !geom->cylinders && !geom->sectors) + goto fail; goto success; } @@ -841,6 +982,7 @@ { char dev[PATH_MAX]; /* XXX */ int fd; + off_t offset = (off_t) sector * (off_t) SECTOR_SIZE; if ((partition & 0x00FF00) != 0x00FF00) { @@ -874,35 +1016,13 @@ errnum = ERR_NO_PART; return 0; } - -#if defined(__linux__) && (!defined(__GLIBC__) || \ - ((__GLIBC__ < 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 1)))) - /* Maybe libc doesn't have large file support. */ - { - loff_t offset, result; - static int _llseek (uint filedes, ulong hi, ulong lo, - loff_t *res, uint wh); - _syscall5 (int, _llseek, uint, filedes, ulong, hi, ulong, lo, - loff_t *, res, uint, wh); - offset = (loff_t) sector * (loff_t) SECTOR_SIZE; - if (_llseek (fd, offset >> 32, offset & 0xffffffff, &result, SEEK_SET)) - { - errnum = ERR_DEV_VALUES; - return 0; - } - } -#else - { - off_t offset = (off_t) sector * (off_t) SECTOR_SIZE; - if (lseek (fd, offset, SEEK_SET) != offset) - { - errnum = ERR_DEV_VALUES; - return 0; - } - } -#endif + if (my_lseek(fd, offset, SEEK_SET) != offset) + { + errnum = ERR_DEV_VALUES; + return 0; + } if (write (fd, buf, size * SECTOR_SIZE) != (size * SECTOR_SIZE)) { geexbox-1.1/packages/grub/patches/20_graphics.diff0000644000175000017500000016666410641745504020236 0ustar benbendiff -Naur grub-0.97.orig/configure.ac grub-0.97/configure.ac --- grub-0.97.orig/configure.ac 2005-05-07 23:36:03.000000000 -0300 +++ grub-0.97/configure.ac 2005-06-12 20:56:49.000000000 -0300 @@ -595,6 +595,11 @@ [ --enable-diskless enable diskless support]) AM_CONDITIONAL(DISKLESS_SUPPORT, test "x$enable_diskless" = xyes) +dnl Graphical splashscreen support +AC_ARG_ENABLE(graphics, + [ --disable-graphics disable graphics terminal support]) +AM_CONDITIONAL(GRAPHICS_SUPPORT, test "x$enable_graphics" != xno) + dnl Hercules terminal AC_ARG_ENABLE(hercules, [ --disable-hercules disable hercules terminal support]) diff -Naur grub-0.97.orig/stage2/asm.S grub-0.97/stage2/asm.S --- grub-0.97.orig/stage2/asm.S 2004-06-19 13:55:22.000000000 -0300 +++ grub-0.97/stage2/asm.S 2005-06-13 14:05:31.000000000 -0300 @@ -2216,7 +2216,304 @@ pop %ebx pop %ebp ret - + + +/* graphics mode functions */ +#ifdef SUPPORT_GRAPHICS +VARIABLE(cursorX) +.word 0 +VARIABLE(cursorY) +.word 0 +VARIABLE(cursorCount) +.word 0 +VARIABLE(cursorBuf) +.byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + + +/* + * set_int1c_handler(void) + */ +ENTRY(set_int1c_handler) + pushl %edi + + /* save the original int1c handler */ + movl $0x70, %edi + movw (%edi), %ax + movw %ax, ABS(int1c_offset) + movw 2(%edi), %ax + movw %ax, ABS(int1c_segment) + + /* save the new int1c handler */ + movw $ABS(int1c_handler), %ax + movw %ax, (%edi) + xorw %ax, %ax + movw %ax, 2(%edi) + + popl %edi + ret + + +/* + * unset_int1c_handler(void) + */ +ENTRY(unset_int1c_handler) + pushl %edi + + /* check if int1c_handler is set */ + movl $0x70, %edi + movw $ABS(int1c_handler), %ax + cmpw %ax, (%edi) + jne int1c_1 + xorw %ax, %ax + cmpw %ax, 2(%edi) + jne int1c_1 + + /* restore the original */ + movw ABS(int1c_offset), %ax + movw %ax, (%edi) + movw ABS(int1c_segment), %ax + movw %ax, 2(%edi) + +int1c_1: + popl %edi + ret + + +/* + * blinks graphics cursor + */ + .code16 +write_data: + movw $0, %ax + movw %ax, %ds + + mov $0xA000, %ax /* video in es:di */ + mov %ax, %es + mov $80, %ax + movw $ABS(cursorY), %si + mov %ds:(%si), %bx + mul %bx + movw $ABS(cursorX), %si + mov %ds:(%si), %bx + shr $3, %bx /* %bx /= 8 */ + add %bx, %ax + mov %ax, %di + + movw $ABS(cursorBuf), %si /* fontBuf in ds:si */ + + /* prepare for data moving */ + mov $16, %dx /* altura da fonte */ + mov $80, %bx /* bytes por linha */ + +write_loop: + movb %ds:(%si), %al + xorb $0xff, %al + movb %al, %ds:(%si) /* invert cursorBuf */ + movb %al, %es:(%di) /* write to video */ + add %bx, %di + inc %si + dec %dx + jg write_loop + ret + +int1c_handler: + pusha + mov $0, %ax + mov %ax, %ds + mov $ABS(cursorCount), %si + mov %ds:(%si), %ax + inc %ax + mov %ax, %ds:(%si) + cmp $9, %ax + jne int1c_done + + mov $0, %ax + mov %ax, %ds:(%si) + call write_data + +int1c_done: + popa + iret + /* call previous int1c handler */ + /* ljmp */ + .byte 0xea +int1c_offset: .word 0 +int1c_segment: .word 0 + .code32 + + +/* + * unsigned char set_videomode(unsigned char mode) + * BIOS call "INT 10H Function 0h" to set video mode + * Call with %ah = 0x0 + * %al = video mode + * Returns old videomode. + */ +ENTRY(set_videomode) + pushl %ebp + movl %esp,%ebp + pushl %ebx + pushl %ecx + + movb 8(%ebp), %cl + + call EXT_C(prot_to_real) + .code16 + + xorb %al, %al + movb $0xf, %ah + int $0x10 /* Get Current Video mode */ + movb %al, %ch + xorb %ah, %ah + movb %cl, %al + int $0x10 /* Set Video mode */ + + DATA32 call EXT_C(real_to_prot) + .code32 + + xorl %eax, %eax + movb %ch, %al + + popl %ecx + popl %ebx + popl %ebp + ret + + +/* + * int get_videomode() + * BIOS call "INT 10H Function 0Fh" to get current video mode + * Call with %al = 0x0 + * %ah = 0xF + * Returns current videomode. + */ +ENTRY(get_videomode) + pushl %ebp + movl %esp,%ebp + pushl %ebx + pushl %ecx + + call EXT_C(prot_to_real) + .code16 + + xorb %al, %al + movb $0xF, %ah + int $0x10 /* Get Current Video mode */ + movb %al, %cl /* For now we only want display mode */ + + DATA32 call EXT_C(real_to_prot) + .code32 + + xorl %eax, %eax + movb %cl, %al + + popl %ecx + popl %ebx + popl %ebp + ret + + +/* + * unsigned char * graphics_get_font() + * BIOS call "INT 10H Function 11h" to set font + * Call with %ah = 0x11 + */ +ENTRY(graphics_get_font) + push %ebp + push %ebx + push %ecx + push %edx + + call EXT_C(prot_to_real) + .code16 + + movw $0x1130, %ax + movb $6, %bh /* font 8x16 */ + int $0x10 + movw %bp, %dx + movw %es, %cx + + DATA32 call EXT_C(real_to_prot) + .code32 + + xorl %eax, %eax + movw %cx, %ax + shll $4, %eax + movw %dx, %ax + + pop %edx + pop %ecx + pop %ebx + pop %ebp + ret + + +/* + * graphics_set_palette(index, red, green, blue) + * BIOS call "INT 10H Function 10h" to set individual dac register + * Call with %ah = 0x10 + * %bx = register number + * %ch = new value for green (0-63) + * %cl = new value for blue (0-63) + * %dh = new value for red (0-63) + */ + +ENTRY(graphics_set_palette) + push %ebp + push %eax + push %ebx + push %ecx + push %edx + + movw $0x3c8, %bx /* address write mode register */ + + /* wait vertical retrace */ + movw $0x3da, %dx +l1b: + inb %dx, %al /* wait vertical active display */ + test $8, %al + jnz l1b + +l2b: + inb %dx, %al /* wait vertical retrace */ + test $8, %al + jnz l2b + + mov %bx, %dx + movb 0x18(%esp), %al /* index */ + outb %al, %dx + inc %dx + + movb 0x1c(%esp), %al /* red */ + outb %al, %dx + + movb 0x20(%esp), %al /* green */ + outb %al, %dx + + movb 0x24(%esp), %al /* blue */ + outb %al, %dx + + movw 0x18(%esp), %bx + + call EXT_C(prot_to_real) + .code16 + + movb %bl, %bh + movw $0x1000, %ax + int $0x10 + + DATA32 call EXT_C(real_to_prot) + .code32 + + pop %edx + pop %ecx + pop %ebx + pop %eax + pop %ebp + ret +#endif /* SUPPORT_GRAPHICS */ + + /* * getrtsecs() * if a seconds value can be read, read it and return it (BCD), diff -Naur grub-0.97.orig/stage2/builtins.c grub-0.97/stage2/builtins.c --- grub-0.97.orig/stage2/builtins.c 2005-02-15 19:58:23.000000000 -0200 +++ grub-0.97/stage2/builtins.c 2005-06-13 18:44:03.000000000 -0300 @@ -28,6 +28,10 @@ #include #include +#ifdef SUPPORT_GRAPHICS +# include +#endif + #ifdef SUPPORT_NETBOOT # define GRUB 1 # include @@ -237,12 +241,22 @@ static int boot_func (char *arg, int flags) { + struct term_entry *prev_term = current_term; /* Clear the int15 handler if we can boot the kernel successfully. This assumes that the boot code never fails only if KERNEL_TYPE is not KERNEL_TYPE_NONE. Is this assumption is bad? */ if (kernel_type != KERNEL_TYPE_NONE) unset_int15_handler (); + /* if our terminal needed initialization, we should shut it down + * before booting the kernel, but we want to save what it was so + * we can come back if needed */ + if (current_term->shutdown) + { + current_term->shutdown(); + current_term = term_table; /* assumption: console is first */ + } + #ifdef SUPPORT_NETBOOT /* Shut down the networking. */ cleanup_net (); @@ -306,6 +320,13 @@ return 1; } + /* if we get back here, we should go back to what our term was before */ + current_term = prev_term; + if (current_term->startup) + /* if our terminal fails to initialize, fall back to console since + * it should always work */ + if (current_term->startup() == 0) + current_term = term_table; /* we know that console is first */ return 0; } @@ -852,6 +873,251 @@ }; #endif /* SUPPORT_NETBOOT */ +#ifdef SUPPORT_GRAPHICS + +static int splashimage_func(char *arg, int flags) { + int i; + + /* filename can only be 256 characters due to our buffer size */ + if (grub_strlen(arg) > 256) { + grub_printf("Splash image filename too large\n"); + grub_printf("Press any key to continue..."); + getkey(); + return 1; + } + + /* get rid of TERM_NEED_INIT from the graphics terminal. */ + for (i = 0; term_table[i].name; i++) { + if (grub_strcmp (term_table[i].name, "graphics") == 0) { + term_table[i].flags &= ~TERM_NEED_INIT; + break; + } + } + + graphics_set_splash(arg); + + if (flags == BUILTIN_CMDLINE && graphics_inited) { + graphics_end(); + if (graphics_init() == 0) { + /* Fallback to default term */ + current_term = term_table; + max_lines = current_term->max_lines; + if (current_term->cls) + current_term->cls(); + grub_printf("Failed to set splash image and/or graphics mode\n"); + return 1; + } + graphics_cls(); + } + + if (flags == BUILTIN_MENU) + current_term = term_table + i; + + return 0; +} + +static struct builtin builtin_splashimage = +{ + "splashimage", + splashimage_func, + BUILTIN_CMDLINE | BUILTIN_MENU | BUILTIN_HELP_LIST, + "splashimage FILE", + "Load FILE as the background image when in graphics mode." +}; + + +/* shade */ +static int +shade_func(char *arg, int flags) +{ + int new_shade; + + if (!arg || safe_parse_maxint(&arg, &new_shade) == 0) + return (1); + + if (shade != new_shade) { + shade = new_shade; + if (flags == BUILTIN_CMDLINE && graphics_inited) { + graphics_end(); + graphics_init(); + graphics_cls(); + } + } + + return 0; +} + +static struct builtin builtin_shade = +{ + "shade", + shade_func, + BUILTIN_CMDLINE | BUILTIN_MENU | BUILTIN_HELP_LIST, + "shade INTEGER", + "If set to 0, disables the use of shaded text, else enables it." +}; + + +/* foreground */ +static int +foreground_func(char *arg, int flags) +{ + if (grub_strlen(arg) == 6) { + int r = ((hex(arg[0]) << 4) | hex(arg[1])) >> 2; + int g = ((hex(arg[2]) << 4) | hex(arg[3])) >> 2; + int b = ((hex(arg[4]) << 4) | hex(arg[5])) >> 2; + + foreground = (r << 16) | (g << 8) | b; + if (graphics_inited) + graphics_set_palette(15, r, g, b); + + return 0; + } + + return 1; +} + +static struct builtin builtin_foreground = +{ + "foreground", + foreground_func, + BUILTIN_CMDLINE | BUILTIN_MENU | BUILTIN_HELP_LIST, + "foreground RRGGBB", + "Sets the foreground color when in graphics mode." + "RR is red, GG is green, and BB blue. Numbers must be in hexadecimal." +}; + + +/* background */ +static int +background_func(char *arg, int flags) +{ + if (grub_strlen(arg) == 6) { + int r = ((hex(arg[0]) << 4) | hex(arg[1])) >> 2; + int g = ((hex(arg[2]) << 4) | hex(arg[3])) >> 2; + int b = ((hex(arg[4]) << 4) | hex(arg[5])) >> 2; + + background = (r << 16) | (g << 8) | b; + if (graphics_inited) + graphics_set_palette(0, r, g, b); + return 0; + } + + return 1; +} + +static struct builtin builtin_background = +{ + "background", + background_func, + BUILTIN_CMDLINE | BUILTIN_MENU | BUILTIN_HELP_LIST, + "background RRGGBB", + "Sets the background color when in graphics mode." + "RR is red, GG is green, and BB blue. Numbers must be in hexadecimal." +}; + + +/* border */ +static int +border_func(char *arg, int flags) +{ + if (grub_strlen(arg) == 6) { + int r = ((hex(arg[0]) << 4) | hex(arg[1])) >> 2; + int g = ((hex(arg[2]) << 4) | hex(arg[3])) >> 2; + int b = ((hex(arg[4]) << 4) | hex(arg[5])) >> 2; + + window_border = (r << 16) | (g << 8) | b; + if (graphics_inited) + graphics_set_palette(0x11, r, g, b); + + return 0; + } + + return 1; +} + +static struct builtin builtin_border = +{ + "border", + border_func, + BUILTIN_CMDLINE | BUILTIN_MENU | BUILTIN_HELP_LIST, + "border RRGGBB", + "Sets the border video color when in graphics mode." + "RR is red, GG is green, and BB blue. Numbers must be in hexadecimal." +}; + + +/* viewport */ +static int +viewport_func (char *arg, int flags) +{ + int i; + int x0 = 0, y0 = 0, x1 = 80, y1 = 30; + int *pos[4] = { &x0, &y0, &x1, &y1 }; + + if (!arg) + return (1); + for (i = 0; i < 4; i++) { + if (!*arg) + return (1); + while (*arg && (*arg == ' ' || *arg == '\t')) + ++arg; + if (!safe_parse_maxint(&arg, pos[i])) + return (1); + while (*arg && (*arg != ' ' && *arg != '\t')) + ++arg; + } + + /* minimum size is 65 colums and 16 rows */ + if (x0 > x1 - 66 || y0 > y1 - 16 || x0 < 0 || y0 < 0 || x1 > 80 || y1 > 30) + return 1; + + view_x0 = x0; + view_y0 = y0; + view_x1 = x1; + view_y1 = y1; + + if (flags == BUILTIN_CMDLINE && graphics_inited) { + graphics_end(); + graphics_init(); + graphics_cls(); + } + + return 0; +} + +static struct builtin builtin_viewport = +{ + "viewport", + viewport_func, + BUILTIN_CMDLINE | BUILTIN_MENU | BUILTIN_HELP_LIST, + "viewport x0 y0 x1 y1", + "Changes grub internals to output text in the window defined by" + " four parameters. The x and y parameters are 0 based. This option" + " only works with the graphics interface." +}; + +#endif /* SUPPORT_GRAPHICS */ + + +/* clear */ +static int +clear_func() +{ + if (current_term->cls) + current_term->cls(); + + return 0; +} + +static struct builtin builtin_clear = +{ + "clear", + clear_func, + BUILTIN_CMDLINE | BUILTIN_HELP_LIST, + "clear", + "Clear the screen" +}; + /* displayapm */ static int @@ -1454,14 +1720,20 @@ /* help */ -#define MAX_SHORT_DOC_LEN 39 -#define MAX_LONG_DOC_LEN 66 - static int help_func (char *arg, int flags) { - int all = 0; - + int all = 0, max_short_doc_len, max_long_doc_len; + max_short_doc_len = 39; + max_long_doc_len = 66; +#ifdef SUPPORT_GRAPHICS + if (grub_memcmp (current_term->name, "graphics", sizeof ("graphics") - 1) == 0) + { + max_short_doc_len = (view_x1 - view_x0 + 1) / 2 - 1; + max_long_doc_len = (view_x1 - view_x0) - 14; + } +#endif + if (grub_memcmp (arg, "--all", sizeof ("--all") - 1) == 0) { all = 1; @@ -1491,13 +1763,13 @@ len = grub_strlen ((*builtin)->short_doc); /* If the length of SHORT_DOC is too long, truncate it. */ - if (len > MAX_SHORT_DOC_LEN - 1) - len = MAX_SHORT_DOC_LEN - 1; + if (len > max_short_doc_len - 1) + len = max_short_doc_len - 1; for (i = 0; i < len; i++) grub_putchar ((*builtin)->short_doc[i]); - for (; i < MAX_SHORT_DOC_LEN; i++) + for (; i < max_short_doc_len; i++) grub_putchar (' '); if (! left) @@ -1546,10 +1818,10 @@ int i; /* If LEN is too long, fold DOC. */ - if (len > MAX_LONG_DOC_LEN) + if (len > max_long_doc_len) { /* Fold this line at the position of a space. */ - for (len = MAX_LONG_DOC_LEN; len > 0; len--) + for (len = max_long_doc_len; len > 0; len--) if (doc[len - 1] == ' ') break; } @@ -4085,7 +4357,7 @@ }; -#if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES) +#if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES) || defined(SUPPORT_GRAPHICS) /* terminal */ static int terminal_func (char *arg, int flags) @@ -4244,17 +4516,29 @@ end: current_term = term_table + default_term; current_term->flags = term_flags; - + if (lines) max_lines = lines; else - /* 24 would be a good default value. */ - max_lines = 24; - + max_lines = current_term->max_lines; + /* If the interface is currently the command-line, restart it to repaint the screen. */ - if (current_term != prev_term && (flags & BUILTIN_CMDLINE)) + if ((current_term != prev_term) && (flags & BUILTIN_CMDLINE)){ + if (prev_term->shutdown) + prev_term->shutdown(); + if (current_term->startup) { + /* If startup fails, return to previous term */ + if (current_term->startup() == 0) { + current_term = prev_term; + max_lines = current_term->max_lines; + if (current_term->cls) { + current_term->cls(); + } + } + } grub_longjmp (restart_cmdline_env, 0); + } return 0; } @@ -4264,7 +4548,7 @@ "terminal", terminal_func, BUILTIN_MENU | BUILTIN_CMDLINE | BUILTIN_HELP_LIST, - "terminal [--dumb] [--no-echo] [--no-edit] [--timeout=SECS] [--lines=LINES] [--silent] [console] [serial] [hercules]", + "terminal [--dumb] [--no-echo] [--no-edit] [--timeout=SECS] [--lines=LINES] [--silent] [console] [serial] [hercules] [graphics]", "Select a terminal. When multiple terminals are specified, wait until" " you push any key to continue. If both console and serial are specified," " the terminal to which you input a key first will be selected. If no" @@ -4276,7 +4560,7 @@ " seconds. The option --lines specifies the maximum number of lines." " The option --silent is used to suppress messages." }; -#endif /* SUPPORT_SERIAL || SUPPORT_HERCULES */ +#endif /* SUPPORT_SERIAL || SUPPORT_HERCULES || SUPPORT_GRAPHICS */ #ifdef SUPPORT_SERIAL @@ -4795,13 +5079,20 @@ /* The table of builtin commands. Sorted in dictionary order. */ struct builtin *builtin_table[] = { +#ifdef SUPPORT_GRAPHICS + &builtin_background, +#endif &builtin_blocklist, &builtin_boot, #ifdef SUPPORT_NETBOOT &builtin_bootp, #endif /* SUPPORT_NETBOOT */ +#ifdef SUPPORT_GRAPHICS + &builtin_border, +#endif &builtin_cat, &builtin_chainloader, + &builtin_clear, &builtin_cmp, &builtin_color, &builtin_configfile, @@ -4821,6 +5112,9 @@ &builtin_embed, &builtin_fallback, &builtin_find, +#ifdef SUPPORT_GRAPHICS + &builtin_foreground, +#endif &builtin_fstest, &builtin_geometry, &builtin_halt, @@ -4864,9 +5158,13 @@ #endif /* SUPPORT_SERIAL */ &builtin_setkey, &builtin_setup, -#if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES) +#ifdef SUPPORT_GRAPHICS + &builtin_shade, + &builtin_splashimage, +#endif /* SUPPORT_GRAPHICS */ +#if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES) || defined(SUPPORT_GRAPHICS) &builtin_terminal, -#endif /* SUPPORT_SERIAL || SUPPORT_HERCULES */ +#endif /* SUPPORT_SERIAL || SUPPORT_HERCULES || SUPPORT_GRAPHICS */ #ifdef SUPPORT_SERIAL &builtin_terminfo, #endif /* SUPPORT_SERIAL */ @@ -4880,5 +5178,8 @@ &builtin_unhide, &builtin_uppermem, &builtin_vbeprobe, +#ifdef SUPPORT_GRAPHICS + &builtin_viewport, +#endif 0 }; diff -Naur grub-0.97.orig/stage2/char_io.c grub-0.97/stage2/char_io.c --- grub-0.97.orig/stage2/char_io.c 2005-02-01 18:51:23.000000000 -0200 +++ grub-0.97/stage2/char_io.c 2005-06-12 20:56:49.000000000 -0300 @@ -29,12 +29,17 @@ # include #endif +#ifdef SUPPORT_GRAPHICS +# include +#endif + #ifndef STAGE1_5 struct term_entry term_table[] = { { "console", 0, + 24, console_putchar, console_checkkey, console_getkey, @@ -43,13 +48,16 @@ console_cls, console_setcolorstate, console_setcolor, - console_setcursor + console_setcursor, + 0, + 0 }, #ifdef SUPPORT_SERIAL { "serial", /* A serial device must be initialized. */ TERM_NEED_INIT, + 24, serial_putchar, serial_checkkey, serial_getkey, @@ -58,6 +66,8 @@ serial_cls, serial_setcolorstate, 0, + 0, + 0, 0 }, #endif /* SUPPORT_SERIAL */ @@ -65,6 +75,7 @@ { "hercules", 0, + 24, hercules_putchar, console_checkkey, console_getkey, @@ -73,11 +84,30 @@ hercules_cls, hercules_setcolorstate, hercules_setcolor, - hercules_setcursor + hercules_setcursor, + 0, + 0 }, #endif /* SUPPORT_HERCULES */ +#ifdef SUPPORT_GRAPHICS + { "graphics", + TERM_NEED_INIT, /* flags */ + 30, /* number of lines */ + graphics_putchar, /* putchar */ + console_checkkey, /* checkkey */ + console_getkey, /* getkey */ + graphics_getxy, /* getxy */ + graphics_gotoxy, /* gotoxy */ + graphics_cls, /* cls */ + graphics_setcolorstate, /* setcolorstate */ + graphics_setcolor, /* setcolor */ + graphics_setcursor, /* nocursor */ + graphics_init, /* initialize */ + graphics_end /* shutdown */ + }, +#endif /* SUPPORT_GRAPHICS */ /* This must be the last entry. */ - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* This must be console. */ @@ -305,9 +335,10 @@ /* XXX: These should be defined in shared.h, but I leave these here, until this code is freezed. */ -#define CMDLINE_WIDTH 78 #define CMDLINE_MARGIN 10 - + + /* command-line limits */ + int cmdline_width = 78, col_start = 0; int xpos, lpos, c, section; /* The length of PROMPT. */ int plen; @@ -338,7 +369,7 @@ /* If the cursor is in the first section, display the first section instead of the second. */ - if (section == 1 && plen + lpos < CMDLINE_WIDTH) + if (section == 1 && plen + lpos < cmdline_width) cl_refresh (1, 0); else if (xpos - count < 1) cl_refresh (1, 0); @@ -354,7 +385,7 @@ grub_putchar ('\b'); } else - gotoxy (xpos, getxy () & 0xFF); + gotoxy (xpos + col_start, getxy () & 0xFF); } } @@ -364,7 +395,7 @@ lpos += count; /* If the cursor goes outside, scroll the screen to the right. */ - if (xpos + count >= CMDLINE_WIDTH) + if (xpos + count >= cmdline_width) cl_refresh (1, 0); else { @@ -383,7 +414,7 @@ } } else - gotoxy (xpos, getxy () & 0xFF); + gotoxy (xpos + col_start, getxy () & 0xFF); } } @@ -398,14 +429,14 @@ if (full) { /* Recompute the section number. */ - if (lpos + plen < CMDLINE_WIDTH) + if (lpos + plen < cmdline_width) section = 0; else - section = ((lpos + plen - CMDLINE_WIDTH) - / (CMDLINE_WIDTH - 1 - CMDLINE_MARGIN) + 1); + section = ((lpos + plen - cmdline_width) + / (cmdline_width - 1 - CMDLINE_MARGIN) + 1); /* From the start to the end. */ - len = CMDLINE_WIDTH; + len = cmdline_width; pos = 0; grub_putchar ('\r'); @@ -445,8 +476,8 @@ if (! full) offset = xpos - 1; - start = ((section - 1) * (CMDLINE_WIDTH - 1 - CMDLINE_MARGIN) - + CMDLINE_WIDTH - plen - CMDLINE_MARGIN); + start = ((section - 1) * (cmdline_width - 1 - CMDLINE_MARGIN) + + cmdline_width - plen - CMDLINE_MARGIN); xpos = lpos + 1 - start; start += offset; } @@ -471,7 +502,7 @@ /* If the cursor is at the last position, put `>' or a space, depending on if there are more characters in BUF. */ - if (pos == CMDLINE_WIDTH) + if (pos == cmdline_width) { if (start + len < llen) grub_putchar ('>'); @@ -488,7 +519,7 @@ grub_putchar ('\b'); } else - gotoxy (xpos, getxy () & 0xFF); + gotoxy (xpos + col_start, getxy () & 0xFF); } /* Initialize the command-line. */ @@ -518,10 +549,10 @@ llen += l; lpos += l; - if (xpos + l >= CMDLINE_WIDTH) + if (xpos + l >= cmdline_width) cl_refresh (1, 0); - else if (xpos + l + llen - lpos > CMDLINE_WIDTH) - cl_refresh (0, CMDLINE_WIDTH - xpos); + else if (xpos + l + llen - lpos > cmdline_width) + cl_refresh (0, cmdline_width - xpos); else cl_refresh (0, l + llen - lpos); } @@ -533,12 +564,22 @@ grub_memmove (buf + lpos, buf + lpos + count, llen - count + 1); llen -= count; - if (xpos + llen + count - lpos > CMDLINE_WIDTH) - cl_refresh (0, CMDLINE_WIDTH - xpos); + if (xpos + llen + count - lpos > cmdline_width) + cl_refresh (0, cmdline_width - xpos); else cl_refresh (0, llen + count - lpos); } + max_lines = current_term->max_lines; +#ifdef SUPPORT_GRAPHICS + if (grub_memcmp (current_term->name, "graphics", sizeof ("graphics") - 1) == 0) + { + cmdline_width = (view_x1 - view_x0) - 2; + col_start = view_x0; + max_lines = view_y1 - view_y0; + } +#endif + plen = grub_strlen (prompt); llen = grub_strlen (cmdline); @@ -1006,6 +1047,48 @@ } #endif /* ! STAGE1_5 */ +#ifndef STAGE1_5 +/* Internal pager. */ +int +do_more (void) +{ + if (count_lines >= 0) + { + count_lines++; + if (count_lines >= max_lines - 2) + { + int tmp; + + /* It's important to disable the feature temporarily, because + the following grub_printf call will print newlines. */ + count_lines = -1; + + grub_printf("\n"); + if (current_term->setcolorstate) + current_term->setcolorstate (COLOR_STATE_HIGHLIGHT); + + grub_printf ("[Hit return to continue]"); + + if (current_term->setcolorstate) + current_term->setcolorstate (COLOR_STATE_NORMAL); + + + do + { + tmp = ASCII_CHAR (getkey ()); + } + while (tmp != '\n' && tmp != '\r'); + grub_printf ("\r \r"); + + /* Restart to count lines. */ + count_lines = 0; + return 1; + } + } + return 0; +} +#endif + /* Display an ASCII character. */ void grub_putchar (int c) @@ -1034,38 +1117,11 @@ if (c == '\n') { + int flag; /* Internal `more'-like feature. */ - if (count_lines >= 0) - { - count_lines++; - if (count_lines >= max_lines - 2) - { - int tmp; - - /* It's important to disable the feature temporarily, because - the following grub_printf call will print newlines. */ - count_lines = -1; - - if (current_term->setcolorstate) - current_term->setcolorstate (COLOR_STATE_HIGHLIGHT); - - grub_printf ("\n[Hit return to continue]"); - - if (current_term->setcolorstate) - current_term->setcolorstate (COLOR_STATE_NORMAL); - - do - { - tmp = ASCII_CHAR (getkey ()); - } - while (tmp != '\n' && tmp != '\r'); - grub_printf ("\r \r"); - - /* Restart to count lines. */ - count_lines = 0; - return; - } - } + flag = do_more (); + if (flag) + return; } current_term->putchar (c); @@ -1090,7 +1146,7 @@ cls (void) { /* If the terminal is dumb, there is no way to clean the terminal. */ - if (current_term->flags & TERM_DUMB) + if (current_term->flags & TERM_DUMB) grub_putchar ('\n'); else current_term->cls (); @@ -1217,6 +1273,16 @@ return ! errnum; } +void +grub_memcpy(void *dest, const void *src, int len) +{ + int i; + register char *d = (char*)dest, *s = (char*)src; + + for (i = 0; i < len; i++) + d[i] = s[i]; +} + void * grub_memmove (void *to, const void *from, int len) { diff -Naur grub-0.97.orig/stage2/cmdline.c grub-0.97/stage2/cmdline.c --- grub-0.97.orig/stage2/cmdline.c 2004-08-16 20:23:01.000000000 -0300 +++ grub-0.97/stage2/cmdline.c 2005-06-12 20:56:49.000000000 -0300 @@ -50,10 +50,11 @@ void print_cmdline_message (int forever) { - printf (" [ Minimal BASH-like line editing is supported. For the first word, TAB\n" - " lists possible command completions. Anywhere else TAB lists the possible\n" - " completions of a device/filename.%s ]\n", - (forever ? "" : " ESC at any time exits.")); + grub_printf(" [ Minimal BASH-like line editing is supported. For\n" + " the first word, TAB lists possible command\n" + " completions. Anywhere else TAB lists the possible\n" + " completions of a device/filename.%s ]\n", + (forever ? "" : " ESC at any time\n exits.")); } /* Find the builtin whose command name is COMMAND and return the diff -Naur grub-0.97.orig/stage2/graphics.c grub-0.97/stage2/graphics.c --- grub-0.97.orig/stage2/graphics.c 1969-12-31 21:00:00.000000000 -0300 +++ grub-0.97/stage2/graphics.c 2005-06-13 19:13:31.000000000 -0300 @@ -0,0 +1,585 @@ +/* + * graphics.c - graphics mode support for GRUB + * Implemented as a terminal type by Jeremy Katz based + * on a patch by Paulo César Pereira de Andrade + * Options and enhancements made by Herton Ronaldo Krzesinski + * + * + * GRUB -- GRand Unified Bootloader + * Copyright (C) 2001,2002 Red Hat, Inc. + * Portions copyright (C) 2000 Conectiva, Inc. + * + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifdef SUPPORT_GRAPHICS + +#include +#include +#include + +int saved_videomode; +unsigned char *font8x16; + +int graphics_inited = 0; +static char splashimage[256]; + +int shade = 1, no_cursor = 0; + +#define VSHADOW VSHADOW1 +unsigned char VSHADOW1[38400]; +unsigned char VSHADOW2[38400]; +unsigned char VSHADOW4[38400]; +unsigned char VSHADOW8[38400]; + +/* define the default viewable area */ +int view_x0 = 0; +int view_y0 = 0; +int view_x1 = 80; +int view_y1 = 30; + +/* text buffer has to be kept around so that we can write things as we + * scroll and the like */ +unsigned short text[80 * 30]; + +/* graphics options */ +int foreground = (63 << 16) | (63 << 8) | (63), background = 0, window_border = 0; + +/* current position */ +static int fontx = 0; +static int fonty = 0; + +/* global state so that we don't try to recursively scroll or cursor */ +static int no_scroll = 0; + +/* color state */ +static int graphics_standard_color = A_NORMAL; +static int graphics_normal_color = A_NORMAL; +static int graphics_highlight_color = A_REVERSE; +static int graphics_current_color = A_NORMAL; +static color_state graphics_color_state = COLOR_STATE_STANDARD; + +static inline void outb(unsigned short port, unsigned char val) +{ + __asm __volatile ("outb %0,%1"::"a" (val), "d" (port)); +} + +static void MapMask(int value) { + outb(0x3c4, 2); + outb(0x3c5, value); +} + +/* bit mask register */ +static void BitMask(int value) { + outb(0x3ce, 8); + outb(0x3cf, value); +} + +/* move the graphics cursor location to col, row */ +static void graphics_setxy(int col, int row) { + if (col >= view_x0 && col < view_x1) { + fontx = col; + cursorX = col << 3; + } + if (row >= view_y0 && row < view_y1) { + fonty = row; + cursorY = row << 4; + } +} + +/* scroll the screen */ +static void graphics_scroll() { + int i, j, k; + + /* we don't want to scroll recursively... that would be bad */ + if (no_scroll) + return; + no_scroll = 1; + + /* disable pager temporarily */ + k = count_lines; + count_lines = -1; + + /* move everything up a line */ + for (j = view_y0 + 1; j < view_y1; j++) { + graphics_gotoxy(view_x0, j - 1); + for (i = view_x0; i < view_x1; i++) { + graphics_putchar(text[j * 80 + i]); + } + } + + /* last line should be blank */ + graphics_gotoxy(view_x0, view_y1 - 1); + for (i = view_x0; i < view_x1; i++) + graphics_putchar(' '); + graphics_setxy(view_x0, view_y1 - 1); + + count_lines = k; + + no_scroll = 0; +} + +/* Set the splash image */ +void graphics_set_splash(char *splashfile) { + grub_strcpy(splashimage, splashfile); +} + +/* Get the current splash image */ +char *graphics_get_splash(void) { + return splashimage; +} + +/* + * Initialize a vga16 graphics display with the palette based off of + * the image in splashimage. If the image doesn't exist, leave graphics + * mode. The mode initiated is 12h. From "Ralf Brown's Interrupt List": + * text/ text pixel pixel colors disply scrn system + * grph resol box resolution pages addr + * 12h G 80x30 8x16 640x480 16/256K . A000 VGA,ATI VIP + * G 80x30 8x16 640x480 16/64 . A000 ATI EGA Wonder + * G . . 640x480 16 . . UltraVision+256K EGA + */ +int graphics_init() +{ + if (!graphics_inited) { + saved_videomode = set_videomode(0x12); + if (get_videomode() != 0x12) { + set_videomode(saved_videomode); + return 0; + } + graphics_inited = 1; + } + else + return 1; + + font8x16 = (unsigned char*)graphics_get_font(); + + /* make sure that the highlight color is set correctly */ + graphics_highlight_color = ((graphics_normal_color >> 4) | + ((graphics_normal_color & 0xf) << 4)); + + graphics_cls(); + + if (!read_image(splashimage)) { + grub_printf("Failed to read splash image (%s)\n", splashimage); + grub_printf("Press any key to continue..."); + getkey(); + set_videomode(saved_videomode); + graphics_inited = 0; + return 0; + } + + set_int1c_handler(); + + return 1; +} + +/* Leave graphics mode */ +void graphics_end(void) +{ + if (graphics_inited) { + unset_int1c_handler(); + set_videomode(saved_videomode); + graphics_inited = 0; + no_cursor = 0; + } +} + +/* Print ch on the screen. Handle any needed scrolling or the like */ +void graphics_putchar(int ch) { + ch &= 0xff; + + graphics_cursor(0); + + if (ch == '\n') { + if (fonty + 1 < view_y1) + graphics_setxy(fontx, fonty + 1); + else + graphics_scroll(); + graphics_cursor(1); + return; + } else if (ch == '\r') { + graphics_setxy(view_x0, fonty); + graphics_cursor(1); + return; + } + + graphics_cursor(0); + + text[fonty * 80 + fontx] = ch; + text[fonty * 80 + fontx] &= 0x00ff; + if (graphics_current_color & 0xf0) + text[fonty * 80 + fontx] |= 0x100; + + graphics_cursor(0); + + if ((fontx + 1) >= view_x1) { + graphics_setxy(view_x0, fonty); + if (fonty + 1 < view_y1) + graphics_setxy(view_x0, fonty + 1); + else + graphics_scroll(); + graphics_cursor(1); + do_more (); + graphics_cursor(0); + } else { + graphics_setxy(fontx + 1, fonty); + } + + graphics_cursor(1); +} + +/* get the current location of the cursor */ +int graphics_getxy(void) { + return (fontx << 8) | fonty; +} + +void graphics_gotoxy(int x, int y) { + graphics_cursor(0); + + graphics_setxy(x, y); + + graphics_cursor(1); +} + +void graphics_cls(void) { + int i; + unsigned char *mem, *s1, *s2, *s4, *s8; + + graphics_cursor(0); + graphics_gotoxy(view_x0, view_y0); + + mem = (unsigned char*)VIDEOMEM; + s1 = (unsigned char*)VSHADOW1; + s2 = (unsigned char*)VSHADOW2; + s4 = (unsigned char*)VSHADOW4; + s8 = (unsigned char*)VSHADOW8; + + for (i = 0; i < 80 * 30; i++) + text[i] = ' '; + graphics_cursor(1); + + BitMask(0xff); + + /* plane 1 */ + MapMask(1); + grub_memcpy(mem, s1, 38400); + + /* plane 2 */ + MapMask(2); + grub_memcpy(mem, s2, 38400); + + /* plane 3 */ + MapMask(4); + grub_memcpy(mem, s4, 38400); + + /* plane 4 */ + MapMask(8); + grub_memcpy(mem, s8, 38400); + + MapMask(15); + + if (no_cursor) { + no_cursor = 0; + set_int1c_handler(); + } +} + +void graphics_setcolorstate (color_state state) { + switch (state) { + case COLOR_STATE_STANDARD: + graphics_current_color = graphics_standard_color; + break; + case COLOR_STATE_NORMAL: + graphics_current_color = graphics_normal_color; + break; + case COLOR_STATE_HIGHLIGHT: + graphics_current_color = graphics_highlight_color; + break; + default: + graphics_current_color = graphics_standard_color; + break; + } + + graphics_color_state = state; +} + +void graphics_setcolor (int normal_color, int highlight_color) { + graphics_normal_color = normal_color; + graphics_highlight_color = highlight_color; + + graphics_setcolorstate (graphics_color_state); +} + +int graphics_setcursor (int on) { + if (!no_cursor && !on) { + no_cursor = 1; + unset_int1c_handler(); + graphics_cursor(0); + } + else if(no_cursor && on) { + no_cursor = 0; + set_int1c_handler(); + graphics_cursor(1); + } + return 0; +} + +/* Read in the splashscreen image and set the palette up appropriately. + * Format of splashscreen is an xpm (can be gzipped) with 16 colors and + * 640x480. */ +int read_image(char *s) +{ + char buf[32], pal[16], c; + unsigned char base, mask, *s1, *s2, *s4, *s8; + unsigned i, len, idx, colors, x, y, width, height; + + if (!grub_open(s)) + return 0; + + /* read header */ + if (!grub_read((char*)&buf, 10) || grub_memcmp(buf, "/* XPM */\n", 10)) { + grub_close(); + return 0; + } + + /* parse info */ + while (grub_read(&c, 1)) { + if (c == '"') + break; + } + + while (grub_read(&c, 1) && (c == ' ' || c == '\t')) + ; + + i = 0; + width = c - '0'; + while (grub_read(&c, 1)) { + if (c >= '0' && c <= '9') + width = width * 10 + c - '0'; + else + break; + } + while (grub_read(&c, 1) && (c == ' ' || c == '\t')) + ; + + height = c - '0'; + while (grub_read(&c, 1)) { + if (c >= '0' && c <= '9') + height = height * 10 + c - '0'; + else + break; + } + while (grub_read(&c, 1) && (c == ' ' || c == '\t')) + ; + + colors = c - '0'; + while (grub_read(&c, 1)) { + if (c >= '0' && c <= '9') + colors = colors * 10 + c - '0'; + else + break; + } + + base = 0; + while (grub_read(&c, 1) && c != '"') + ; + + /* palette */ + for (i = 0, idx = 1; i < colors; i++) { + len = 0; + + while (grub_read(&c, 1) && c != '"') + ; + grub_read(&c, 1); /* char */ + base = c; + grub_read(buf, 4); /* \t c # */ + + while (grub_read(&c, 1) && c != '"') { + if (len < sizeof(buf)) + buf[len++] = c; + } + + if (len == 6 && idx < 15) { + int r = ((hex(buf[0]) << 4) | hex(buf[1])) >> 2; + int g = ((hex(buf[2]) << 4) | hex(buf[3])) >> 2; + int b = ((hex(buf[4]) << 4) | hex(buf[5])) >> 2; + + pal[idx] = base; + graphics_set_palette(idx, r, g, b); + ++idx; + } + } + + x = y = len = 0; + + s1 = (unsigned char*)VSHADOW1; + s2 = (unsigned char*)VSHADOW2; + s4 = (unsigned char*)VSHADOW4; + s8 = (unsigned char*)VSHADOW8; + + for (i = 0; i < 38400; i++) + s1[i] = s2[i] = s4[i] = s8[i] = 0; + + /* parse xpm data */ + while (y < height) { + while (1) { + if (!grub_read(&c, 1)) { + grub_close(); + return 0; + } + if (c == '"') + break; + } + + while (grub_read(&c, 1) && c != '"') { + for (i = 1; i < 15; i++) + if (pal[i] == c) { + c = i; + break; + } + + mask = 0x80 >> (x & 7); + if (c & 1) + s1[len + (x >> 3)] |= mask; + if (c & 2) + s2[len + (x >> 3)] |= mask; + if (c & 4) + s4[len + (x >> 3)] |= mask; + if (c & 8) + s8[len + (x >> 3)] |= mask; + + if (++x >= 640) { + x = 0; + + if (y < 480) + len += 80; + ++y; + } + } + } + + grub_close(); + + graphics_set_palette(0, (background >> 16), (background >> 8) & 63, + background & 63); + graphics_set_palette(15, (foreground >> 16), (foreground >> 8) & 63, + foreground & 63); + graphics_set_palette(0x11, (window_border >> 16), (window_border >> 8) & 63, + window_border & 63); + + return 1; +} + +/* Convert a character which is a hex digit to the appropriate integer */ +int hex(int v) +{ + if (v >= 'A' && v <= 'F') + return (v - 'A' + 10); + if (v >= 'a' && v <= 'f') + return (v - 'a' + 10); + return (v - '0'); +} + +void graphics_cursor(int set) { + unsigned char *pat, *mem, *ptr, chr[16 << 2]; + int i, ch, invert, offset; + + if (set && (no_cursor || no_scroll)) + return; + + offset = cursorY * 80 + fontx; + ch = text[fonty * 80 + fontx] & 0xff; + invert = (text[fonty * 80 + fontx] & 0xff00) != 0; + pat = font8x16 + (ch << 4); + + mem = (unsigned char*)VIDEOMEM + offset; + + if (!set) { + for (i = 0; i < 16; i++) { + unsigned char mask = pat[i]; + + if (!invert) { + chr[i ] = ((unsigned char*)VSHADOW1)[offset]; + chr[16 + i] = ((unsigned char*)VSHADOW2)[offset]; + chr[32 + i] = ((unsigned char*)VSHADOW4)[offset]; + chr[48 + i] = ((unsigned char*)VSHADOW8)[offset]; + + if (shade) { + if (ch == DISP_VERT || ch == DISP_LL || + ch == DISP_UR || ch == DISP_LR) { + unsigned char pmask = ~(pat[i] >> 1); + + chr[i ] &= pmask; + chr[16 + i] &= pmask; + chr[32 + i] &= pmask; + chr[48 + i] &= pmask; + } + if (i > 0 && ch != DISP_VERT) { + unsigned char pmask = ~(pat[i - 1] >> 1); + + chr[i ] &= pmask; + chr[16 + i] &= pmask; + chr[32 + i] &= pmask; + chr[48 + i] &= pmask; + if (ch == DISP_HORIZ || ch == DISP_UR || ch == DISP_LR) { + pmask = ~pat[i - 1]; + + chr[i ] &= pmask; + chr[16 + i] &= pmask; + chr[32 + i] &= pmask; + chr[48 + i] &= pmask; + } + } + } + chr[i ] |= mask; + chr[16 + i] |= mask; + chr[32 + i] |= mask; + chr[48 + i] |= mask; + + offset += 80; + } + else { + chr[i ] = mask; + chr[16 + i] = mask; + chr[32 + i] = mask; + chr[48 + i] = mask; + } + } + } + else { + MapMask(15); + ptr = mem; + for (i = 0; i < 16; i++, ptr += 80) { + cursorBuf[i] = pat[i]; + *ptr = ~pat[i]; + } + return; + } + + offset = 0; + for (i = 1; i < 16; i <<= 1, offset += 16) { + int j; + + MapMask(i); + ptr = mem; + for (j = 0; j < 16; j++, ptr += 80) + *ptr = chr[j + offset]; + } + + MapMask(15); +} + +#endif /* SUPPORT_GRAPHICS */ diff -Naur grub-0.97.orig/stage2/graphics.h grub-0.97/stage2/graphics.h --- grub-0.97.orig/stage2/graphics.h 1969-12-31 21:00:00.000000000 -0300 +++ grub-0.97/stage2/graphics.h 2005-06-12 20:56:49.000000000 -0300 @@ -0,0 +1,44 @@ +/* graphics.h - graphics console interface */ +/* + * GRUB -- GRand Unified Bootloader + * Copyright (C) 2002 Free Software Foundation, Inc. + * + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef GRAPHICS_H +#define GRAPHICS_H + +/* magic constant */ +#define VIDEOMEM 0xA0000 + +/* function prototypes */ +char *graphics_get_splash(void); + +int read_image(char *s); +void graphics_cursor(int set); + +/* function prototypes for asm functions */ +void * graphics_get_font(); +void graphics_set_palette(int idx, int red, int green, int blue); +void set_int1c_handler(); +void unset_int1c_handler(); + +extern short cursorX, cursorY; +extern char cursorBuf[16]; +extern int shade; +extern int view_x0, view_y0, view_x1, view_y1; + +#endif /* GRAPHICS_H */ diff -Naur grub-0.97.orig/stage2/Makefile.am grub-0.97/stage2/Makefile.am --- grub-0.97.orig/stage2/Makefile.am 2005-02-02 18:37:35.000000000 -0200 +++ grub-0.97/stage2/Makefile.am 2005-06-12 20:56:49.000000000 -0300 @@ -7,7 +7,7 @@ fat.h filesys.h freebsd.h fs.h hercules.h i386-elf.h \ imgact_aout.h iso9660.h jfs.h mb_header.h mb_info.h md5.h \ nbi.h pc_slice.h serial.h shared.h smp-imps.h term.h \ - terminfo.h tparm.h nbi.h ufs2.h vstafs.h xfs.h + terminfo.h tparm.h nbi.h ufs2.h vstafs.h xfs.h graphics.h EXTRA_DIST = setjmp.S apm.S $(noinst_SCRIPTS) # For . @@ -19,7 +19,7 @@ disk_io.c fsys_ext2fs.c fsys_fat.c fsys_ffs.c fsys_iso9660.c \ fsys_jfs.c fsys_minix.c fsys_reiserfs.c fsys_ufs2.c \ fsys_vstafs.c fsys_xfs.c gunzip.c md5.c serial.c stage2.c \ - terminfo.c tparm.c + terminfo.c tparm.c graphics.c libgrub_a_CFLAGS = $(GRUB_CFLAGS) -I$(top_srcdir)/lib \ -DGRUB_UTIL=1 -DFSYS_EXT2FS=1 -DFSYS_FAT=1 -DFSYS_FFS=1 \ -DFSYS_ISO9660=1 -DFSYS_JFS=1 -DFSYS_MINIX=1 -DFSYS_REISERFS=1 \ @@ -79,8 +79,14 @@ HERCULES_FLAGS = endif +if GRAPHICS_SUPPORT +GRAPHICS_FLAGS = -DSUPPORT_GRAPHICS=1 +else +GRAPHICS_FLAGS = +endif + STAGE2_COMPILE = $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ - $(NETBOOT_FLAGS) $(SERIAL_FLAGS) $(HERCULES_FLAGS) + $(NETBOOT_FLAGS) $(SERIAL_FLAGS) $(HERCULES_FLAGS) $(GRAPHICS_FLAGS) STAGE1_5_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,2000 STAGE1_5_COMPILE = $(STAGE2_COMPILE) -DNO_DECOMPRESSION=1 -DSTAGE1_5=1 @@ -90,7 +96,8 @@ cmdline.c common.c console.c disk_io.c fsys_ext2fs.c \ fsys_fat.c fsys_ffs.c fsys_iso9660.c fsys_jfs.c fsys_minix.c \ fsys_reiserfs.c fsys_ufs2.c fsys_vstafs.c fsys_xfs.c gunzip.c \ - hercules.c md5.c serial.c smp-imps.c stage2.c terminfo.c tparm.c + hercules.c md5.c serial.c smp-imps.c stage2.c terminfo.c tparm.c \ + graphics.c pre_stage2_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) pre_stage2_exec_CCASFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) pre_stage2_exec_LDFLAGS = $(PRE_STAGE2_LINK) diff -Naur grub-0.97.orig/stage2/shared.h grub-0.97/stage2/shared.h --- grub-0.97.orig/stage2/shared.h 2004-06-19 13:40:09.000000000 -0300 +++ grub-0.97/stage2/shared.h 2005-06-12 20:56:49.000000000 -0300 @@ -792,6 +792,11 @@ /* Set the cursor position. */ void gotoxy (int x, int y); +/* Internal pager + Returns 1 = if pager was used + 0 = if pager wasn't used */ +int do_more (void); + /* Displays an ASCII character. IBM displays will translate some characters to special graphical ones (see the DISP_* constants). */ void grub_putchar (int c); @@ -871,6 +876,7 @@ int grub_tolower (int c); int grub_isspace (int c); int grub_strncat (char *s1, const char *s2, int n); +void grub_memcpy(void *dest, const void *src, int len); void *grub_memmove (void *to, const void *from, int len); void *grub_memset (void *start, int c, int len); int grub_strncat (char *s1, const char *s2, int n); diff -Naur grub-0.97.orig/stage2/stage2.c grub-0.97/stage2/stage2.c --- grub-0.97.orig/stage2/stage2.c 2005-03-19 14:51:57.000000000 -0300 +++ grub-0.97/stage2/stage2.c 2005-06-13 22:38:08.000000000 -0300 @@ -20,6 +20,12 @@ #include #include +#ifdef SUPPORT_GRAPHICS +# include +#endif + +int col_start, col_end, row_start, box_size; + grub_jmp_buf restart_env; #if defined(PRESET_MENU_STRING) || defined(SUPPORT_DISKLESS) @@ -105,13 +111,13 @@ if (highlight && current_term->setcolorstate) current_term->setcolorstate (COLOR_STATE_HIGHLIGHT); - gotoxy (2, y); + gotoxy (2 + col_start, y); grub_putchar (' '); - for (x = 3; x < 75; x++) + for (x = 3 + col_start; x < (col_end - 5); x++) { - if (*entry && x <= 72) + if (*entry && x <= (col_end - 8)) { - if (x == 72) + if (x == (col_end - 8)) grub_putchar (DISP_RIGHT); else grub_putchar (*entry++); @@ -119,7 +125,7 @@ else grub_putchar (' '); } - gotoxy (74, y); + gotoxy ((col_end - 6), y); if (current_term->setcolorstate) current_term->setcolorstate (COLOR_STATE_STANDARD); @@ -131,7 +137,7 @@ { int i; - gotoxy (77, y + 1); + gotoxy ((col_end - 3), y + 1); if (first) grub_putchar (DISP_UP); @@ -151,14 +157,14 @@ menu_entries++; } - gotoxy (77, y + size); + gotoxy ((col_end - 3), y + size); if (*menu_entries) grub_putchar (DISP_DOWN); else grub_putchar (' '); - gotoxy (74, y + entryno + 1); + gotoxy ((col_end - 6), y + entryno + 1); } static void @@ -196,30 +202,30 @@ if (current_term->setcolorstate) current_term->setcolorstate (COLOR_STATE_NORMAL); - gotoxy (1, y); + gotoxy (1 + col_start, y); grub_putchar (DISP_UL); - for (i = 0; i < 73; i++) + for (i = col_start; i < (col_end - 7); i++) grub_putchar (DISP_HORIZ); grub_putchar (DISP_UR); i = 1; while (1) { - gotoxy (1, y + i); + gotoxy (1 + col_start, y + i); if (i > size) break; grub_putchar (DISP_VERT); - gotoxy (75, y + i); + gotoxy ((col_end - 5), y + i); grub_putchar (DISP_VERT); i++; } grub_putchar (DISP_LL); - for (i = 0; i < 73; i++) + for (i = col_start; i < (col_end - 7); i++) grub_putchar (DISP_HORIZ); grub_putchar (DISP_LR); @@ -233,6 +239,7 @@ { int c, time1, time2 = -1, first_entry = 0; char *cur_entry = 0; + struct term_entry *prev_term = NULL; /* * Main loop for menu UI. @@ -250,6 +257,22 @@ } } + col_start = 0; + col_end = 80; + row_start = 0; + box_size = 12; + /* if we're using viewport we need to make sure to setup + coordinates correctly. */ +#ifdef SUPPORT_GRAPHICS + if (grub_memcmp (current_term->name, "graphics", sizeof ("graphics") - 1) == 0) + { + col_start = view_x0; + col_end = view_x1; + row_start = view_y0; + box_size = (view_y1 - view_y0) - 13; + } +#endif + /* If the timeout was expired or wasn't set, force to show the menu interface. */ if (grub_timeout < 0) @@ -302,36 +325,36 @@ if (current_term->flags & TERM_DUMB) print_entries_raw (num_entries, first_entry, menu_entries); else - print_border (3, 12); + print_border (3 + row_start, box_size); grub_printf ("\n\ - Use the %c and %c keys to select which entry is highlighted.\n", + Use the %c and %c keys to select which entry is highlighted.\n", DISP_UP, DISP_DOWN); if (! auth && password) { printf ("\ - Press enter to boot the selected OS or \'p\' to enter a\n\ - password to unlock the next set of features."); + Press enter to boot the selected OS or \'p\' to enter a\n\ + password to unlock the next set of features."); } else { if (config_entries) printf ("\ - Press enter to boot the selected OS, \'e\' to edit the\n\ - commands before booting, or \'c\' for a command-line."); + Press enter to boot the selected OS, \'e\' to edit the\n\ + commands before booting, or \'c\' for a command-line."); else printf ("\ - Press \'b\' to boot, \'e\' to edit the selected command in the\n\ - boot sequence, \'c\' for a command-line, \'o\' to open a new line\n\ - after (\'O\' for before) the selected line, \'d\' to remove the\n\ - selected line, or escape to go back to the main menu."); + Press \'b\' to boot, \'e\' to edit the selected command in the\n\ + boot sequence, \'c\' for a command-line, \'o\' to open a new line\n\ + after (\'O\' for before) the selected line, \'d\' to remove the\n\ + selected line, or escape to go back to the main menu."); } if (current_term->flags & TERM_DUMB) grub_printf ("\n\nThe selected entry is %d ", entryno); else - print_entries (3, 12, first_entry, entryno, menu_entries); + print_entries (3 + row_start, box_size, first_entry, entryno, menu_entries); } /* XX using RT clock now, need to initialize value */ @@ -358,10 +381,10 @@ entryno, grub_timeout); else { - gotoxy (3, 22); - grub_printf ("The highlighted entry will be booted automatically in %d seconds. ", + gotoxy (3 + col_start, 10 + box_size + row_start); + grub_printf (" The highlighted entry will be booted automatically in %d seconds. ", grub_timeout); - gotoxy (74, 4 + entryno); + gotoxy ((col_end - 6), 4 + entryno + row_start); } grub_timeout--; @@ -387,12 +410,12 @@ if (current_term->flags & TERM_DUMB) grub_putchar ('\r'); else - gotoxy (3, 22); + gotoxy (3 + col_start, 10 + box_size + row_start); printf (" "); grub_timeout = -1; fallback_entryno = -1; if (! (current_term->flags & TERM_DUMB)) - gotoxy (74, 4 + entryno); + gotoxy ((col_end - 6), 4 + entryno + row_start); } /* We told them above (at least in SUPPORT_SERIAL) to use @@ -408,12 +431,12 @@ { if (entryno > 0) { - print_entry (4 + entryno, 0, + print_entry (4 + entryno + row_start, 0, get_entry (menu_entries, first_entry + entryno, 0)); entryno--; - print_entry (4 + entryno, 1, + print_entry (4 + entryno + row_start, 1, get_entry (menu_entries, first_entry + entryno, 0)); @@ -421,7 +444,7 @@ else if (first_entry > 0) { first_entry--; - print_entries (3, 12, first_entry, entryno, + print_entries (3 + row_start, box_size, first_entry, entryno, menu_entries); } } @@ -433,29 +456,29 @@ entryno++; else { - if (entryno < 11) + if (entryno < (box_size - 1)) { - print_entry (4 + entryno, 0, + print_entry (4 + entryno + row_start, 0, get_entry (menu_entries, first_entry + entryno, 0)); entryno++; - print_entry (4 + entryno, 1, + print_entry (4 + entryno + row_start, 1, get_entry (menu_entries, first_entry + entryno, 0)); } - else if (num_entries > 12 + first_entry) + else if (num_entries > box_size + first_entry) { first_entry++; - print_entries (3, 12, first_entry, entryno, menu_entries); + print_entries (3 + row_start, box_size, first_entry, entryno, menu_entries); } } } else if (c == 7) { /* Page Up */ - first_entry -= 12; + first_entry -= box_size; if (first_entry < 0) { entryno += first_entry; @@ -463,20 +486,20 @@ if (entryno < 0) entryno = 0; } - print_entries (3, 12, first_entry, entryno, menu_entries); + print_entries (3 + row_start, box_size, first_entry, entryno, menu_entries); } else if (c == 3) { /* Page Down */ - first_entry += 12; + first_entry += box_size; if (first_entry + entryno + 1 >= num_entries) { - first_entry = num_entries - 12; + first_entry = num_entries - box_size; if (first_entry < 0) first_entry = 0; entryno = num_entries - first_entry - 1; } - print_entries (3, 12, first_entry, entryno, menu_entries); + print_entries (3 + row_start, box_size, first_entry, entryno, menu_entries); } if (config_entries) @@ -489,7 +512,7 @@ if ((c == 'd') || (c == 'o') || (c == 'O')) { if (! (current_term->flags & TERM_DUMB)) - print_entry (4 + entryno, 0, + print_entry (4 + entryno + row_start, 0, get_entry (menu_entries, first_entry + entryno, 0)); @@ -537,7 +560,7 @@ if (entryno >= num_entries) entryno--; - if (first_entry && num_entries < 12 + first_entry) + if (first_entry && num_entries < box_size + first_entry) first_entry--; } @@ -549,7 +572,7 @@ grub_printf ("\n"); } else - print_entries (3, 12, first_entry, entryno, menu_entries); + print_entries (3 + row_start, box_size, first_entry, entryno, menu_entries); } cur_entry = menu_entries; @@ -570,7 +593,7 @@ if (current_term->flags & TERM_DUMB) grub_printf ("\r "); else - gotoxy (1, 21); + gotoxy (1 + col_start, 9 + box_size + row_start); /* Wipe out the previously entered password */ grub_memset (entered, 0, sizeof (entered)); @@ -714,6 +737,15 @@ cls (); setcursor (1); + /* if our terminal needed initialization, we should shut it down + * before booting the kernel, but we want to save what it was so + * we can come back if needed */ + prev_term = current_term; + if (current_term->shutdown) + { + current_term->shutdown(); + current_term = term_table; /* assumption: console is first */ + } while (1) { @@ -748,6 +780,13 @@ break; } + /* if we get back here, we should go back to what our term was before */ + current_term = prev_term; + if (current_term->startup) + /* if our terminal fails to initialize, fall back to console since + * it should always work */ + if (current_term->startup() == 0) + current_term = term_table; /* we know that console is first */ show_menu = 1; goto restart; } @@ -1050,6 +1089,16 @@ while (is_preset); } + /* go ahead and make sure the terminal is setup */ + if (current_term->startup) + { + /* If initialization fails, go back to default terminal */ + if (current_term->startup() == 0) + { + current_term = term_table; + } + } + if (! num_entries) { /* If no acceptable config file, goto command-line, starting diff -Naur grub-0.97.orig/stage2/term.h grub-0.97/stage2/term.h --- grub-0.97.orig/stage2/term.h 2003-07-09 08:45:53.000000000 -0300 +++ grub-0.97/stage2/term.h 2005-06-13 14:07:40.000000000 -0300 @@ -60,6 +60,8 @@ const char *name; /* The feature flags defined above. */ unsigned long flags; + /* Default for maximum number of lines if not specified */ + unsigned short max_lines; /* Put a character. */ void (*putchar) (int c); /* Check if any input character is available. */ @@ -79,6 +81,10 @@ void (*setcolor) (int normal_color, int highlight_color); /* Turn on/off the cursor. */ int (*setcursor) (int on); + /* function to start a terminal */ + int (*startup) (void); + /* function to use to shutdown a terminal */ + void (*shutdown) (void); }; /* This lists up available terminals. */ @@ -124,4 +130,24 @@ int hercules_setcursor (int on); #endif +#ifdef SUPPORT_GRAPHICS +extern int foreground, background, window_border, graphics_inited, saved_videomode; + +void graphics_set_splash(char *splashfile); +int set_videomode(int mode); +int get_videomode(void); +void graphics_putchar (int c); +int graphics_getxy(void); +void graphics_gotoxy(int x, int y); +void graphics_cls(void); +void graphics_setcolorstate (color_state state); +void graphics_setcolor (int normal_color, int highlight_color); +int graphics_setcursor (int on); +int graphics_init(void); +void graphics_end(void); + +int hex(int v); +void graphics_set_palette(int idx, int red, int green, int blue); +#endif /* SUPPORT_GRAPHICS */ + #endif /* ! GRUB_TERM_HEADER */ geexbox-1.1/packages/grub/patches/22_graphics-makefiles.diff0000644000175000017500000004524210641745504022162 0ustar benbendiff -Nur grub-0.97.orig/configure grub-0.97/configure --- grub-0.97.orig/configure Sun May 8 05:48:12 2005 +++ grub-0.97/configure Tue Nov 29 09:21:35 2005 @@ -311,7 +311,7 @@ # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar build build_cpu build_vendor build_os host host_cpu host_vendor host_os MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT PERL CC ac_ct_CC CFLAGS LDFLAGS CPPFLAGS EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CCAS RANLIB ac_ct_RANLIB STAGE1_CFLAGS STAGE2_CFLAGS GRUB_CFLAGS OBJCOPY ac_ct_OBJCOPY GRUB_LIBS CPP EGREP NETBOOT_SUPPORT_TRUE NETBOOT_SUPPORT_FALSE DISKLESS_SUPPORT_TRUE DISKLESS_SUPPORT_FALSE HERCULES_SUPPORT_TRUE HERCULES_SUPPORT_FALSE SERIAL_SUPPORT_TRUE SERIAL_SUPPORT_FALSE SERIAL_SPEED_SIMULATION_TRUE SERIAL_SPEED_SIMULATION_FALSE BUILD_EXAMPLE_KERNEL_TRUE BUILD_EXAMPLE_KERNEL_FALSE FSYS_CFLAGS NET_CFLAGS NET_EXTRAFLAGS NETBOOT_DRIVERS CCASFLAGS LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar build build_cpu build_vendor build_os host host_cpu host_vendor host_os MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT PERL CC ac_ct_CC CFLAGS LDFLAGS CPPFLAGS EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CCAS RANLIB ac_ct_RANLIB STAGE1_CFLAGS STAGE2_CFLAGS GRUB_CFLAGS OBJCOPY ac_ct_OBJCOPY GRUB_LIBS CPP EGREP NETBOOT_SUPPORT_TRUE NETBOOT_SUPPORT_FALSE DISKLESS_SUPPORT_TRUE DISKLESS_SUPPORT_FALSE GRAPHICS_SUPPORT_TRUE GRAPHICS_SUPPORT_FALSE HERCULES_SUPPORT_TRUE HERCULES_SUPPORT_FALSE SERIAL_SUPPORT_TRUE SERIAL_SUPPORT_FALSE SERIAL_SPEED_SIMULATION_TRUE SERIAL_SPEED_SIMULATION_FALSE BUILD_EXAMPLE_KERNEL_TRUE BUILD_EXAMPLE_KERNEL_FALSE FSYS_CFLAGS NET_CFLAGS NET_EXTRAFLAGS NETBOOT_DRIVERS CCASFLAGS LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -914,6 +914,7 @@ set the default memory location for WD/SMC --enable-cs-scan=LIST probe for CS89x0 base address using LIST --enable-diskless enable diskless support + --disable-graphics disable graphics terminal support --disable-hercules disable hercules terminal support --disable-serial disable serial terminal support --enable-serial-speed-simulation @@ -5966,6 +5967,22 @@ fi +# Check whether --enable-graphics or --disable-graphics was given. +if test "${enable_graphics+set}" = set; then + enableval="$enable_graphics" + +fi; + + +if test "x$enable_graphics" != xno; then + GRAPHICS_SUPPORT_TRUE= + GRAPHICS_SUPPORT_FALSE='#' +else + GRAPHICS_SUPPORT_TRUE='#' + GRAPHICS_SUPPORT_FALSE= +fi + + # Check whether --enable-hercules or --disable-hercules was given. if test "${enable_hercules+set}" = set; then enableval="$enable_hercules" @@ -6270,6 +6287,13 @@ Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi +if test -z "${GRAPHICS_SUPPORT_TRUE}" && test -z "${GRAPHICS_SUPPORT_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"GRAPHICS_SUPPORT\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"GRAPHICS_SUPPORT\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi if test -z "${HERCULES_SUPPORT_TRUE}" && test -z "${HERCULES_SUPPORT_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"HERCULES_SUPPORT\" was never defined. Usually this means the macro was only invoked conditionally." >&5 @@ -6907,6 +6931,8 @@ s,@NETBOOT_SUPPORT_FALSE@,$NETBOOT_SUPPORT_FALSE,;t t s,@DISKLESS_SUPPORT_TRUE@,$DISKLESS_SUPPORT_TRUE,;t t s,@DISKLESS_SUPPORT_FALSE@,$DISKLESS_SUPPORT_FALSE,;t t +s,@GRAPHICS_SUPPORT_TRUE@,$GRAPHICS_SUPPORT_TRUE,;t t +s,@GRAPHICS_SUPPORT_FALSE@,$GRAPHICS_SUPPORT_FALSE,;t t s,@HERCULES_SUPPORT_TRUE@,$HERCULES_SUPPORT_TRUE,;t t s,@HERCULES_SUPPORT_FALSE@,$HERCULES_SUPPORT_FALSE,;t t s,@SERIAL_SUPPORT_TRUE@,$SERIAL_SUPPORT_TRUE,;t t diff -Nur grub-0.97.orig/stage2/Makefile.in grub-0.97/stage2/Makefile.in --- grub-0.97.orig/stage2/Makefile.in Sun May 8 05:42:39 2005 +++ grub-0.97/stage2/Makefile.in Tue Nov 29 09:21:54 2005 @@ -100,7 +100,7 @@ libgrub_a-fsys_xfs.$(OBJEXT) libgrub_a-gunzip.$(OBJEXT) \ libgrub_a-md5.$(OBJEXT) libgrub_a-serial.$(OBJEXT) \ libgrub_a-stage2.$(OBJEXT) libgrub_a-terminfo.$(OBJEXT) \ - libgrub_a-tparm.$(OBJEXT) + libgrub_a-tparm.$(OBJEXT) libgrub_a-graphics.$(OBJEXT) libgrub_a_OBJECTS = $(am_libgrub_a_OBJECTS) PROGRAMS = $(noinst_PROGRAMS) am__objects_1 = diskless_exec-asm.$(OBJEXT) \ @@ -125,7 +125,8 @@ diskless_exec-serial.$(OBJEXT) \ diskless_exec-smp-imps.$(OBJEXT) \ diskless_exec-stage2.$(OBJEXT) \ - diskless_exec-terminfo.$(OBJEXT) diskless_exec-tparm.$(OBJEXT) + diskless_exec-terminfo.$(OBJEXT) diskless_exec-tparm.$(OBJEXT) \ + diskless_exec-graphics.$(OBJEXT) am_diskless_exec_OBJECTS = $(am__objects_1) diskless_exec_OBJECTS = $(am_diskless_exec_OBJECTS) diskless_exec_DEPENDENCIES = ../netboot/libdrivers.a @@ -217,7 +218,8 @@ pre_stage2_exec-smp-imps.$(OBJEXT) \ pre_stage2_exec-stage2.$(OBJEXT) \ pre_stage2_exec-terminfo.$(OBJEXT) \ - pre_stage2_exec-tparm.$(OBJEXT) + pre_stage2_exec-tparm.$(OBJEXT) \ + pre_stage2_exec-graphics.$(OBJEXT) pre_stage2_exec_OBJECTS = $(am_pre_stage2_exec_OBJECTS) @NETBOOT_SUPPORT_TRUE@pre_stage2_exec_DEPENDENCIES = \ @NETBOOT_SUPPORT_TRUE@ ../netboot/libdrivers.a @@ -344,6 +346,8 @@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FSYS_CFLAGS = @FSYS_CFLAGS@ +GRAPHICS_SUPPORT_FALSE = @GRAPHICS_SUPPORT_FALSE@ +GRAPHICS_SUPPORT_TRUE = @GRAPHICS_SUPPORT_TRUE@ GRUB_CFLAGS = @GRUB_CFLAGS@ GRUB_LIBS = @GRUB_LIBS@ HERCULES_SUPPORT_FALSE = @HERCULES_SUPPORT_FALSE@ @@ -435,7 +439,7 @@ fat.h filesys.h freebsd.h fs.h hercules.h i386-elf.h \ imgact_aout.h iso9660.h jfs.h mb_header.h mb_info.h md5.h \ nbi.h pc_slice.h serial.h shared.h smp-imps.h term.h \ - terminfo.h tparm.h nbi.h ufs2.h vstafs.h xfs.h + terminfo.h tparm.h nbi.h ufs2.h vstafs.h xfs.h graphics.h EXTRA_DIST = setjmp.S apm.S $(noinst_SCRIPTS) @@ -448,7 +452,7 @@ disk_io.c fsys_ext2fs.c fsys_fat.c fsys_ffs.c fsys_iso9660.c \ fsys_jfs.c fsys_minix.c fsys_reiserfs.c fsys_ufs2.c \ fsys_vstafs.c fsys_xfs.c gunzip.c md5.c serial.c stage2.c \ - terminfo.c tparm.c + terminfo.c tparm.c graphics.c libgrub_a_CFLAGS = $(GRUB_CFLAGS) -I$(top_srcdir)/lib \ -DGRUB_UTIL=1 -DFSYS_EXT2FS=1 -DFSYS_FAT=1 -DFSYS_FFS=1 \ @@ -479,8 +483,10 @@ @SERIAL_SUPPORT_TRUE@SERIAL_FLAGS = -DSUPPORT_SERIAL=1 @HERCULES_SUPPORT_FALSE@HERCULES_FLAGS = @HERCULES_SUPPORT_TRUE@HERCULES_FLAGS = -DSUPPORT_HERCULES=1 +@GRAPHICS_SUPPORT_FALSE@GRAPHICS_FLAGS = +@GRAPHICS_SUPPORT_TRUE@GRAPHICS_FLAGS = -DSUPPORT_GRAPHICS=1 STAGE2_COMPILE = $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ - $(NETBOOT_FLAGS) $(SERIAL_FLAGS) $(HERCULES_FLAGS) + $(NETBOOT_FLAGS) $(SERIAL_FLAGS) $(HERCULES_FLAGS) $(GRAPHICS_FLAGS) STAGE1_5_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,2000 STAGE1_5_COMPILE = $(STAGE2_COMPILE) -DNO_DECOMPRESSION=1 -DSTAGE1_5=1 @@ -490,7 +496,8 @@ cmdline.c common.c console.c disk_io.c fsys_ext2fs.c \ fsys_fat.c fsys_ffs.c fsys_iso9660.c fsys_jfs.c fsys_minix.c \ fsys_reiserfs.c fsys_ufs2.c fsys_vstafs.c fsys_xfs.c gunzip.c \ - hercules.c md5.c serial.c smp-imps.c stage2.c terminfo.c tparm.c + hercules.c md5.c serial.c smp-imps.c stage2.c terminfo.c tparm.c \ + graphics.c pre_stage2_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) pre_stage2_exec_CCASFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) @@ -766,6 +773,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-fsys_ufs2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-fsys_vstafs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-fsys_xfs.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-graphics.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-gunzip.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-hercules.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diskless_exec-md5.Po@am__quote@ @@ -820,6 +828,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-fsys_ufs2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-fsys_vstafs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-fsys_xfs.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-graphics.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-gunzip.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-md5.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgrub_a-serial.Po@am__quote@ @@ -850,6 +859,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-fsys_ufs2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-fsys_vstafs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-fsys_xfs.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-graphics.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-gunzip.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-hercules.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pre_stage2_exec-md5.Po@am__quote@ @@ -1367,6 +1377,20 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-tparm.obj `if test -f 'tparm.c'; then $(CYGPATH_W) 'tparm.c'; else $(CYGPATH_W) '$(srcdir)/tparm.c'; fi` +libgrub_a-graphics.o: graphics.c +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-graphics.o -MD -MP -MF "$(DEPDIR)/libgrub_a-graphics.Tpo" -c -o libgrub_a-graphics.o `test -f 'graphics.c' || echo '$(srcdir)/'`graphics.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-graphics.Tpo" "$(DEPDIR)/libgrub_a-graphics.Po"; else rm -f "$(DEPDIR)/libgrub_a-graphics.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='graphics.c' object='libgrub_a-graphics.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-graphics.o `test -f 'graphics.c' || echo '$(srcdir)/'`graphics.c + +libgrub_a-graphics.obj: graphics.c +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -MT libgrub_a-graphics.obj -MD -MP -MF "$(DEPDIR)/libgrub_a-graphics.Tpo" -c -o libgrub_a-graphics.obj `if test -f 'graphics.c'; then $(CYGPATH_W) 'graphics.c'; else $(CYGPATH_W) '$(srcdir)/graphics.c'; fi`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libgrub_a-graphics.Tpo" "$(DEPDIR)/libgrub_a-graphics.Po"; else rm -f "$(DEPDIR)/libgrub_a-graphics.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='graphics.c' object='libgrub_a-graphics.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-graphics.obj `if test -f 'graphics.c'; then $(CYGPATH_W) 'graphics.c'; else $(CYGPATH_W) '$(srcdir)/graphics.c'; fi` + diskless_exec-bios.o: bios.c @am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-bios.o -MD -MP -MF "$(DEPDIR)/diskless_exec-bios.Tpo" -c -o diskless_exec-bios.o `test -f 'bios.c' || echo '$(srcdir)/'`bios.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-bios.Tpo" "$(DEPDIR)/diskless_exec-bios.Po"; else rm -f "$(DEPDIR)/diskless_exec-bios.Tpo"; exit 1; fi @@ -1731,6 +1755,20 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-tparm.obj `if test -f 'tparm.c'; then $(CYGPATH_W) 'tparm.c'; else $(CYGPATH_W) '$(srcdir)/tparm.c'; fi` +diskless_exec-graphics.o: graphics.c +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-graphics.o -MD -MP -MF "$(DEPDIR)/diskless_exec-graphics.Tpo" -c -o diskless_exec-graphics.o `test -f 'graphics.c' || echo '$(srcdir)/'`graphics.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-graphics.Tpo" "$(DEPDIR)/diskless_exec-graphics.Po"; else rm -f "$(DEPDIR)/diskless_exec-graphics.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='graphics.c' object='diskless_exec-graphics.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-graphics.o `test -f 'graphics.c' || echo '$(srcdir)/'`graphics.c + +diskless_exec-graphics.obj: graphics.c +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -MT diskless_exec-graphics.obj -MD -MP -MF "$(DEPDIR)/diskless_exec-graphics.Tpo" -c -o diskless_exec-graphics.obj `if test -f 'graphics.c'; then $(CYGPATH_W) 'graphics.c'; else $(CYGPATH_W) '$(srcdir)/graphics.c'; fi`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/diskless_exec-graphics.Tpo" "$(DEPDIR)/diskless_exec-graphics.Po"; else rm -f "$(DEPDIR)/diskless_exec-graphics.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='graphics.c' object='diskless_exec-graphics.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-graphics.obj `if test -f 'graphics.c'; then $(CYGPATH_W) 'graphics.c'; else $(CYGPATH_W) '$(srcdir)/graphics.c'; fi` + e2fs_stage1_5_exec-common.o: common.c @am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(e2fs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT e2fs_stage1_5_exec-common.o -MD -MP -MF "$(DEPDIR)/e2fs_stage1_5_exec-common.Tpo" -c -o e2fs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/e2fs_stage1_5_exec-common.Tpo" "$(DEPDIR)/e2fs_stage1_5_exec-common.Po"; else rm -f "$(DEPDIR)/e2fs_stage1_5_exec-common.Tpo"; exit 1; fi @@ -2598,6 +2636,20 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tparm.c' object='pre_stage2_exec-tparm.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-tparm.obj `if test -f 'tparm.c'; then $(CYGPATH_W) 'tparm.c'; else $(CYGPATH_W) '$(srcdir)/tparm.c'; fi` + +pre_stage2_exec-graphics.o: graphics.c +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-graphics.o -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-graphics.Tpo" -c -o pre_stage2_exec-graphics.o `test -f 'graphics.c' || echo '$(srcdir)/'`graphics.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-graphics.Tpo" "$(DEPDIR)/pre_stage2_exec-graphics.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-graphics.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='graphics.c' object='pre_stage2_exec-graphics.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-graphics.o `test -f 'graphics.c' || echo '$(srcdir)/'`graphics.c + +pre_stage2_exec-graphics.obj: graphics.c +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -MT pre_stage2_exec-graphics.obj -MD -MP -MF "$(DEPDIR)/pre_stage2_exec-graphics.Tpo" -c -o pre_stage2_exec-graphics.obj `if test -f 'graphics.c'; then $(CYGPATH_W) 'graphics.c'; else $(CYGPATH_W) '$(srcdir)/graphics.c'; fi`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/pre_stage2_exec-graphics.Tpo" "$(DEPDIR)/pre_stage2_exec-graphics.Po"; else rm -f "$(DEPDIR)/pre_stage2_exec-graphics.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='graphics.c' object='pre_stage2_exec-graphics.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-graphics.obj `if test -f 'graphics.c'; then $(CYGPATH_W) 'graphics.c'; else $(CYGPATH_W) '$(srcdir)/graphics.c'; fi` reiserfs_stage1_5_exec-common.o: common.c @am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -MT reiserfs_stage1_5_exec-common.o -MD -MP -MF "$(DEPDIR)/reiserfs_stage1_5_exec-common.Tpo" -c -o reiserfs_stage1_5_exec-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c; \ geexbox-1.1/packages/grub/patches/30_256bytes-aligment.diff0000644000175000017500000000172110641745504021576 0ustar benben2006-05-02 Vesa Jaaskelainen * stage2/shared.h (vbe_mode): Back ported aligment fix from GRUB 2 to GRUB Legacy. Problem reported by Gerardo Richarte. taken from upstream. Index: stage2/shared.h =================================================================== RCS file: /cvsroot/grub/grub/stage2/shared.h,v retrieving revision 1.99 retrieving revision 1.100 diff -u -r1.99 -r1.100 --- foo/stage2/shared.h 20 Jun 2004 13:48:47 -0000 1.99 +++ foo/stage2/shared.h 2 May 2006 20:46:24 -0000 1.100 @@ -499,7 +499,11 @@ unsigned char linear_reserved_field_position; unsigned long max_pixel_clock; - unsigned char reserved3[189]; + /* Reserved field to make structure to be 256 bytes long, VESA BIOS + Extension 3.0 Specification says to reserve 189 bytes here but + that doesn't make structure to be 256 bytes. So additional one is + added here. */ + unsigned char reserved3[189 + 1]; } __attribute__ ((packed)); geexbox-1.1/packages/grub/url0000644000175000017500000000005610641745504014357 0ustar benbenftp://alpha.gnu.org/gnu/grub/grub-0.97.tar.gz geexbox-1.1/packages/i18n-fonts/0000755000175000017500000000000010641745504014600 5ustar benbengeexbox-1.1/packages/i18n-fonts/install0000755000175000017500000000317510641745504016202 0ustar benben#!/bin/sh . config/options . $PACKAGES/i18n/config/lang.conf . $PACKAGES/i18n/scripts/lang.funcs $SCRIPTS/unpack theme-$THEME mkdir -p $INSTALL/etc mkdir -p $INSTALL/usr/share/fonts SUB_CHARSET=`lang2charset "$SUB_CHARSET"` SUB_FONT=`lang2font "$SUB_CHARSET" sub` echo $SUB_CHARSET > $INSTALL/etc/subfont case "$2" in generator) mkdir -p $GENERATOR_NAME/i18n/fonts cp -r $BUILD/$1/* $GENERATOR_NAME/i18n/fonts/ ;; installator) cp $BUILD/theme-$THEME/*.ttf $INSTALL/usr/share/fonts/themefont.ttf cp -r $BUILD/$1/* $INSTALL/usr/share/fonts/ ;; *) . $BUILD/theme-$THEME/config [ -z "$FONT_CHARSETS" ] && FONT_CHARSETS="iso-8859-1" for MENU_LANG in $INCLUDED_LANGS; do MENU_CHARSET=`lang2charset "$MENU_LANG"` MENU_FONT=`lang2font "$MENU_LANG" menu` for i in $FONT_CHARSETS; do if [ "$i" = "$MENU_CHARSET" ]; then cp $BUILD/theme-$THEME/*.ttf $INSTALL/usr/share/fonts/themefont.ttf MENU_FONT="themefont.ttf" break fi done [ -z "$SUB_FONT" -o -z "$MENU_FONT" ] && exit 1 cp -r $BUILD/$1/$SUB_FONT $INSTALL/usr/share/fonts/ if [ "$MENU_FONT" != "themefont.ttf" -a "$MENU_FONT" != "$SUB_FONT" ]; then if [ `grep -c "$MENU_FONT" $PACKAGES/extra-fonts-nonfree/url` -gt 0 ]; then [ "$EXTRAFONTS" = no ] && echo "Language $MENU_LANG requires EXTRAFONTS=yes" && exit 1 $SCRIPTS/unpack extra-fonts-nonfree cp -r $BUILD/extra-fonts-nonfree/$MENU_FONT $INSTALL/usr/share/fonts/ else cp -r $BUILD/$1/$MENU_FONT $INSTALL/usr/share/fonts/ fi fi done ;; esac geexbox-1.1/packages/i18n-fonts/unpack0000755000175000017500000000042110641745504016004 0ustar benben#!/bin/sh . config/options FONTS_DIR=$BUILD/$1 mkdir -p $FONTS_DIR/freefont-ttf $SCRIPTS/extract $1 "freefont-ttf*" $FONTS_DIR/freefont-ttf for i in FreeSans.ttf FreeSerif.ttf; do mv $FONTS_DIR/freefont-ttf/freefont*/$i $FONTS_DIR done rm -rf $FONTS_DIR/freefont-ttf geexbox-1.1/packages/i18n-fonts/url0000644000175000017500000000011210641745504015317 0ustar benbenhttp://savannah.nongnu.org/download/freefont/freefont-ttf-20060126.tar.gz geexbox-1.1/packages/i18n-iconv/0000755000175000017500000000000010641745504014565 5ustar benbengeexbox-1.1/packages/i18n-iconv/build0000755000175000017500000000107510641745504015615 0ustar benben#!/bin/sh . config/options . $PACKAGES/i18n/config/lang.conf ICONV_DIR=$BUILD/$1 ICONV_PORTS="iconv-base iconv-extra" for j in $ICONV_PORTS; do $SCRIPTS/build $j done rm -rf $ICONV_DIR mkdir -p $ICONV_DIR for i in $CHARSETS; do for j in $ICONV_PORTS; do grep "^$i " $BUILD/$j*/charset.db | cut -d ' ' -f 2 | while read f; do echo "$i $f" >> $ICONV_DIR/charset.db case $f in *.cct) cp $BUILD/$j*/ccs/$f $ICONV_DIR/ ;; *.so) cp $BUILD/$j*/ces/$f $ICONV_DIR/ ;; esac done done done geexbox-1.1/packages/i18n-iconv/install0000755000175000017500000000136110641745504016162 0ustar benben#!/bin/sh . config/options . $PACKAGES/i18n/config/lang.conf . $PACKAGES/i18n/scripts/lang.funcs $SCRIPTS/install iconv-base MENU_CHARSET=`lang2charset "$MENU_LANG"` SUB_CHARSET=`lang2charset "$SUB_CHARSET"` [ -z "$SUB_CHARSET" -o -z "$MENU_CHARSET" ] && exit 1 mkdir -p $INSTALL/usr/share/iconv case "$2" in generator) mkdir -p $GENERATOR_NAME/i18n/iconv cp $BUILD/$1/* $GENERATOR_NAME/i18n/iconv/ ;; installator) cp $BUILD/$1/*.cct $INSTALL/usr/share/iconv/ cp $BUILD/$1/*.so $INSTALL/usr/share/iconv/ ;; *) for i in $SUB_CHARSET $MENU_CHARSET; do grep "^$i " $BUILD/$1/charset.db | cut -d ' ' -f 2 | while read f; do cp -f $BUILD/$1/$f $INSTALL/usr/share/iconv/ done done ;; esac geexbox-1.1/packages/i18n-iconv/need_build0000755000175000017500000000042010641745504016601 0ustar benben#!/bin/sh . config/options $SCRIPTS/build iconv-base $SCRIPTS/build iconv-extra STAMP=$STAMPS/$1/build for p in iconv-base iconv-extra; do test $STAMPS/$p/build -nt $STAMP && rm -f $STAMP done test $PACKAGES/i18n/config/lang.conf -nt $STAMP && rm -f $STAMP exit 0 geexbox-1.1/packages/i18n-keymaps/0000755000175000017500000000000010641745504015120 5ustar benbengeexbox-1.1/packages/i18n-keymaps/config/0000755000175000017500000000000010641745504016365 5ustar benbengeexbox-1.1/packages/i18n-keymaps/config/azerty0000644000175000017500000000540710641745504017634 0ustar benbenbkeymap&"'(-_)= a z e r t y u i o p $q s d f g h j k l m *w x c v b n ,;:!*   789-456+1230.*<  /  1234567890+ A Z E R T Y U I O P Q S D F G H J K L M %W X C V B N ?./             ,>  /    ~#{[|\^@]}        |/        "#$%&'()*+   ,-/      ./01234567   89   ~         /   1234567890)=qwertyuiop[] asdfghjkl;'`\zxcvbnm,./       -   +   <  /\  ~&~"'(-`_^@]+ QWERTYUIOP{}ASDFGHJKL|ZXCVBNM<>     /  ~qwertyuiopasdfghjklzxcvbnm                       /   geexbox-1.1/packages/i18n-keymaps/config/qwertz0000644000175000017500000000540710641745504017652 0ustar benbenbkeymap1234567890ß' q w e r t z u i o p ü +a s d f g h j k l ö ä ^#y x c v b n m ,.-       <     !"§$%&/()=?` Q W E R T Z U I O P Ü *A S D F G H J K L Ö Ä °'Y X C V B N M ;:_       > !     ²³{[]}\@w ¤r t z u i o p ~a s d f g h j k l ^y x ¢v b n µ-            |          "#$%&'()*+   ,-             ~               1234567890´ qwertzuiop+ asdfghjkl#yxcvbnm,.-            <     ~!"$%&/()=?` QWERTZUIOP*ASDFGHJKL'YXCVBNM;:_     >   ~{[]}\@wertzuiopasdfghjklyxcvbnm     |                      geexbox-1.1/packages/i18n-keymaps/init.d/0000755000175000017500000000000010641745504016305 5ustar benbengeexbox-1.1/packages/i18n-keymaps/init.d/10_keymap0000755000175000017500000000045110641745504020021 0ustar benben#!/bin/sh # # load keymap # # runlevels: geexbox, debug, install echo "### Loading keymap ###" # check for keymap: if not found or invalid, use default keymap KEYMAP=`sed -n "s/.*keymap=\([^ ]*\).*/\1/p" /proc/cmdline` test -f "/etc/keymaps/$KEYMAP" && loadkmap < "/etc/keymaps/$KEYMAP" exit 0 geexbox-1.1/packages/i18n-keymaps/install0000755000175000017500000000015210641745504016512 0ustar benben#!/bin/sh . config/options mkdir -p $INSTALL/etc/keymaps cp $PACKAGES/$1/config/* $INSTALL/etc/keymaps geexbox-1.1/packages/i18n-texts/0000755000175000017500000000000010641745505014617 5ustar benbengeexbox-1.1/packages/i18n-texts/config/0000755000175000017500000000000010641745505016064 5ustar benbengeexbox-1.1/packages/i18n-texts/config/ar.lang0000644000175000017500000000631010641745505017331 0ustar benbenASPECT="Aspect" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="Cinemascope" ASPECT_ORIGINAL="Original" AUTOPLAY="Autoplay Mode" AUTOPLAY_DISABLE="Autoplay Disable" AUTOPLAY_ENABLE="Autoplay Enable" CTRLS="Controls" CTRLS_EJECT="Eject" CTRLS_PAUSE="Pause" CTRLS_PLAYLIST="Playlist ..." CTRLS_PREV_NEXT="Prev/Next" CTRLS_STOP="Stop" DIGI_CHANNELS="Manage Channels" DIGI_CHANNELS_CANCEL="Cancel store" DIGI_CHANNELS_CONFIRM="Confirm store" DIGI_CHANNELS_SELECT="Channel -/+" DIGI_CHANNELS_STORE="Store current frequency" DIGI_RADIO="Radio" DIGI_RADIO_AM="Radio AM" DIGI_RADIO_CHANNELS="Channel -/+" DIGI_RADIO_CONFIG="Configure radio ..." DIGI_RADIO_FM="Radio FM" DIGI_RADIO_OFF="Radio off" DIGI_SAVE_CHANNEL="Save Channel ..." DIGI_TUNING="Manual Tune" DIGI_TUNING_FINE_MINUS="Fine tune -" DIGI_TUNING_FINE_PLUS="Fine tune +" DIGI_TUNING_SEEK_MINUS="Seek station -" DIGI_TUNING_SEEK_PLUS="Seek station +" DVD_PLAYBACK="DVD Playback Method" DVD_PLAYBACK_DIRECT="Direct Playback" DVD_PLAYBACK_DVDNAV="DVD Navigation Menu" FILES_FILTER="Files Filter" FILES_FILTER_ALL="Display all Files" FILES_FILTER_MEDIA="Display Media Files Only" IMG_10S="10s" IMG_15M="15min" IMG_15S="15s" IMG_1S="1s" IMG_30S="30s" IMG_3S="3s" IMG_5M="5min" IMG_5S="5s" IMG_60S="1min" IMG_SHOW_DISABLE="Disable slide show" IMG_SHOW_TIMEOUT="Image show timeout" INFO="Info" LISTEN_RADIO="Listen Radio ..." LIST_CHANNELS="List of Channels ..." MENU_CONTROLS="Controls" MENU_GEEXBOX="GeeXboX" MENU_HELP="Help" MENU_OPEN="Open" MENU_OPTIONS="Options" MENU_QUIT="Quit" OPEN="Open" OPEN_FILE="Open file ..." OPTIONS="Options" OPTIONS_AUTOPLAY="Autoplay mode ..." OPTIONS_DVD_SETTINGS="DVD Settings ..." OPTIONS_FILE_FILTER="Files Filter ..." OPTIONS_IMG_SHOW="Image show timeout ..." OPTIONS_INFOS="Info ..." OPTIONS_RESET_PATH="Reset file open path" OPTIONS_SLEEP_TIMER="Set Sleeptimer ..." OPTIONS_SUBS_SIZE="Subtitles size ..." OPTIONS_TV_NORM="TV Norm ..." OPTIONS_TV_SWITCH="Switch TV-Out" OPTIONS_VSYNC="Switch Vertical Sync" PLAYLIST="Playlist" PLAY_CDDA="Play Audio CD" PLAY_DVD="Play DVD" PLAY_VCD="Play VCD / XCD" PREF_CHAPTERS="Chapter selection ..." PREF_PROPERTIES="Stream Properties ..." SELECT_CHAPTER="Select chapter" SELECT_FILE="Select a file:" SLEEP_TIMER="Sleeptimer (time until shutdown)" SLEEP_TIMER_120M="120min" SLEEP_TIMER_15M="15min" SLEEP_TIMER_30M="30min" SLEEP_TIMER_45M="45min" SLEEP_TIMER_60M="60min" SLEEP_TIMER_75M="75min" SLEEP_TIMER_90M="90min" SLEEP_TIMER_OFF="OFF (default)" STREAM_ABITRATE="Audio Bitrate" STREAM_ACODEC="Audio Codec" STREAM_ALBUM="Album" STREAM_ARTIST="Artist" STREAM_ASAMPLES="Audio Samples" STREAM_COMMENT="Comment" STREAM_GENRE="Genre" STREAM_NAME="Name" STREAM_PROPERTIES="Stream Properties" STREAM_RESOLUTION="Resolution" STREAM_TITLE="Title" STREAM_TRACK="Track" STREAM_VBITRATE="Video Bitrate" STREAM_VCODEC="Video Codec" STREAM_YEAR="Year" SUBS_SIZE="Subtitles size" SUBS_SIZE_DEFAULT="Default" SUBS_SIZE_GIANT="Giant" SUBS_SIZE_HUGE="Huge" SUBS_SIZE_LARGE="Large" SUBS_SIZE_SMALL="Small" TV_CHANNELS="TV Channels ..." TV_INPUT_COMPOSITE="Composite Input" TV_INPUT_SVHS="S-VHS Input" TV_NORM="TV Norm" TV_SETTINGS="Watch TV" WATCH_DVB="Watch Digital TV (DVB)" WATCH_PVR="Watch PVR" WATCH_TV="Watch TV" WELCOME_CONSOLE="Welcome to MPlayer" geexbox-1.1/packages/i18n-texts/config/bg.lang0000644000175000017500000000704110641745505017321 0ustar benbenASPECT="Отношение" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="Кино" ASPECT_ORIGINAL="Оригинал" AUTOPLAY="Autoplay Mode" AUTOPLAY_DISABLE="Autoplay Disable" AUTOPLAY_ENABLE="Autoplay Enable" CTRLS="Контроли" CTRLS_EJECT="Извади диÑка" CTRLS_PAUSE="Пауза" CTRLS_PLAYLIST="Отиди на..." CTRLS_PREV_NEXT="Предишен/Следващ" CTRLS_STOP="Стоп" DIGI_CHANNELS="Manage Channels" DIGI_CHANNELS_CANCEL="Cancel store" DIGI_CHANNELS_CONFIRM="Confirm store" DIGI_CHANNELS_SELECT="Channel -/+" DIGI_CHANNELS_STORE="Store current frequency" DIGI_RADIO="Radio" DIGI_RADIO_AM="Radio AM" DIGI_RADIO_CHANNELS="Channel -/+" DIGI_RADIO_CONFIG="Configure radio ..." DIGI_RADIO_FM="Radio FM" DIGI_RADIO_OFF="Radio off" DIGI_SAVE_CHANNEL="Save Channel ..." DIGI_TUNING="Manual Tune" DIGI_TUNING_FINE_MINUS="Fine tune -" DIGI_TUNING_FINE_PLUS="Fine tune +" DIGI_TUNING_SEEK_MINUS="Seek station -" DIGI_TUNING_SEEK_PLUS="Seek station +" DVD_PLAYBACK="DVD Playback Method" DVD_PLAYBACK_DIRECT="Direct Playback" DVD_PLAYBACK_DVDNAV="DVD Navigation Menu" FILES_FILTER="Филтър на файлове" FILES_FILTER_ALL="Показвай вÑички файлове" FILES_FILTER_MEDIA="Показвай Ñамо медийните" IMG_10S="10s" IMG_15M="15min" IMG_15S="15s" IMG_1S="1s" IMG_30S="30s" IMG_3S="3s" IMG_5M="5min" IMG_5S="5s" IMG_60S="1min" IMG_SHOW_DISABLE="Disable slide show" IMG_SHOW_TIMEOUT="Image show timeout" INFO="Инфо" LISTEN_RADIO="Listen Radio ..." LIST_CHANNELS="List of Channels ..." MENU_CONTROLS="Контроли" MENU_GEEXBOX="GeeXboX" MENU_HELP="Помощ" MENU_OPEN="Отвори" MENU_OPTIONS="ÐаÑтройки" MENU_QUIT="Изход" OPEN="Отвори" OPEN_FILE="Отвори файл ..." OPTIONS="ÐаÑтройки" OPTIONS_AUTOPLAY="Autoplay mode ..." OPTIONS_DVD_SETTINGS="DVD Settings ..." OPTIONS_FILE_FILTER="Филтър файлове..." OPTIONS_IMG_SHOW="Image show timeout ..." OPTIONS_INFOS="ИнформациÑ..." OPTIONS_RESET_PATH="Reset file open path" OPTIONS_SLEEP_TIMER="Set Sleeptimer ..." OPTIONS_SUBS_SIZE="Subtitles size ..." OPTIONS_TV_NORM="TV Norm ..." OPTIONS_TV_SWITCH="Включи ТВ-Изход" OPTIONS_VSYNC="Превключи верт. Ñинхр." PLAYLIST="Отиди на" PLAY_CDDA="ПуÑни музикално CD" PLAY_DVD="ПуÑни DVD" PLAY_VCD="ПуÑни VCD / XCD" PREF_CHAPTERS="Chapter selection ..." PREF_PROPERTIES="Stream Properties ..." SELECT_CHAPTER="Select chapter" SELECT_FILE="Избери файл:" SLEEP_TIMER="Sleeptimer (time until shutdown)" SLEEP_TIMER_120M="120min" SLEEP_TIMER_15M="15min" SLEEP_TIMER_30M="30min" SLEEP_TIMER_45M="45min" SLEEP_TIMER_60M="60min" SLEEP_TIMER_75M="75min" SLEEP_TIMER_90M="90min" SLEEP_TIMER_OFF="OFF (default)" STREAM_ABITRATE="Audio Bitrate" STREAM_ACODEC="Audio Codec" STREAM_ALBUM="Album" STREAM_ARTIST="Artist" STREAM_ASAMPLES="Audio Samples" STREAM_COMMENT="Comment" STREAM_GENRE="Genre" STREAM_NAME="Name" STREAM_PROPERTIES="Stream Properties" STREAM_RESOLUTION="Resolution" STREAM_TITLE="Title" STREAM_TRACK="Track" STREAM_VBITRATE="Video Bitrate" STREAM_VCODEC="Video Codec" STREAM_YEAR="Year" SUBS_SIZE="Subtitles size" SUBS_SIZE_DEFAULT="Default" SUBS_SIZE_GIANT="Giant" SUBS_SIZE_HUGE="Huge" SUBS_SIZE_LARGE="Large" SUBS_SIZE_SMALL="Small" TV_CHANNELS="TV Channels ..." TV_INPUT_COMPOSITE="Composite Input" TV_INPUT_SVHS="S-VHS Input" TV_NORM="TV Norm" TV_SETTINGS="Отвори TV" WATCH_DVB="Watch Digital TV (DVB)" WATCH_PVR="Watch PVR" WATCH_TV="Отвори TV" WELCOME_CONSOLE="Welcome to MPlayer" geexbox-1.1/packages/i18n-texts/config/br.lang0000644000175000017500000000651710641745505017343 0ustar benbenASPECT="Aspecto" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="Cinemascope" ASPECT_ORIGINAL="Original" AUTOPLAY="Autoplay Mode" AUTOPLAY_DISABLE="Autoplay Disable" AUTOPLAY_ENABLE="Autoplay Enable" CTRLS="Controles" CTRLS_EJECT="Ejetar" CTRLS_PAUSE="Pause" CTRLS_PLAYLIST="Ir para ..." CTRLS_PREV_NEXT="Anterior/Proximo" CTRLS_STOP="Parar" DIGI_CHANNELS="Manage Channels" DIGI_CHANNELS_CANCEL="Cancel store" DIGI_CHANNELS_CONFIRM="Confirm store" DIGI_CHANNELS_SELECT="Channel -/+" DIGI_CHANNELS_STORE="Store current frequency" DIGI_RADIO="Radio" DIGI_RADIO_AM="Radio AM" DIGI_RADIO_CHANNELS="Channel -/+" DIGI_RADIO_CONFIG="Configure radio ..." DIGI_RADIO_FM="Radio FM" DIGI_RADIO_OFF="Radio off" DIGI_SAVE_CHANNEL="Save Channel ..." DIGI_TUNING="Manual Tune" DIGI_TUNING_FINE_MINUS="Fine tune -" DIGI_TUNING_FINE_PLUS="Fine tune +" DIGI_TUNING_SEEK_MINUS="Seek station -" DIGI_TUNING_SEEK_PLUS="Seek station +" DVD_PLAYBACK="DVD Playback Method" DVD_PLAYBACK_DIRECT="Direct Playback" DVD_PLAYBACK_DVDNAV="DVD Navigation Menu" FILES_FILTER="Filtro de arquivos" FILES_FILTER_ALL="Exibir todos os arquivos" FILES_FILTER_MEDIA="Exibir somente arquivos multimidia" IMG_10S="10s" IMG_15M="15min" IMG_15S="15s" IMG_1S="1s" IMG_30S="30s" IMG_3S="3s" IMG_5M="5min" IMG_5S="5s" IMG_60S="1min" IMG_SHOW_DISABLE="Desabilitar Tempo Maximo" IMG_SHOW_TIMEOUT="Tempo maximo de slideshow" INFO="Informacoes" LISTEN_RADIO="Listen Radio ..." LIST_CHANNELS="List of Channels ..." MENU_CONTROLS="Controles" MENU_GEEXBOX="GeeXboX" MENU_HELP="Ajuda" MENU_OPEN="Abrir" MENU_OPTIONS="Opcoes" MENU_QUIT="Desligar" OPEN="Abrir" OPEN_FILE="Abrir arquivo ..." OPTIONS="Opcoes" OPTIONS_AUTOPLAY="Autoplay mode ..." OPTIONS_DVD_SETTINGS="DVD Settings ..." OPTIONS_FILE_FILTER="Filtro de arquivos ..." OPTIONS_IMG_SHOW="Tempo maximo de slideshow ..." OPTIONS_INFOS="Informacoes ..." OPTIONS_RESET_PATH="Reset file open path" OPTIONS_SLEEP_TIMER="Set Sleeptimer ..." OPTIONS_SUBS_SIZE="Subtitles size ..." OPTIONS_TV_NORM="TV Norm ..." OPTIONS_TV_SWITCH="Ativar saida para TV" OPTIONS_VSYNC="Ativar sincronismo vertical" PLAYLIST="Ir para" PLAY_CDDA="Tocar CD de audio" PLAY_DVD="Tocar DVD" PLAY_VCD="Tocar VCD / XCD" PREF_CHAPTERS="Selecionar capitulo ..." PREF_PROPERTIES="Stream Properties ..." SELECT_CHAPTER="Selecione uma capitulo" SELECT_FILE="Selecionar um arquivo:" SLEEP_TIMER="Sleeptimer (time until shutdown)" SLEEP_TIMER_120M="120min" SLEEP_TIMER_15M="15min" SLEEP_TIMER_30M="30min" SLEEP_TIMER_45M="45min" SLEEP_TIMER_60M="60min" SLEEP_TIMER_75M="75min" SLEEP_TIMER_90M="90min" SLEEP_TIMER_OFF="OFF (default)" STREAM_ABITRATE="Audio Bitrate" STREAM_ACODEC="Audio Codec" STREAM_ALBUM="Album" STREAM_ARTIST="Artist" STREAM_ASAMPLES="Audio Samples" STREAM_COMMENT="Comment" STREAM_GENRE="Genre" STREAM_NAME="Name" STREAM_PROPERTIES="Stream Properties" STREAM_RESOLUTION="Resolution" STREAM_TITLE="Title" STREAM_TRACK="Track" STREAM_VBITRATE="Video Bitrate" STREAM_VCODEC="Video Codec" STREAM_YEAR="Year" SUBS_SIZE="Subtitles size" SUBS_SIZE_DEFAULT="Default" SUBS_SIZE_GIANT="Giant" SUBS_SIZE_HUGE="Huge" SUBS_SIZE_LARGE="Large" SUBS_SIZE_SMALL="Small" TV_CHANNELS="Canais de TV ..." TV_INPUT_COMPOSITE="Entrada Composite" TV_INPUT_SVHS="Entrada S-VHS" TV_NORM="Padrao da TV" TV_SETTINGS="Abrir TV" WATCH_DVB="Watch Digital TV (DVB)" WATCH_PVR="Watch PVR" WATCH_TV="Assistir TV" WELCOME_CONSOLE="Bem vindo ao MPlayer" geexbox-1.1/packages/i18n-texts/config/ca.lang0000644000175000017500000000641710641745505017322 0ustar benbenASPECT="Relacio d'aspecte" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="2.35:1" ASPECT_ORIGINAL="Original" AUTOPLAY="Autoplay Mode" AUTOPLAY_DISABLE="Autoplay Disable" AUTOPLAY_ENABLE="Autoplay Enable" CTRLS="Controls" CTRLS_EJECT="Expulsar" CTRLS_PAUSE="Pausa" CTRLS_PLAYLIST="Anar a ..." CTRLS_PREV_NEXT="Ant/Seg" CTRLS_STOP="Stop" DIGI_CHANNELS="Manage Channels" DIGI_CHANNELS_CANCEL="Cancel store" DIGI_CHANNELS_CONFIRM="Confirm store" DIGI_CHANNELS_SELECT="Channel -/+" DIGI_CHANNELS_STORE="Store current frequency" DIGI_RADIO="Radio" DIGI_RADIO_AM="Radio AM" DIGI_RADIO_CHANNELS="Channel -/+" DIGI_RADIO_CONFIG="Configure radio ..." DIGI_RADIO_FM="Radio FM" DIGI_RADIO_OFF="Radio off" DIGI_SAVE_CHANNEL="Save Channel ..." DIGI_TUNING="Manual Tune" DIGI_TUNING_FINE_MINUS="Fine tune -" DIGI_TUNING_FINE_PLUS="Fine tune +" DIGI_TUNING_SEEK_MINUS="Seek station -" DIGI_TUNING_SEEK_PLUS="Seek station +" DVD_PLAYBACK="DVD Playback Method" DVD_PLAYBACK_DIRECT="Direct Playback" DVD_PLAYBACK_DVDNAV="DVD Navigation Menu" FILES_FILTER="Filtre d'arxius" FILES_FILTER_ALL="Mostrar tots els arxius" FILES_FILTER_MEDIA="Mostrar nomes multimedia" IMG_10S="10s" IMG_15M="15min" IMG_15S="15s" IMG_1S="1s" IMG_30S="30s" IMG_3S="3s" IMG_5M="5min" IMG_5S="5s" IMG_60S="1min" IMG_SHOW_DISABLE="Disable slide show" IMG_SHOW_TIMEOUT="Image show timeout" INFO="Informacio" LISTEN_RADIO="Listen Radio ..." LIST_CHANNELS="List of Channels ..." MENU_CONTROLS="Controls" MENU_GEEXBOX="GeeXboX" MENU_HELP="Atjuda" MENU_OPEN="Obrir" MENU_OPTIONS="Opcions" MENU_QUIT="Sortir" OPEN="Obrir" OPEN_FILE="Obrir arxiu ..." OPTIONS="Opcions" OPTIONS_AUTOPLAY="Autoplay mode ..." OPTIONS_DVD_SETTINGS="DVD Settings ..." OPTIONS_FILE_FILTER="Filtre d'arxius ..." OPTIONS_IMG_SHOW="Image show timeout ..." OPTIONS_INFOS="Informacio ..." OPTIONS_RESET_PATH="Reset file open path" OPTIONS_SLEEP_TIMER="Set Sleeptimer ..." OPTIONS_SUBS_SIZE="Subtitles size ..." OPTIONS_TV_NORM="TV Norm ..." OPTIONS_TV_SWITCH="Cambiar sortida TV/CRT" OPTIONS_VSYNC="Cambiar sinc. vertical" PLAYLIST="Anar a" PLAY_CDDA="Reproduir CD-Audio" PLAY_DVD="Reproduir DVD" PLAY_VCD="Reproduir VideoCD / XCD" PREF_CHAPTERS="Chapter selection ..." PREF_PROPERTIES="Stream Properties ..." SELECT_CHAPTER="Select chapter" SELECT_FILE="Selecciona un arxiu:" SLEEP_TIMER="Sleeptimer (time until shutdown)" SLEEP_TIMER_120M="120min" SLEEP_TIMER_15M="15min" SLEEP_TIMER_30M="30min" SLEEP_TIMER_45M="45min" SLEEP_TIMER_60M="60min" SLEEP_TIMER_75M="75min" SLEEP_TIMER_90M="90min" SLEEP_TIMER_OFF="OFF (default)" STREAM_ABITRATE="Audio Bitrate" STREAM_ACODEC="Audio Codec" STREAM_ALBUM="Album" STREAM_ARTIST="Artist" STREAM_ASAMPLES="Audio Samples" STREAM_COMMENT="Comment" STREAM_GENRE="Genre" STREAM_NAME="Name" STREAM_PROPERTIES="Stream Properties" STREAM_RESOLUTION="Resolution" STREAM_TITLE="Title" STREAM_TRACK="Track" STREAM_VBITRATE="Video Bitrate" STREAM_VCODEC="Video Codec" STREAM_YEAR="Year" SUBS_SIZE="Subtitles size" SUBS_SIZE_DEFAULT="Default" SUBS_SIZE_GIANT="Giant" SUBS_SIZE_HUGE="Huge" SUBS_SIZE_LARGE="Large" SUBS_SIZE_SMALL="Small" TV_CHANNELS="TV Channels ..." TV_INPUT_COMPOSITE="Composite Input" TV_INPUT_SVHS="S-VHS Input" TV_NORM="TV Norm" TV_SETTINGS="Obrir TV" WATCH_DVB="Watch Digital TV (DVB)" WATCH_PVR="Watch PVR" WATCH_TV="Obrir TV" WELCOME_CONSOLE="Welcome to MPlayer" geexbox-1.1/packages/i18n-texts/config/cs.lang0000644000175000017500000000643010641745505017337 0ustar benbenASPECT="Pomer stran" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="Cinemaskop" ASPECT_ORIGINAL="Puvodni" AUTOPLAY="Autoplay Mode" AUTOPLAY_DISABLE="Autoplay Disable" AUTOPLAY_ENABLE="Autoplay Enable" CTRLS="Ovladani" CTRLS_EJECT="Vysunout" CTRLS_PAUSE="Pauza" CTRLS_PLAYLIST="Skoc na ..." CTRLS_PREV_NEXT="Predch/Dalsi" CTRLS_STOP="Zastavit" DIGI_CHANNELS="Manage Channels" DIGI_CHANNELS_CANCEL="Cancel store" DIGI_CHANNELS_CONFIRM="Confirm store" DIGI_CHANNELS_SELECT="Channel -/+" DIGI_CHANNELS_STORE="Store current frequency" DIGI_RADIO="Radio" DIGI_RADIO_AM="Radio AM" DIGI_RADIO_CHANNELS="Channel -/+" DIGI_RADIO_CONFIG="Configure radio ..." DIGI_RADIO_FM="Radio FM" DIGI_RADIO_OFF="Radio off" DIGI_SAVE_CHANNEL="Save Channel ..." DIGI_TUNING="Manual Tune" DIGI_TUNING_FINE_MINUS="Fine tune -" DIGI_TUNING_FINE_PLUS="Fine tune +" DIGI_TUNING_SEEK_MINUS="Seek station -" DIGI_TUNING_SEEK_PLUS="Seek station +" DVD_PLAYBACK="DVD Playback Method" DVD_PLAYBACK_DIRECT="Direct Playback" DVD_PLAYBACK_DVDNAV="DVD Navigation Menu" FILES_FILTER="Files Filter" FILES_FILTER_ALL="Zobrazovat vsechny soubory" FILES_FILTER_MEDIA="Zobrazovat pouze multimedialni soubory" IMG_10S="10s" IMG_15M="15min" IMG_15S="15s" IMG_1S="1s" IMG_30S="30s" IMG_3S="3s" IMG_5M="5min" IMG_5S="5s" IMG_60S="1min" IMG_SHOW_DISABLE="Vypnout slide show" IMG_SHOW_TIMEOUT="Image show timeout" INFO="Info" LISTEN_RADIO="Listen Radio ..." LIST_CHANNELS="List of Channels ..." MENU_CONTROLS="Ovladani" MENU_GEEXBOX="GeeXboX" MENU_HELP="Pomoc" MENU_OPEN="Otevrit" MENU_OPTIONS="Volby" MENU_QUIT="Konec" OPEN="Otevrit" OPEN_FILE="Vyber souboru ..." OPTIONS="Volby" OPTIONS_AUTOPLAY="Autoplay mode ..." OPTIONS_DVD_SETTINGS="DVD Settings ..." OPTIONS_FILE_FILTER="Filtr souboru ..." OPTIONS_IMG_SHOW="Nastavit dobu zobrazeni obrazku ..." OPTIONS_INFOS="Informace ..." OPTIONS_RESET_PATH="Reset file open path" OPTIONS_SLEEP_TIMER="Set Sleeptimer ..." OPTIONS_SUBS_SIZE="Subtitles size ..." OPTIONS_TV_NORM="TV Norm ..." OPTIONS_TV_SWITCH="Prepnout TV vystup" OPTIONS_VSYNC="Prepnout vertikalni synch." PLAYLIST="Skoc na" PLAY_CDDA="Prehrat Audio CD" PLAY_DVD="Prehrat DVD" PLAY_VCD="Prehrat VCD / XCD" PREF_CHAPTERS="Vyber kapitol ..." PREF_PROPERTIES="Stream Properties ..." SELECT_CHAPTER="Select chapter" SELECT_FILE="Vyber souboru:" SLEEP_TIMER="Sleeptimer (time until shutdown)" SLEEP_TIMER_120M="120min" SLEEP_TIMER_15M="15min" SLEEP_TIMER_30M="30min" SLEEP_TIMER_45M="45min" SLEEP_TIMER_60M="60min" SLEEP_TIMER_75M="75min" SLEEP_TIMER_90M="90min" SLEEP_TIMER_OFF="OFF (default)" STREAM_ABITRATE="Audio Bitrate" STREAM_ACODEC="Audio Codec" STREAM_ALBUM="Album" STREAM_ARTIST="Artist" STREAM_ASAMPLES="Audio Samples" STREAM_COMMENT="Comment" STREAM_GENRE="Genre" STREAM_NAME="Name" STREAM_PROPERTIES="Stream Properties" STREAM_RESOLUTION="Resolution" STREAM_TITLE="Title" STREAM_TRACK="Track" STREAM_VBITRATE="Video Bitrate" STREAM_VCODEC="Video Codec" STREAM_YEAR="Year" SUBS_SIZE="Subtitles size" SUBS_SIZE_DEFAULT="Default" SUBS_SIZE_GIANT="Giant" SUBS_SIZE_HUGE="Huge" SUBS_SIZE_LARGE="Large" SUBS_SIZE_SMALL="Small" TV_CHANNELS="TV kanaly ..." TV_INPUT_COMPOSITE="Composite Input" TV_INPUT_SVHS="S-VHS Input" TV_NORM="TV Norm" TV_SETTINGS="Soubory TV" WATCH_DVB="Watch Digital TV (DVB)" WATCH_PVR="Watch PVR" WATCH_TV="Soubory TV" WELCOME_CONSOLE="Welcome to MPlayer" geexbox-1.1/packages/i18n-texts/config/de.lang0000644000175000017500000000646010641745505017325 0ustar benbenASPECT="Seitenverhältnis" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="Cinemascope" ASPECT_ORIGINAL="Original" AUTOPLAY="Autoplay Mode" AUTOPLAY_DISABLE="Autoplay Disable" AUTOPLAY_ENABLE="Autoplay Enable" CTRLS="Steuerung" CTRLS_EJECT="Auswerfen" CTRLS_PAUSE="Pause" CTRLS_PLAYLIST="Gehe zu ..." CTRLS_PREV_NEXT="Vorheriges/Nächstes" CTRLS_STOP="Stop" DIGI_CHANNELS="Manage Channels" DIGI_CHANNELS_CANCEL="Cancel store" DIGI_CHANNELS_CONFIRM="Confirm store" DIGI_CHANNELS_SELECT="Channel -/+" DIGI_CHANNELS_STORE="Store current frequency" DIGI_RADIO="Radio" DIGI_RADIO_AM="Radio AM" DIGI_RADIO_CHANNELS="Channel -/+" DIGI_RADIO_CONFIG="Configure radio ..." DIGI_RADIO_FM="Radio FM" DIGI_RADIO_OFF="Radio off" DIGI_SAVE_CHANNEL="Save Channel ..." DIGI_TUNING="Manual Tune" DIGI_TUNING_FINE_MINUS="Fine tune -" DIGI_TUNING_FINE_PLUS="Fine tune +" DIGI_TUNING_SEEK_MINUS="Seek station -" DIGI_TUNING_SEEK_PLUS="Seek station +" DVD_PLAYBACK="DVD Playback Method" DVD_PLAYBACK_DIRECT="Direct Playback" DVD_PLAYBACK_DVDNAV="DVD Navigation Menu" FILES_FILTER="Dateifilter" FILES_FILTER_ALL="Zeige alle Dateien" FILES_FILTER_MEDIA="Zeige nur Media-Dateien" IMG_10S="10s" IMG_15M="15min" IMG_15S="15s" IMG_1S="1s" IMG_30S="30s" IMG_3S="3s" IMG_5M="5min" IMG_5S="5s" IMG_60S="1min" IMG_SHOW_DISABLE="Diashow abschalten" IMG_SHOW_TIMEOUT="Anzeigedauer der Bilder" INFO="Info" LISTEN_RADIO="Radio hören..." LIST_CHANNELS="Kanalliste ..." MENU_CONTROLS="Steuerung" MENU_GEEXBOX="GeeXboX" MENU_HELP="Hilfe" MENU_OPEN="Öffnen" MENU_OPTIONS="Optionen" MENU_QUIT="Beenden" OPEN="Öffnen" OPEN_FILE="Öffne Datei ..." OPTIONS="Optionen" OPTIONS_AUTOPLAY="Autoplay Modus ..." OPTIONS_DVD_SETTINGS="DVD Settings ..." OPTIONS_FILE_FILTER="Dateifilter ..." OPTIONS_IMG_SHOW="Anzeigedauer der Bilder ..." OPTIONS_INFOS="Info ..." OPTIONS_RESET_PATH="Setze Datei öffnen Pfad zurück" OPTIONS_SLEEP_TIMER="Sleeptimer einstellen ..." OPTIONS_SUBS_SIZE="Subtitles size ..." OPTIONS_TV_NORM="TV Norm ..." OPTIONS_TV_SWITCH="Aktiviere TV-Ausgang" OPTIONS_VSYNC="Ändere vertikale Synchronisation" PLAYLIST="Gehe zu" PLAY_CDDA="Spiele Audio CD" PLAY_DVD="Spiele DVD" PLAY_VCD="Spiele VCD / XCD" PREF_CHAPTERS="Kapitelauswahl ..." PREF_PROPERTIES="Stream Eigenschaften ..." SELECT_CHAPTER="Kapitel auswählen" SELECT_FILE="Datei auswählen:" SLEEP_TIMER="Sleeptimer (Zeit bis zum Ausschalten)" SLEEP_TIMER_120M="120min" SLEEP_TIMER_15M="15min" SLEEP_TIMER_30M="30min" SLEEP_TIMER_45M="45min" SLEEP_TIMER_60M="60min" SLEEP_TIMER_75M="75min" SLEEP_TIMER_90M="90min" SLEEP_TIMER_OFF="Aus (default)" STREAM_ABITRATE="Audio Bitrate" STREAM_ACODEC="Audio Codec" STREAM_ALBUM="Album" STREAM_ARTIST="Artist" STREAM_ASAMPLES="Audio Samples" STREAM_COMMENT="Comment" STREAM_GENRE="Genre" STREAM_NAME="Name" STREAM_PROPERTIES="Stream Eigenschaften" STREAM_RESOLUTION="Resolution" STREAM_TITLE="Title" STREAM_TRACK="Track" STREAM_VBITRATE="Video Bitrate" STREAM_VCODEC="Video Codec" STREAM_YEAR="Year" SUBS_SIZE="Subtitles size" SUBS_SIZE_DEFAULT="Default" SUBS_SIZE_GIANT="Giant" SUBS_SIZE_HUGE="Huge" SUBS_SIZE_LARGE="Large" SUBS_SIZE_SMALL="Small" TV_CHANNELS="TV Kanäle ..." TV_INPUT_COMPOSITE="Composite Eingang" TV_INPUT_SVHS="S-VHS Engang" TV_NORM="TV Norm" TV_SETTINGS="Öffne TV" WATCH_DVB="Digital TV (DVB) sehen..." WATCH_PVR="Watch PVR" WATCH_TV="TV sehen..." WELCOME_CONSOLE="Willkommen" geexbox-1.1/packages/i18n-texts/config/el.lang0000644000175000017500000001171710641745505017336 0ustar benbenASPECT="Όψη" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="Cinemascope" ASPECT_ORIGINAL="Γνήσιο" AUTOPLAY="Αυτόματη αναπαÏαγωγή" AUTOPLAY_DISABLE="ΑπενεÏγοποίηση αυτόματης αναπαÏαγωγής" AUTOPLAY_ENABLE="ΕνεÏγοποίηση αυτόματης αναπαÏαγωγής" CTRLS="ΧειÏισμός" CTRLS_EJECT="Εξαγωγή" CTRLS_PAUSE="ΠαÏση" CTRLS_PLAYLIST="Λίστα αναπαÏαγωγής ..." CTRLS_PREV_NEXT="ΠÏοηγοÏμενο/Επόμενο" CTRLS_STOP="Στοπ" DIGI_CHANNELS="ΧειÏισμός Καναλιών" DIGI_CHANNELS_CANCEL="ΑκÏÏωση αποθήκευσης" DIGI_CHANNELS_CONFIRM="Επιβεβαίωση αποθήκευσης" DIGI_CHANNELS_SELECT="Κανάλι -/+" DIGI_CHANNELS_STORE="Αποθήκευση Ï„Ïέχουσας συχνότητας" DIGI_RADIO="Ραδιόφωνο" DIGI_RADIO_AM="Radio AM" DIGI_RADIO_CHANNELS="Κανάλι -/+" DIGI_RADIO_CONFIG="ΡÏθμιση Ïαδιοφώνου ..." DIGI_RADIO_FM="Radio FM" DIGI_RADIO_OFF="ΑπενεÏγοποίηση Ïαδιοφώνου" DIGI_SAVE_CHANNEL="Αποθήκευση ÎºÎ±Î½Î±Î»Î¹Î¿Ï ..." DIGI_TUNING="ΧειÏοκίνητος συντονισμός" DIGI_TUNING_FINE_MINUS="ΜικÏο-συντονισμός -" DIGI_TUNING_FINE_PLUS="ΜικÏο-συντονισμός +" DIGI_TUNING_SEEK_MINUS="Αναζήτηση ÏƒÏ„Î±Î¸Î¼Î¿Ï -" DIGI_TUNING_SEEK_PLUS="Αναζήτηση ÏƒÏ„Î±Î¸Î¼Î¿Ï +" DVD_PLAYBACK="Μέθοδος αναπαÏαγωγής DVD" DVD_PLAYBACK_DIRECT="Απευθείας αναπαÏαγωγή" DVD_PLAYBACK_DVDNAV="Με Î¼ÎµÎ½Î¿Ï Ï€Î»Î¿Î®Î³Î·ÏƒÎ·Ï‚" FILES_FILTER="ΦίλτÏο αÏχείων" FILES_FILTER_ALL="Εμφάνιση όλων των αÏχείων" FILES_FILTER_MEDIA="Εμφάνιση μόνο των αÏχείων πολυμέσων" IMG_10S="10 δευτ." IMG_15M="15 λεπτά" IMG_15S="15 δευτ." IMG_1S="1 δευτ." IMG_30S="30 δευτ." IMG_3S="3 δευτ." IMG_5M="5 λεπτά" IMG_5S="5 δευτ." IMG_60S="1 λεπτό" IMG_SHOW_DISABLE="ΑπενεÏγοποίηση παÏσης" IMG_SHOW_TIMEOUT="ΠαÏση ανάμεσα στην Ï€Ïοβολή εικόνων" INFO="ΠληÏοφοÏίες" LISTEN_RADIO="ΑκÏόαση Ραδιοφώνου ..." LIST_CHANNELS="Λίστα Σταθμών ..." MENU_CONTROLS="ΧειÏισμός" MENU_GEEXBOX="GeeXboX" MENU_HELP="Βοήθεια" MENU_OPEN="Άνοιγμα" MENU_OPTIONS="Επιλογές" MENU_QUIT="Έξοδος" OPEN="Άνοιγμα" OPEN_FILE="Άνοιγμα αÏχείου ..." OPTIONS="Επιλογές" OPTIONS_AUTOPLAY="Αυτόματη αναπαÏαγωγή ..." OPTIONS_DVD_SETTINGS="Επιλογές DVD ..." OPTIONS_FILE_FILTER="ΦίλτÏο αÏχείων ..." OPTIONS_IMG_SHOW="ΠαÏση ανάμεσα στην Ï€Ïοβολή εικόνων ..." OPTIONS_INFOS="ΠληÏοφοÏίες ..." OPTIONS_RESET_PATH="ΕπαναφοÏά Ï€ÏοκαθοÏισμένης διαδÏομής αÏχείων" OPTIONS_SLEEP_TIMER="ΟÏισμός χÏονοδιακόπτη Sleeptimer ..." OPTIONS_SUBS_SIZE="Μέγεθος υπότιτλων ..." OPTIONS_TV_NORM="ΤÏπος τηλεόÏασης ..." OPTIONS_TV_SWITCH="Αλλαγή σε TV-Out" OPTIONS_VSYNC="Αλλαγή σε κάθετο συνχÏονισμό" PLAYLIST="Λίστα αναπαÏαγωγής" PLAY_CDDA="Παίξε μουσικό CD" PLAY_DVD="Παίξε DVD" PLAY_VCD="Παίξε VCD / XCD" PREF_CHAPTERS="Επιλογή κεφαλαίου ..." PREF_PROPERTIES="Ιδιότητες αναπαÏαχθείσας Ïοής ..." SELECT_CHAPTER="Επιλογή κεφαλαίου" SELECT_FILE="Επιλέξτε ένα αÏχείο:" SLEEP_TIMER="Sleeptimer (χÏόνος για απενεÏγοποίηση Η/Î¥)" SLEEP_TIMER_120M="120min" SLEEP_TIMER_15M="15min" SLEEP_TIMER_30M="30min" SLEEP_TIMER_45M="45min" SLEEP_TIMER_60M="60min" SLEEP_TIMER_75M="75min" SLEEP_TIMER_90M="90min" SLEEP_TIMER_OFF="OFF (Ï€Ïοεπιλογή)" STREAM_ABITRATE="Audio Bitrate" STREAM_ACODEC="Audio Codec" STREAM_ALBUM="Album" STREAM_ARTIST="Artist" STREAM_ASAMPLES="Audio Samples" STREAM_COMMENT="Comment" STREAM_GENRE="Genre" STREAM_NAME="Name" STREAM_PROPERTIES="Ιδιότητες αναπαÏαχθείσας Ïοής" STREAM_RESOLUTION="Resolution" STREAM_TITLE="Title" STREAM_TRACK="Track" STREAM_VBITRATE="Video Bitrate" STREAM_VCODEC="Video Codec" STREAM_YEAR="Year" SUBS_SIZE="Μέγεθος υπότιτλων" SUBS_SIZE_DEFAULT="ΠÏοεπιλεγμένο" SUBS_SIZE_GIANT="Γιγαντιαίο" SUBS_SIZE_HUGE="ΤεÏάστιο" SUBS_SIZE_LARGE="Μεγάλο" SUBS_SIZE_SMALL="ΜικÏÏŒ" TV_CHANNELS="Κανάλια τηλεόÏασης ..." TV_INPUT_COMPOSITE="Είσοδος Composite" TV_INPUT_SVHS="Είσοδος S-VHS" TV_NORM="ΤÏπος τηλεόÏασης" TV_SETTINGS="ΠÏοβολή τηλεόÏασης" WATCH_DVB="ΠÏοβολή ψηφιακής τηλεόÏασης (DVB)" WATCH_PVR="Watch PVR" WATCH_TV="ΠÏοβολή τηλεόÏασης" WELCOME_CONSOLE="Καλώς ήÏθατε στον MPlayer" geexbox-1.1/packages/i18n-texts/config/en.lang0000644000175000017500000000767610641745505017351 0ustar benbenASPECT="Aspect" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="Cinemascope" ASPECT_ORIGINAL="Original" AUDIO_DELAY="Delay" AUDIO_MUTE="Mute" AUDIO_PREF="Audio Preferences" AUDIO_STREAMS="Audio Stream" AUDIO_VOLUME="Volume" AUTOPLAY="Autoplay mode" AUTOPLAY_DISABLE="Autoplay Disable" AUTOPLAY_ENABLE="Autoplay Enable" COLORS_BRIGHTNESS="Brightness" COLORS_CONTRAST="Contrast" COLORS_GAMMA="Gamma" COLORS_HUE="Hue" COLORS_PREF="Colors" COLORS_SATURATION="Saturation" CTRLS="Controls" CTRLS_EJECT="Eject" CTRLS_PAUSE="Pause" CTRLS_PLAYLIST="Playlist ..." CTRLS_PREV_NEXT="Prev/Next" CTRLS_STOP="Stop" DEMUXER_NAME="Demuxer" DIGI_CHANNELS="Manage Channels" DIGI_CHANNELS_CANCEL="Cancel store" DIGI_CHANNELS_CONFIRM="Confirm store" DIGI_CHANNELS_SELECT="Select channel -/+" DIGI_CHANNELS_STORE="Store current frequency" DIGI_RADIO="Radio" DIGI_RADIO_AM="Radio AM" DIGI_RADIO_CHANNELS="Channel -/+" DIGI_RADIO_CONFIG="Configure radio ..." DIGI_RADIO_FM="Radio FM" DIGI_RADIO_OFF="Radio off" DIGI_SAVE_CHANNEL="Save Channel ..." DIGI_TUNING="Manual Tune" DIGI_TUNING_FINE_MINUS="Fine tune -" DIGI_TUNING_FINE_PLUS="Fine tune +" DIGI_TUNING_SEEK_MINUS="Seek station -" DIGI_TUNING_SEEK_PLUS="Seek station +" DVD_PLAYBACK="DVD Playback Method" DVD_PLAYBACK_DIRECT="Direct Playback" DVD_PLAYBACK_DVDNAV="DVD Navigation Menu" FILES_FILTER="Files Filter" FILES_FILTER_ALL="Display all Files" FILES_FILTER_MEDIA="Display Media Files Only" IMG_10S="10s" IMG_15M="15min" IMG_15S="15s" IMG_1S="1s" IMG_30S="30s" IMG_3S="3s" IMG_5M="5min" IMG_5S="5s" IMG_60S="1min" IMG_SHOW_DISABLE="Disable slide show" IMG_SHOW_TIMEOUT="Image show timeout" INFO="Info" LISTEN_RADIO="Listen to Radio ..." LIST_CHANNELS="List of Channels ..." LOAD_SUB="Load subtitle ..." LOAD_SUB_FILE="Load a Subtitle:" MENU_CONTROLS="Controls" MENU_GEEXBOX="GeeXboX" MENU_HELP="Help" MENU_OPEN="Open" MENU_OPTIONS="Options" MENU_PREFERENCES="Preferences" MENU_QUIT="Quit" OPEN="Open" OPEN_FILE="Open file ..." OPTIONS="Options" OPTIONS_AUTOPLAY="Autoplay mode ..." OPTIONS_DVD_SETTINGS="DVD Settings ..." OPTIONS_FILE_FILTER="Files Filter ..." OPTIONS_IMG_SHOW="Image show timeout ..." OPTIONS_INFOS="Info ..." OPTIONS_RESET_PATH="Reset file open path" OPTIONS_SLEEP_TIMER="Set Sleeptimer ..." OPTIONS_SUBS_SIZE="Subtitles size ..." OPTIONS_TV_NORM="TV Norm ..." OPTIONS_TV_SWITCH="Switch TV-Out" OPTIONS_VSYNC="Switch Vertical Sync" PLAYLIST="Playlist" PLAY_CDDA="Play Audio CD" PLAY_DVD="Play DVD" PLAY_VCD="Play VCD / XCD" PREFERENCES="Preferences" PREF_AUDIO="Audio ..." PREF_CHAPTERS="Chapter selection ..." PREF_PROPERTIES="Stream Properties ..." PREF_SUBS="Subtitles ..." PREF_VIDEO="Video ..." SELECT_CHAPTER="Select chapter" SELECT_FILE="Select a file:" SLEEP_TIMER="Sleeptimer (time until shutdown)" SLEEP_TIMER_120M="120min" SLEEP_TIMER_15M="15min" SLEEP_TIMER_30M="30min" SLEEP_TIMER_45M="45min" SLEEP_TIMER_60M="60min" SLEEP_TIMER_75M="75min" SLEEP_TIMER_90M="90min" SLEEP_TIMER_OFF="OFF (default)" SPEED="Speed" STREAM_ABITRATE="Audio Bitrate" STREAM_ACODEC="Audio Codec" STREAM_ALBUM="Album" STREAM_ARTIST="Artist" STREAM_ASAMPLES="Audio Samples" STREAM_COMMENT="Comment" STREAM_GENRE="Genre" STREAM_NAME="Name" STREAM_PROPERTIES="Stream Properties" STREAM_RESOLUTION="Resolution" STREAM_TITLE="Title" STREAM_TRACK="Track" STREAM_VBITRATE="Video Bitrate" STREAM_VCODEC="Video Codec" STREAM_YEAR="Year" SUBS="Subtitles" SUBS_DELAY="Delay" SUBS_FORCED="Forced sub only" SUBS_POSITION="Position" SUBS_PREF="Subtitles" SUBS_SIZE="Subtitles size" SUBS_SIZE_DEFAULT="Default" SUBS_SIZE_GIANT="Giant" SUBS_SIZE_HUGE="Huge" SUBS_SIZE_LARGE="Large" SUBS_SIZE_SMALL="Small" SUBS_VISIBILITY="Visibility" TV_CHANNELS="TV Channels ..." TV_INPUT_COMPOSITE="Composite Input" TV_INPUT_SVHS="S-VHS Input" TV_NORM="TV Norm" TV_SETTINGS="Watch TV" VIDEO_ASPECT="Aspect Ratio ..." VIDEO_COLORS="Colors ..." VIDEO_FRAMEDROP="Frame dropping" VIDEO_PREF="Video" WATCH_DVB="Watch Digital TV (DVB)" WATCH_PVR="Watch PVR" WATCH_TV="Watch TV" WELCOME_CONSOLE="Welcome to MPlayer" geexbox-1.1/packages/i18n-texts/config/es.lang0000644000175000017500000000642710641745505017347 0ustar benbenASPECT="Relación de aspecto" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="2.35:1" ASPECT_ORIGINAL="Original" AUTOPLAY="Reproducción automática" AUTOPLAY_DISABLE="Desactivada" AUTOPLAY_ENABLE="Activada" CTRLS="Controles" CTRLS_EJECT="Expulsar" CTRLS_PAUSE="Pausa" CTRLS_PLAYLIST="Ir a..." CTRLS_PREV_NEXT="Ant/Sigte" CTRLS_STOP="Stop" DIGI_CHANNELS="Gestión de memorias" DIGI_CHANNELS_CANCEL="Cancelar" DIGI_CHANNELS_CONFIRM="Confirmar" DIGI_CHANNELS_SELECT="Emisora -/+" DIGI_CHANNELS_STORE="Memorizar frecuencia" DIGI_RADIO="Radio" DIGI_RADIO_AM="Radio AM" DIGI_RADIO_CHANNELS="Emisora -/+" DIGI_RADIO_CONFIG="Configurar radio..." DIGI_RADIO_FM="Radio FM" DIGI_RADIO_OFF="Dehabilitada" DIGI_SAVE_CHANNEL="Guardar emisora..." DIGI_TUNING="Sintonización Manual" DIGI_TUNING_FINE_MINUS="Sintonización fina -" DIGI_TUNING_FINE_PLUS="Sintonización fina +" DIGI_TUNING_SEEK_MINUS="Buscar Emisora -" DIGI_TUNING_SEEK_PLUS="Buscar Emisora +" DVD_PLAYBACK="Reproducción del DVD" DVD_PLAYBACK_DIRECT="Solo película" DVD_PLAYBACK_DVDNAV="Menú del DVD" FILES_FILTER="Filtro de archivos" FILES_FILTER_ALL="Mostrar todos los archivos" FILES_FILTER_MEDIA="Mostrar solo multimedia" IMG_10S="10s" IMG_15M="15min" IMG_15S="15s" IMG_1S="1s" IMG_30S="30s" IMG_3S="3s" IMG_5M="5min" IMG_5S="5s" IMG_60S="1min" IMG_SHOW_DISABLE="Deshabilitado" IMG_SHOW_TIMEOUT="Cambio de fotografias" INFO="Informacion" LISTEN_RADIO="Radio" LIST_CHANNELS="Lista de canales..." MENU_CONTROLS="Controles" MENU_GEEXBOX="GeeXboX" MENU_HELP="Ayuda" MENU_OPEN="Abrir" MENU_OPTIONS="Opciones" MENU_QUIT="Salir" OPEN="Abrir" OPEN_FILE="Archivo" OPTIONS="Ajustes" OPTIONS_AUTOPLAY="Reproducción automática..." OPTIONS_DVD_SETTINGS="Ajustes del DVD..." OPTIONS_FILE_FILTER="Filtro de archivos..." OPTIONS_IMG_SHOW="Cambio de fotografias..." OPTIONS_INFOS="Información..." OPTIONS_RESET_PATH="Restablecer carpeta por defecto" OPTIONS_SLEEP_TIMER="Apagado automático..." OPTIONS_TV_NORM="Norma de TV..." OPTIONS_TV_SWITCH="Cambiar salida TV/Monitor" OPTIONS_VSYNC="Cambiar sinc. vertical" PLAYLIST="Ir a" PLAY_CDDA="CD de música" PLAY_DVD="DVD" PLAY_VCD="VideoCD / XCD" PREF_CHAPTERS="Capítulos..." PREF_PROPERTIES="Propiedades del archivo..." SELECT_CHAPTER="Seleccionar un capítulo" SELECT_FILE="Seleccionar un archivo:" SLEEP_TIMER="Apagado automatico en..." SLEEP_TIMER_120M="120min" SLEEP_TIMER_15M="15min" SLEEP_TIMER_30M="30min" SLEEP_TIMER_45M="45min" SLEEP_TIMER_60M="60min" SLEEP_TIMER_75M="75min" SLEEP_TIMER_90M="90min" SLEEP_TIMER_OFF="Desactivado" STREAM_ABITRATE="Audio Bitrate" STREAM_ACODEC="Audio Codec" STREAM_ALBUM="Album" STREAM_ARTIST="Artist" STREAM_ASAMPLES="Audio Samples" STREAM_COMMENT="Comment" STREAM_GENRE="Genre" STREAM_NAME="Name" STREAM_PROPERTIES="Propiedades del archivo" STREAM_RESOLUTION="Resolution" STREAM_TITLE="Title" STREAM_TRACK="Track" STREAM_VBITRATE="Video Bitrate" STREAM_VCODEC="Video Codec" STREAM_YEAR="Year" SUBS_SIZE="Tamaño de Subtítulos" SUBS_SIZE_DEFAULT="Normal" SUBS_SIZE_GIANT="Gigante" SUBS_SIZE_HUGE="Muy grande" SUBS_SIZE_LARGE="Grande" SUBS_SIZE_SMALL="Pequeño" TV_CHANNELS="Canales..." TV_INPUT_COMPOSITE="Vídeo compuesto" TV_INPUT_SVHS="S-VHS" TV_NORM="Norma de TV" TV_SETTINGS="Televisión" WATCH_DVB="Satélite / TDT" WATCH_PVR="Watch PVR" WATCH_TV="Televisión" WELCOME_CONSOLE="Bienvenido a GeeXbox" geexbox-1.1/packages/i18n-texts/config/et.lang0000644000175000017500000001020010641745505017330 0ustar benbenASPECT="Kõrguse ja laiuse suhe" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="Laiekraan" ASPECT_ORIGINAL="Originaal" AUDIO_DELAY="Viivitus" AUDIO_MUTE="Helitu" AUDIO_PREF="Hääle seaded" AUDIO_STREAMS="Audio Stream" AUDIO_VOLUME="Helitugevus" AUTOPLAY="Automaatmängimine" AUTOPLAY_DISABLE="Keela automaatmängimine" AUTOPLAY_ENABLE="Luba automaatmängimine" COLORS_BRIGHTNESS="Heledus" COLORS_CONTRAST="Kontrastsus" COLORS_GAMMA="Gamma" COLORS_HUE="Värvitoon" COLORS_PREF="Värvid" COLORS_SATURATION="Küllastus" CTRLS="Juhtimisseadmed" CTRLS_EJECT="Ava cd-rom" CTRLS_PAUSE="Paus" CTRLS_PLAYLIST="Playlist ..." CTRLS_PREV_NEXT="Eelmine/Järgmine" CTRLS_STOP="Stop" DEMUXER_NAME="Demuxer" DIGI_CHANNELS="Kanalihaldus" DIGI_CHANNELS_CANCEL="Tühista salvestus" DIGI_CHANNELS_CONFIRM="Kinnita salvestus" DIGI_CHANNELS_SELECT="Vali kanal -/+" DIGI_CHANNELS_STORE="Salvesta praegune sagedus" DIGI_RADIO="Raadio" DIGI_RADIO_AM="Raadio AM" DIGI_RADIO_CHANNELS="Kanal -/+" DIGI_RADIO_CONFIG="Konfigureeri raadiot ..." DIGI_RADIO_FM="Raadio FM" DIGI_RADIO_OFF="Raadio kinni" DIGI_SAVE_CHANNEL="Salvesta kanal ..." DIGI_TUNING="Käsitsi otsing" DIGI_TUNING_FINE_MINUS="Peen häälestus -" DIGI_TUNING_FINE_PLUS="Peen häälestus +" DIGI_TUNING_SEEK_MINUS="Otsi jaama -" DIGI_TUNING_SEEK_PLUS="Otsi jaama +" DVD_PLAYBACK="DVD mängimise meetod" DVD_PLAYBACK_DIRECT="Otsene mahamängimine" DVD_PLAYBACK_DVDNAV="DVD Navigatsiooni menüü" FILES_FILTER="Failide Filter" FILES_FILTER_ALL="Näita kõiki faile" FILES_FILTER_MEDIA="Näita ainult meediafaile" IMG_10S="10s" IMG_15M="15min" IMG_15S="15s" IMG_1S="1s" IMG_30S="30s" IMG_3S="3s" IMG_5M="5min" IMG_5S="5s" IMG_60S="1min" IMG_SHOW_DISABLE="Keela slaidishow" IMG_SHOW_TIMEOUT="Piltide vahetamise aeg" INFO="Info" LISTEN_RADIO="Kuula raadiot ..." LIST_CHANNELS="Kanalite valik ..." LOAD_SUB="Lae subtiitrid ..." LOAD_SUB_FILE="Lae subtiiter:" MENU_CONTROLS="Juhtimisseadmed" MENU_GEEXBOX="GeeXboX" MENU_HELP="Abi" MENU_OPEN="Ava" MENU_OPTIONS="Seadistused" MENU_PREFERENCES="Valikud" MENU_QUIT="Välju" OPEN="Ava" OPEN_FILE="Ava fail ..." OPTIONS="Seadistused" OPTIONS_AUTOPLAY="Automaatmängimise viis ..." OPTIONS_DVD_SETTINGS="DVD Sätted ..." OPTIONS_FILE_FILTER="Failide Filter ..." OPTIONS_IMG_SHOW="Piltide vahetamise aeg ..." OPTIONS_INFOS="Info ..." OPTIONS_RESET_PATH="Taasta faili avamise tee" OPTIONS_SLEEP_TIMER="Unetaimer ..." OPTIONS_SUBS_SIZE="Subtiitrite suurus ..." OPTIONS_TV_NORM="TV Norm ..." OPTIONS_TV_SWITCH="Vaheta TV-Out" OPTIONS_VSYNC="Vaheta Vertical Sync" PLAYLIST="Playlist" PLAY_CDDA="Mängi muusika CD-d" PLAY_DVD="Mängi DVD-d" PLAY_VCD="Mängi VCD / XCD" PREFERENCES="Valikud" PREF_AUDIO="Heli ..." PREF_CHAPTERS="Peatüki valik ..." PREF_PROPERTIES="Stream valikud ..." PREF_SUBS="Subtiitrid ..." PREF_VIDEO="Video ..." SELECT_CHAPTER="Vali peatükk" SELECT_FILE="Vali fail:" SLEEP_TIMER="Unetaimer (aeg shutdownini)" SLEEP_TIMER_120M="120min" SLEEP_TIMER_15M="15min" SLEEP_TIMER_30M="30min" SLEEP_TIMER_45M="45min" SLEEP_TIMER_60M="60min" SLEEP_TIMER_75M="75min" SLEEP_TIMER_90M="90min" SLEEP_TIMER_OFF="OFF (default)" SPEED="Kiirus" STREAM_ABITRATE="Heli Bitrate" STREAM_ACODEC="Heli Codec" STREAM_ALBUM="Album" STREAM_ARTIST="Artist" STREAM_ASAMPLES="Heli näited" STREAM_COMMENT="Kommentaar" STREAM_GENRE="Zanr" STREAM_NAME="Nimi" STREAM_PROPERTIES="Stream valikud" STREAM_RESOLUTION="Resolutsioon" STREAM_TITLE="Pelkiri" STREAM_TRACK="Lugu" STREAM_VBITRATE="Video Bitrate" STREAM_VCODEC="Video Codec" STREAM_YEAR="Aasta" SUBS="Subtitiitrid" SUBS_DELAY="Viivitus" SUBS_FORCED="Ainult määratud subtiitrid" SUBS_POSITION="Positsioon" SUBS_PREF="Subtiitrid" SUBS_SIZE="Subtiitrite suurus" SUBS_SIZE_DEFAULT="Tavaline" SUBS_SIZE_GIANT="Ülisuur" SUBS_SIZE_HUGE="Väga suur" SUBS_SIZE_LARGE="Suur" SUBS_SIZE_SMALL="Väike" SUBS_VISIBILITY="Nähtavus" TV_CHANNELS="TV kanalid ..." TV_INPUT_COMPOSITE="Composite sisend" TV_INPUT_SVHS="S-VHS sisend" TV_NORM="TV Norm" TV_SETTINGS="Vaata TV-d" VIDEO_ASPECT="Kõrguse ja laiuse suhe ..." VIDEO_COLORS="Värvid ..." VIDEO_FRAMEDROP="Frame dropping" VIDEO_PREF="Video" WATCH_DVB="Vaata Digitaal TV-d (DVB)" WATCH_PVR="Vaata PVR-i" WATCH_TV="Vaata TV-d" WELCOME_CONSOLE="Welcome to MPlayer" geexbox-1.1/packages/i18n-texts/config/fi.lang0000644000175000017500000000651010641745505017327 0ustar benbenASPECT="Kuvasuhde" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="Laajakangas" ASPECT_ORIGINAL="Alkuperäinen" AUTOPLAY="Autoplay Mode" AUTOPLAY_DISABLE="Autoplay Disable" AUTOPLAY_ENABLE="Autoplay Enable" CTRLS="Ohjaus" CTRLS_EJECT="Poista CD" CTRLS_PAUSE="Tauko" CTRLS_PLAYLIST="Siirry kohtaan ..." CTRLS_PREV_NEXT="Edellinen/Seuraava" CTRLS_STOP="Pysäytä" DIGI_CHANNELS="Manage Channels" DIGI_CHANNELS_CANCEL="Cancel store" DIGI_CHANNELS_CONFIRM="Confirm store" DIGI_CHANNELS_SELECT="Channel -/+" DIGI_CHANNELS_STORE="Store current frequency" DIGI_RADIO="Radio" DIGI_RADIO_AM="Radio AM" DIGI_RADIO_CHANNELS="Channel -/+" DIGI_RADIO_CONFIG="Configure radio ..." DIGI_RADIO_FM="Radio FM" DIGI_RADIO_OFF="Radio off" DIGI_SAVE_CHANNEL="Save Channel ..." DIGI_TUNING="Manual Tune" DIGI_TUNING_FINE_MINUS="Fine tune -" DIGI_TUNING_FINE_PLUS="Fine tune +" DIGI_TUNING_SEEK_MINUS="Seek station -" DIGI_TUNING_SEEK_PLUS="Seek station +" DVD_PLAYBACK="DVD Playback Method" DVD_PLAYBACK_DIRECT="Direct Playback" DVD_PLAYBACK_DVDNAV="DVD Navigation Menu" FILES_FILTER="Tiedostojen suodin" FILES_FILTER_ALL="Näytä kaikki tiedostot" FILES_FILTER_MEDIA="Näytä vain mediatiedostot" IMG_10S="10s" IMG_15M="15min" IMG_15S="15s" IMG_1S="1s" IMG_30S="30s" IMG_3S="3s" IMG_5M="5min" IMG_5S="5s" IMG_60S="1min" IMG_SHOW_DISABLE="Diaesitys pois käytöstä" IMG_SHOW_TIMEOUT="Diaesityksen väliaika" INFO="Info" LISTEN_RADIO="Listen Radio ..." LIST_CHANNELS="List of Channels ..." MENU_CONTROLS="Ohjaus" MENU_GEEXBOX="GeeXboX" MENU_HELP="Ohje" MENU_OPEN="Avaa" MENU_OPTIONS="Asetukset" MENU_QUIT="Poistu" OPEN="Avaa" OPEN_FILE="Avaa tiedosto ..." OPTIONS="Asetukset" OPTIONS_AUTOPLAY="Autoplay mode ..." OPTIONS_DVD_SETTINGS="DVD Settings ..." OPTIONS_FILE_FILTER="Tiedostojen suodin ..." OPTIONS_IMG_SHOW="Diaesityksen väliaika ..." OPTIONS_INFOS="Tietoja ..." OPTIONS_RESET_PATH="Reset file open path" OPTIONS_SLEEP_TIMER="Set Sleeptimer ..." OPTIONS_SUBS_SIZE="Subtitles size ..." OPTIONS_TV_NORM="TV-normi ..." OPTIONS_TV_SWITCH="Vaihda TV-ulostulo" OPTIONS_VSYNC="Vaihda pystytahdistus" PLAYLIST="Siirry kohtaan" PLAY_CDDA="Toista musiikki-CD" PLAY_DVD="Toista DVD" PLAY_VCD="Toista VCD / XCD" PREF_CHAPTERS="Kappalevalikko ..." PREF_PROPERTIES="Stream Properties ..." SELECT_CHAPTER="Valitse kappale" SELECT_FILE="Valitse tiedost:" SLEEP_TIMER="Sleeptimer (time until shutdown)" SLEEP_TIMER_120M="120min" SLEEP_TIMER_15M="15min" SLEEP_TIMER_30M="30min" SLEEP_TIMER_45M="45min" SLEEP_TIMER_60M="60min" SLEEP_TIMER_75M="75min" SLEEP_TIMER_90M="90min" SLEEP_TIMER_OFF="OFF (default)" STREAM_ABITRATE="Audio Bitrate" STREAM_ACODEC="Audio Codec" STREAM_ALBUM="Album" STREAM_ARTIST="Artist" STREAM_ASAMPLES="Audio Samples" STREAM_COMMENT="Comment" STREAM_GENRE="Genre" STREAM_NAME="Name" STREAM_PROPERTIES="Stream Properties" STREAM_RESOLUTION="Resolution" STREAM_TITLE="Title" STREAM_TRACK="Track" STREAM_VBITRATE="Video Bitrate" STREAM_VCODEC="Video Codec" STREAM_YEAR="Year" SUBS_SIZE="Subtitles size" SUBS_SIZE_DEFAULT="Default" SUBS_SIZE_GIANT="Giant" SUBS_SIZE_HUGE="Huge" SUBS_SIZE_LARGE="Large" SUBS_SIZE_SMALL="Small" TV_CHANNELS="TV-kanavat ..." TV_INPUT_COMPOSITE="Komposiittisisääntulo" TV_INPUT_SVHS="S-VHS -sisääntulo" TV_NORM="TV-normi" TV_SETTINGS="Katso TV:tä" WATCH_DVB="Watch Digital TV (DVB)" WATCH_PVR="Watch PVR" WATCH_TV="Katso TV:tä" WELCOME_CONSOLE="Tervetuloa MPlayeriin" geexbox-1.1/packages/i18n-texts/config/fr.lang0000644000175000017500000001053110641745505017336 0ustar benbenASPECT="Aspect" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="Cinémascope" ASPECT_ORIGINAL="Original" AUDIO_DELAY="Délai" AUDIO_MUTE="Muet" AUDIO_PREF="Préférences Audio" AUDIO_STREAMS="Canal Audio" AUDIO_VOLUME="Volume" AUTOPLAY="Mode de lecture automatique" AUTOPLAY_DISABLE="Désactiver la lecture automatique" AUTOPLAY_ENABLE="Activer la lecture automatique" COLORS_BRIGHTNESS="Luminosité" COLORS_CONTRAST="Contraste" COLORS_GAMMA="Gamma" COLORS_HUE="Teinte" COLORS_PREF="Couleurs" COLORS_SATURATION="Saturation" CTRLS="Contrôles" CTRLS_EJECT="Ejecter" CTRLS_PAUSE="Pause" CTRLS_PLAYLIST="Aller à ..." CTRLS_PREV_NEXT="Précédent/Suivant" CTRLS_STOP="Stop" DEMUXER_NAME="Demuxeur" DIGI_CHANNELS="Gestion des canaux" DIGI_CHANNELS_CANCEL="Annuler l'enregistrement" DIGI_CHANNELS_CONFIRM="Confirmer l'enregistrement" DIGI_CHANNELS_SELECT="Canaux -/+" DIGI_CHANNELS_STORE="Sauver la fréquence courante" DIGI_RADIO="Radio" DIGI_RADIO_AM="Radio AM" DIGI_RADIO_CHANNELS="Canaux -/+" DIGI_RADIO_CONFIG="Configurer la radio ..." DIGI_RADIO_FM="Radio FM" DIGI_RADIO_OFF="Radio off" DIGI_SAVE_CHANNEL="Mémoriser le canal ..." DIGI_TUNING="Réglage manuel" DIGI_TUNING_FINE_MINUS="Réglage fin -" DIGI_TUNING_FINE_PLUS="Réglage fin +" DIGI_TUNING_SEEK_MINUS="Recherche de station -" DIGI_TUNING_SEEK_PLUS="Recherche de station +" DVD_PLAYBACK="Méthode de lecture DVD" DVD_PLAYBACK_DIRECT="Lecture Directe" DVD_PLAYBACK_DVDNAV="Menu de Navigation DVD" FILES_FILTER="Filtre des Fichiers" FILES_FILTER_ALL="Affichage Complet" FILES_FILTER_MEDIA="Afficher les Médias uniquement" IMG_10S="10s" IMG_15M="15min" IMG_15S="15s" IMG_1S="1s" IMG_30S="30s" IMG_3S="3s" IMG_5M="5min" IMG_5S="5s" IMG_60S="1min" IMG_SHOW_DISABLE="Désactiver le défilement" IMG_SHOW_TIMEOUT="Temps d'affichage des images" INFO="Info" LISTEN_RADIO="Ecouter la radio ..." LIST_CHANNELS="Liste des chaînes ..." LOAD_SUB="Charger des sous-titres ..." LOAD_SUB_FILE="Charger des sous-titres :" MENU_CONTROLS="Contrôles" MENU_GEEXBOX="GeeXboX" MENU_HELP="Aide" MENU_OPEN="Ouvrir" MENU_OPTIONS="Options" MENU_PREFERENCES="Préférences" MENU_QUIT="Quitter" OPEN="Ouvrir" OPEN_FILE="Lire un fichier ..." OPTIONS="Options" OPTIONS_AUTOPLAY="Mode de lecture automatique ..." OPTIONS_DVD_SETTINGS="Préférences DVD ..." OPTIONS_FILE_FILTER="Filtre des Fichiers ..." OPTIONS_IMG_SHOW="Temps d'affichage des images ..." OPTIONS_INFOS="Info ..." OPTIONS_RESET_PATH="Point de montage par défaut" OPTIONS_SLEEP_TIMER="Minuterie d'arrêt ..." OPTIONS_SUBS_SIZE="Taille des sous-titres ..." OPTIONS_TV_NORM="Norme TV ..." OPTIONS_TV_SWITCH="Activer la Sortie TV" OPTIONS_VSYNC="Activer la Sync. Vert." PLAYLIST="Liste de lecture" PLAY_CDDA="Lire un CD Audio" PLAY_DVD="Lire un DVD" PLAY_VCD="Lire un VCD / XCD" PREFERENCES="Préférences" PREF_AUDIO="Audio ..." PREF_CHAPTERS="Sélection du chapitre ..." PREF_PROPERTIES="Propriétés du flux ..." PREF_SUBS="Sous-titres ..." PREF_VIDEO="Video ..." SELECT_CHAPTER="Sélection du chapitre" SELECT_FILE="Sélectionner un fichier :" SLEEP_TIMER="Minuterie d'arrêt" SLEEP_TIMER_120M="120min" SLEEP_TIMER_15M="15min" SLEEP_TIMER_30M="30min" SLEEP_TIMER_45M="45min" SLEEP_TIMER_60M="60min" SLEEP_TIMER_75M="75min" SLEEP_TIMER_90M="90min" SLEEP_TIMER_OFF="Aucune (défaut)" SPEED="Vitesse" STREAM_ABITRATE="Débit Audio" STREAM_ACODEC="Codec Audio" STREAM_ALBUM="Album" STREAM_ARTIST="Artiste" STREAM_ASAMPLES="Format Audio" STREAM_COMMENT="Commentaire" STREAM_GENRE="Genre" STREAM_NAME="Nom" STREAM_PROPERTIES="Propriétés du flux" STREAM_RESOLUTION="Résolution" STREAM_TITLE="Titre" STREAM_TRACK="Piste" STREAM_VBITRATE="Débit Vidéo" STREAM_VCODEC="Codec Vidéo" STREAM_YEAR="Année" SUBS="Sous-titres" SUBS_DELAY="Délai" SUBS_FORCED="Sous-titres forcés uniquement" SUBS_POSITION="Position" SUBS_PREF="Sous-titres" SUBS_SIZE="Taille des sous-titres" SUBS_SIZE_DEFAULT="Normal" SUBS_SIZE_GIANT="Énorme" SUBS_SIZE_HUGE="Très grand" SUBS_SIZE_LARGE="Grand" SUBS_SIZE_SMALL="Petit" SUBS_VISIBILITY="Visibilité" TV_CHANNELS="Canaux TV ..." TV_INPUT_COMPOSITE="Entrée Composite" TV_INPUT_SVHS="Entrée S-VHS" TV_NORM="Norme TV" TV_SETTINGS="Regarder la TV" VIDEO_ASPECT="Aspect de l'image ..." VIDEO_COLORS="Couleurs ..." VIDEO_FRAMEDROP="Saut d'images" VIDEO_PREF="Video" WATCH_DVB="Regarder la TV Numérique (DVB)" WATCH_PVR="Regarder l'enregistreur TV" WATCH_TV="Regarder la TV" WELCOME_CONSOLE="Welcome to MPlayer" geexbox-1.1/packages/i18n-texts/config/he.lang0000644000175000017500000000701010641745505017321 0ustar benbenASPECT="Aspect" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="מרחב קולנוע" ASPECT_ORIGINAL="מקור" AUTOPLAY="Autoplay Mode" AUTOPLAY_DISABLE="Autoplay Disable" AUTOPLAY_ENABLE="Autoplay Enable" CTRLS="מקשי×" CTRLS_EJECT="×”×•×¦× ×“×™×¡×§" CTRLS_PAUSE="השהה" CTRLS_PLAYLIST="קפוץ ×ל ..." CTRLS_PREV_NEXT="הקוד×\הב×" CTRLS_STOP="עצור" DIGI_CHANNELS="Manage Channels" DIGI_CHANNELS_CANCEL="Cancel store" DIGI_CHANNELS_CONFIRM="Confirm store" DIGI_CHANNELS_SELECT="Channel -/+" DIGI_CHANNELS_STORE="Store current frequency" DIGI_RADIO="Radio" DIGI_RADIO_AM="Radio AM" DIGI_RADIO_CHANNELS="Channel -/+" DIGI_RADIO_CONFIG="Configure radio ..." DIGI_RADIO_FM="Radio FM" DIGI_RADIO_OFF="Radio off" DIGI_SAVE_CHANNEL="Save Channel ..." DIGI_TUNING="Manual Tune" DIGI_TUNING_FINE_MINUS="Fine tune -" DIGI_TUNING_FINE_PLUS="Fine tune +" DIGI_TUNING_SEEK_MINUS="Seek station -" DIGI_TUNING_SEEK_PLUS="Seek station +" DVD_PLAYBACK="DVD Playback Method" DVD_PLAYBACK_DIRECT="Direct Playback" DVD_PLAYBACK_DVDNAV="DVD Navigation Menu" FILES_FILTER="מסנן קבצי×" FILES_FILTER_ALL="הצג ×ת כל הקבצי×" FILES_FILTER_MEDIA="הצג קבצי מדיה בלבד" IMG_10S="10 שניות" IMG_15M="15 דקות" IMG_15S="15 שניות" IMG_1S="1 שניה" IMG_30S="30 שניות" IMG_3S="3 שניות" IMG_5M="5 דקות" IMG_5S="5 שניות" IMG_60S="1 דקה" IMG_SHOW_DISABLE="בטל מצגת תמונות" IMG_SHOW_TIMEOUT="תפוגת מצגת תמונות" INFO="מידע" LISTEN_RADIO="Listen Radio ..." LIST_CHANNELS="List of Channels ..." MENU_CONTROLS="מקשי×" MENU_GEEXBOX="GeeXboX" MENU_HELP="עזרה" MENU_OPEN="פתח" MENU_OPTIONS="×פשרויות" MENU_QUIT="יצי××”" OPEN="פתח" OPEN_FILE="פתח קובץ ..." OPTIONS="×פשרויות" OPTIONS_AUTOPLAY="Autoplay mode ..." OPTIONS_DVD_SETTINGS="DVD Settings ..." OPTIONS_FILE_FILTER="מסנן ×§×‘×¦×™× ..." OPTIONS_IMG_SHOW="תפוגת מצגת תמונות ..." OPTIONS_INFOS="מידע ..." OPTIONS_RESET_PATH="Reset file open path" OPTIONS_SLEEP_TIMER="Set Sleeptimer ..." OPTIONS_SUBS_SIZE="Subtitles size ..." OPTIONS_TV_NORM="TV Norm ..." OPTIONS_TV_SWITCH="עבור ל TV-Out" OPTIONS_VSYNC="עבור לתזמון ×× ×›×™" PLAYLIST="Jump to" PLAY_CDDA="נגן תקליטור שמע" PLAY_DVD="נגן DVD" PLAY_VCD="נגן VCD / XCD" PREF_CHAPTERS="בחירת ×¤×¨×§×™× ..." PREF_PROPERTIES="Stream Properties ..." SELECT_CHAPTER="בחר פרק" SELECT_FILE="בחר קובץ:" SLEEP_TIMER="Sleeptimer (time until shutdown)" SLEEP_TIMER_120M="120min" SLEEP_TIMER_15M="15min" SLEEP_TIMER_30M="30min" SLEEP_TIMER_45M="45min" SLEEP_TIMER_60M="60min" SLEEP_TIMER_75M="75min" SLEEP_TIMER_90M="90min" SLEEP_TIMER_OFF="OFF (default)" STREAM_ABITRATE="Audio Bitrate" STREAM_ACODEC="Audio Codec" STREAM_ALBUM="Album" STREAM_ARTIST="Artist" STREAM_ASAMPLES="Audio Samples" STREAM_COMMENT="Comment" STREAM_GENRE="Genre" STREAM_NAME="Name" STREAM_PROPERTIES="Stream Properties" STREAM_RESOLUTION="Resolution" STREAM_TITLE="Title" STREAM_TRACK="Track" STREAM_VBITRATE="Video Bitrate" STREAM_VCODEC="Video Codec" STREAM_YEAR="Year" SUBS_SIZE="Subtitles size" SUBS_SIZE_DEFAULT="Default" SUBS_SIZE_GIANT="Giant" SUBS_SIZE_HUGE="Huge" SUBS_SIZE_LARGE="Large" SUBS_SIZE_SMALL="Small" TV_CHANNELS="ערוצי טלוויזיה ..." TV_INPUT_COMPOSITE="Composite יצי×ת" TV_INPUT_SVHS="S-VHS יצי×ת" TV_NORM="TV Norm" TV_SETTINGS="Watch TV" WATCH_DVB="Watch Digital TV (DVB)" WATCH_PVR="Watch PVR" WATCH_TV="צפה בטלוויזיה" WELCOME_CONSOLE="Welcome to MPlayer" geexbox-1.1/packages/i18n-texts/config/help_ar.txt0000644000175000017500000000076110641745505020243 0ustar benbenUSEFUL COMMANDS m : Show/Hide the Menu o : Dislay OSD Timer s : Switch TV-Out v : Hide/Show Subtitles Left : Cancel / Go Backward Right : Ok / Go Forward Down : Go Backward 1 minute Up : Go Forward 1 minute +/- : Audio Delay +/- 100ms *// : Volume +/- 1 COMMANDS IN FILE SELECTION d : set destination directory c : copy to destination r : ask to remove file o : confirm file removal p : play/view the entire directory l : recursively view the entire directory u : append to playlist geexbox-1.1/packages/i18n-texts/config/help_bg.txt0000644000175000017500000000132310641745505020224 0ustar benbenПолезни команди m : Покажи/Скрий Менюто o : Покажи OSD Таймер s : Включи ТВ-Изход v : Покажи/Скрий Субтитри ЛÑво : Откажи / Върни Ñе ДÑÑно : ОК / Ðапред Долу : Ðазад 1 minute Горе : Ðапред 1 minute +/- : Забави звука +/- 100ms *// : УÑилване +/- 1 Команди при избиране на файлове d : избери целева Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ c : копирай в целта r : питай да премахнеш файл o : потвърди премахване на файл p : пуÑни цÑлата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ u : append to playlist geexbox-1.1/packages/i18n-texts/config/help_br.txt0000644000175000017500000000107210641745505020240 0ustar benbenCOMANDOS UTEIS m : Mostrar/Esconder o menu o : Mostrar o tempo de reproducao s : Ativar saida para TV v : Mostrar/Esconder legenda Esquerda : Cancela / Retorna Direita : Ok / Avancar Para Cima : Rebobinar 1 minute Para Baixo : Avancar 1 minute +/- : Atraso do audio +/- 100ms *// : Volume +/- 1 COMANDOS DE SELECAO DE ARQUIVOS d : configura diretorio de destino c : copiar para o destino r : pedir para remover arquivo o : confirmar remocao de arquivo p : reproduzir todo diretorio l : reproduzir todo o diretorio e os subdiretorios u : append to playlist geexbox-1.1/packages/i18n-texts/config/help_ca.txt0000644000175000017500000000103310641745505020215 0ustar benbenTECLES UTILS m : Mostrar/Ocultar el Menu o : Mostrar temporitzador OSD s : Conmutar sortida a TV v : Mostrar/Ocultar Subtituls Esquerra : Cancel.lar / Endarrere Dreta : Aceptar / Endavant Avall : Endarrere 1 minute Amunt : Endavant 1 minute +/- : Retard del so +/- 100ms *// : Volum +/- 1 TECLES EN SELECCIO D'ARXIUS d : establir directori desti c : copiar a desti r : eliminar arxiu o : confirmar eliminacio d'arxius p : reproduir directori complet l : recursively view the entire directory u : append to playlist geexbox-1.1/packages/i18n-texts/config/help_cs.txt0000644000175000017500000000074010641745505020243 0ustar benbenUZITECNE PRIKAZY m : Zobraz/Skryj menu o : Zobraz OSD casovac s : Prepni TV vystup Left : Zrusit / Vzad Right : OK / Vpred Down : Posun vpred 1 minute Up : Posun vzad 1 minute +/- : Zpozdeni zvuku +/- 100ms *// : Hlasitost +/- 1 PRIKAZY v NABIDCE VYBER SOUBORU d : nastavit cilovy adresar c : kopirovat do ciloveho adrersare r : odstranit soubor o : potvrzeni odstraneni souboru p : prehrat(zobrazit) cely adresar l : Prohlednout cely adresar u : append to playlist geexbox-1.1/packages/i18n-texts/config/help_de.txt0000644000175000017500000000114210641745505020223 0ustar benbenNÜTZLICHE KOMMANDOS m : Zeigt/Verbirgt das Menü o : Zeigt den OSD Timer s : Aktiviert den TV-Ausgang v : Zeigt/Verbirgt Untertitel Links : Abbrechen / Gehe zurück Rechts : Ok / Gehe vorwärts Runter : Gehe 1 Minute zurück Hoch : Gehe 1 Minute vorwärts +/- : Audio Verzögerung +/- 100ms *// : Lautstärke +/- 1 KOMMANDOS WÄHREND DATEIAUSWAHL d : setzt das Ziel-Verzeichnis c : kopiert ins Ziel-Verzeichnis r : löscht die Datei o : bestätigt den Löschvorgang p : spielt/zeigt das gesamte Verzeichnis l : spielt/zeigt das gesamte Verzeichnis inkl. Unterordner u : zur Playlist hinzufügen geexbox-1.1/packages/i18n-texts/config/help_el.txt0000644000175000017500000000176310641745505020244 0ustar benbenΧÏήσιμες εντολές m : Εμφάνιση/ΑπόκÏυψη του Î¼ÎµÎ½Î¿Ï o : Εμφάνιση μετÏητή OSD s : Αλλαγή σε TV-Out v : Εμφάνιση/ΑπόκÏυψη υπότιτλων ΑÏιστεÏά : ΑκÏÏωση / Πίσω Δεξιά : Ok / ΜπÏοστά Κάτω : Πήγαινε πίσω 1 λεπτό Επάνω : Πήγαινε μπÏοστά 1 λεπτό +/- : ΚαθυστέÏηση ήχου +/- 100ms *// : Ένταση ήχου Εντολές στην "Επιλογή ΑÏχείου" d : ΚαθοÏισμός καταλόγου Ï€ÏοοÏÎ¹ÏƒÎ¼Î¿Ï c : ΑντιγÏαφή στον Ï€ÏοοÏισμό r : ΕÏώτηση για διαγÏαφή αÏχείου o : Επιβεβαίωση διαγÏαφής αÏχείου p : ΑναπαÏαγωγή/ΠÏοβολή όλου του καταλόγου l : ΑναπαÏαγωγή/ΠÏοβολή καταλόγου/υποκαταλόγων u : ΠÏοσθήκη στην λίστα αναπαÏαγωγής geexbox-1.1/packages/i18n-texts/config/help_en.txt0000644000175000017500000000076110641745505020243 0ustar benbenUSEFUL COMMANDS m : Show/Hide the Menu o : Dislay OSD Timer s : Switch TV-Out v : Hide/Show Subtitles Left : Cancel / Go Backward Right : Ok / Go Forward Down : Go Backward 1 minute Up : Go Forward 1 minute +/- : Audio Delay +/- 100ms *// : Volume +/- 1 COMMANDS IN FILE SELECTION d : set destination directory c : copy to destination r : ask to remove file o : confirm file removal p : play/view the entire directory l : recursively view the entire directory u : append to playlist geexbox-1.1/packages/i18n-texts/config/help_es.txt0000644000175000017500000000110410641745505020240 0ustar benbenTECLAS ÚTILES m : Mostrar/Ocultar el Menú o : Mostrar temporizador OSD s : Conmutar salida a TV/Monitor v : Mostrar/Ocultar Subtítulos Izquierda : Cancelar / Atrás Derecha : Aceptar / Adelante Abajo : Atrás 1 minuto Arriba : Adelante 1 minuto +/- : Retardo del sonido +/- 100ms *// : Volumen +/- TECLAS EN SELECCIÓN DE ARCHIVOS d : establecer directorio de destino c : copiar a destino r : borrar archivo o : confirmar borrado de archivos p : reproducir directorio completo l : ver recursivamente el directorio completo u : añadir a la lista de reproducción geexbox-1.1/packages/i18n-texts/config/help_et.txt0000644000175000017500000000077110641745505020252 0ustar benbenKasulikud käsud m : Näita/Peida Menüü o : Näita OSD Timerit s : Vaheta TV-Väljundit v : Näita/Peida Subtiitreid Left : Katkesta / Mine tagasi Right : Ok / Mine edasi Down : Mine tagasi 1 minut Up : Mine edasi 1 minut +/- : Heli Viivitus +/- 100ms *// : Helitugevus +/- 1 Käsud failisektsioonis d : määra sihtpunkt c : kopeeri sihtpunkti r : kustuta fail o : kinnita faili kustutamine p : mängi/vaata tervet kataloogi sisu l : rekrusiivselt vaata kataloogi sisu u : lisa playlisti geexbox-1.1/packages/i18n-texts/config/help_fi.txt0000644000175000017500000000106010641745505020230 0ustar benbenHYÖDYLLISIÄ KOMENTOJA m : Näytä/piilota valikko o : Näytä OSD-ajastin s : Vaihda TV-ulostulo päälle/pois v : Näytä/piilota tekstitykset Vasen : Peru / mene takaisin Oikea : Ok / mene eteenpäin Alas : 1 minute takaisinpäin Ylös : 1 minute eteenpäin +/- : Äänen viive +/- 100ms *// : Äänenvoimakkuus +/- 1 KOMENNOT TIEDOSTOVALIKOIMASSA d : aseta kohdehakemisto c : kopioi kohteeseen r : kysy tiedoston poisto o : vahvista tiedoston poisto p : toista/katso koko hakemisto l : katso hakemisto rekursiivisesti u : append to playlist geexbox-1.1/packages/i18n-texts/config/help_fr.txt0000644000175000017500000000110310641745505020237 0ustar benbenCOMMANDES UTILES m : Affiche/Cache le Menu o : Affiche le Compteur OSD s : Active la Sortie TV v : Cache/Affiche les Sous-Titres Gauche : Annuler / Retour Arrière Droite : Ok / Avancer Bas : Retour Arrière 1 minute Haut : Avancer 1 minute +/- : Décalage Audio +/- 100ms *// : Volume +/- 1 COMMANDES DE SELECTION DE FICHIER d : répertoire de destination c : copie vers la destination r : demande de suppression o : confirmation de suppression p : lire/afficher le répertoire complet l : afficher récursivement le répertoire u : ajouter à la liste de lecture geexbox-1.1/packages/i18n-texts/config/help_he.txt0000644000175000017500000000122610641745505020232 0ustar benbenפקודות שימושיות m : הצג\הסתר תפריט o : טיימר OSD הצג s : החלף ליצי×ת TV-Out v : הצג\הסתר כתוביות Left : ביטול / חזור ×חורה Right : ×ישור / לך קדימה Down : 1 חזור ×חורה minute Up : 1 לך קדימה minute +/- : 100 -/+ עיקוב שמעms *// : 1 -/+ עוצמת קול פקודות בבחירת קובץ d : הגדר תיקיית יעד c : העתק ליעד r : ש×ל מחיקת קובץ o : ×שר מחיקת קובץ p : הצג\הר××” ×ת כל התיקייה l : הצג ×ת כל התייקיה ב×ופן רקרוסיבי u : append to playlist geexbox-1.1/packages/i18n-texts/config/help_hu.txt0000644000175000017500000000111410641745505020246 0ustar benbenHASZNOS PARANCSOK m : Menü ki/be o : Eltelt idõ OSD-n ki/be s : TV kimenet ki/be v : Felirat ki/be balra nyíl : Mégsem / Vissza jobbra nyíl : Ok / Tovább lefele nyíl : Visszatekerés 1 minute felfele nyíl : Elõretekerés 1 minute +/- : Hang késleltetés/siettetés 100ms-mal *// : Hangerõ +/- 1 PARANCSOK FÃJL KIVÃLASZTÃSNÃL d : cél könyvtár beállítása c : cél könyvtárba másolás r : Fájl eltávolítása o : Fájl eltávolítasa megerõsítés p : A teljes könyvtár lejátszása l : recursively view the entire directory u : append to playlist geexbox-1.1/packages/i18n-texts/config/help_it.txt0000644000175000017500000000100610641745505020246 0ustar benbenCOMANDI m : Mostra/Nascondi Menu o : Vedi Tempo s : Abilita/Disablita TV-Out Freccia Sinistra : Annulla / Indietro Freccia Destra : Ok / Avanti Freccia Giu : Avanti 1 minute Freccia Su : Indietro 1 minute +/- : Audio Delay +/- 100ms *// : Volume +/- 1 COMANDI NELLA SEZIONE FILES d : imposta la directory di destinazione c : copia nella destinazione r : rimuovi il file o : conferma la rimozione del file p : visualizza l'intera directory l : visualizza la directory ricorsivamente u : append to playlist geexbox-1.1/packages/i18n-texts/config/help_jp.txt0000644000175000017500000000113410641745505020245 0ustar benbenï»¿ä¾¿åˆ©ãªæ©Ÿèƒ½ m : メニューã®è¡¨ç¤ºï¼éžè¡¨ç¤º o : OSDタイマーã®è¡¨ç¤º s : テレビ切り替㈠v : 字幕ã®è¡¨ç¤ºï¼éžè¡¨ç¤º å·¦ï¼šã‚­ãƒ£ãƒ³ã‚»ãƒ«ï¼æˆ»ã‚‹ å³ï¼šï¼¯ï¼«ï¼é€²ã‚€ 下:1分戻る 上:1分進む +/- : オーディオディレイ +/- 100ms  *// : éŸ³é‡ +/- 1 ãƒ•ã‚¡ã‚¤ãƒ«é¸æŠžã®æ“作 d : ä¿å­˜å…ˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®è¨­å®š c : ファイルã®ä¿å­˜ r : ファイルã®å‰Šé™¤ o : ファイル削除ã®ç¢ºèª p : ã™ã¹ã¦ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’å†ç”Ÿï¼é–²è¦§ l : ã™ã¹ã¦ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ç¹°ã‚Šè¿”ã—å†ç”Ÿ u : リストã«è¿½åŠ  geexbox-1.1/packages/i18n-texts/config/help_ko.txt0000644000175000017500000000101010641745505020236 0ustar benben유용한 명령어 m : 메뉴 보기/숨기기 o : OSD 시간 표시 s : TV-Out 스위치 v : 하위메뉴 숨기기/보기 Left : 취소 / 뒤로 Right : í™•ì¸ / 앞으로 Down : 1 minute 뒤로 Up : 1 minute 앞으로 +/- : +/- 100ms 오디오 ë”œë ˆì´ *// : 볼륨 +/- 1 COMMANDS IN FILE SELECTION d : set destination directory c : copy to destination r : ask to remove file o : confirm file removal p : play/view the entire directory l : recursively view the entire directory u : append to playlist geexbox-1.1/packages/i18n-texts/config/help_nl.txt0000644000175000017500000000077610641745505020260 0ustar benbenHANDIGE COMMANDOS m : Toon/Verberg het Menu o : Toon OSD Timer s : Activeer TV-Out v : Toon/Verberg Ondertitels Links : Annuleer / Spoel terug Rechts : Ok / Spoel door Onder : Spoel terug 1 minute Boven : Spoel door 1 minute +/- : Audio Delay +/- 100ms *// : Volume +/- 1 COMMANDS IN FILE SELECTION d : set destination directory c : copy to destination r : ask to remove file o : confirm file removal p : play the entire directory l : recursively view the entire directory u : append to playlist geexbox-1.1/packages/i18n-texts/config/help_no.txt0000644000175000017500000000106710641745505020255 0ustar benbenHurtigtaster For Menyvalg m : Vis/Skjul Meny o : Vis OSD tidsmÃ¥ler s : Bytt til TV-ut v : Vis/Skjul Undertekst Venstre : Avbryt / Spol tilbake Høyre : Ok / Spol Fram Ned : GÃ¥ tilbake 1 minutt Opp : GÃ¥ fram 1 minutt +/- : Lyd forsinkelse +/- 100ms *// : Volum +/- 1 Kommandoer I Forbindelse Med Filvalg d : velg destinasjons katalog c : kopier til destinasjon r : be om bekreftelse før sletting o : bekreft ved sletting p : spill/vis hele katalogen l : rekursivt se gjennom hele katalogen u : legg til spilliste geexbox-1.1/packages/i18n-texts/config/help_pl.txt0000644000175000017500000000110010641745505020240 0ustar benbenUÅ»YTECZNE KOMENDY m : Pokaż/Ukryj Menu o : WyÅ›wietl Menu OSD s : Przełącz TV-Out v : Ukryj/Pokaż Napisy Left : Anuluj / Wróć Right : Ok / Do Przodu Down : Do Tylu 1 minutÄ™ Up : Do Przodu 1 minutÄ™ +/- : Opóźnienie DzwiÄ™ku +/- 100ms *// : GÅ‚oÅ›ność +/- 1 POLECENIA W MENU WYBORU PLIKÓW Polecenia Menedżera Plików d : ustaw katalog przeznaczenia c : kopiuj w miejsce r : zapytaj o usuniÄ™cie pliku o : potwierdź usuniÄ™cie pliku p : odtwarzaj zawartość caÅ‚ego katalogu l : przeglÄ…daj rekursywnie caÅ‚y katalog u : dodaj do listy odtwarzania geexbox-1.1/packages/i18n-texts/config/help_ro.txt0000644000175000017500000000111110641745505020247 0ustar benbenCOMENZI FOLOSITOARE m : Arată/Ascunde meniul o : AfiÅŸeaza timpul OSD s : Schimbă TV-Out v : Ascunde/Arată subtitrare Stânga : Anulare / ÃŽnapoi Dreapta : Ok / ÃŽnainte Jos : ÃŽnapoi 1 minut Sus : ÃŽnainte 1 minut +/- : ÃŽntârziere audio +/- 100ms *// : Volum +/- 1 COMENZI PENTRU SELECTAREA FIÅžIERELOR d : setează directorul destinaÅ£ie c : copiază la destinaÅ£ie r : întreabă înainte să ÅŸtergi fiÅŸierul o : confirmă ÅŸtergerea fiÅŸierului p : rulează întregul director l : vizualizare recursivă a întregului director u : adaugă la lista de ascultat geexbox-1.1/packages/i18n-texts/config/help_ru.txt0000644000175000017500000000154710641745505020272 0ustar benbenПОЛЕЗÐЫЕ КОМÐÐДЫ m : Показать/Скрыть меню o : Показать таймер s : Включить TV-выход Left : Отмена / Прокрутить назад Right : Ok / Прокрутить вперед Down : Прокрутить назад 1 minute Up : Прокрутить вперед 1 minute +/- : Ðудио-задержка +/- 100ms *// : ГромкоÑть +/- 1 КОМÐÐДЫ ПРИ ВЫБОРЕ ФÐЙЛОВ d : УÑтановить каталог Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ c : Скопировать в каталог Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ r : Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° удаление файла o : Подтвердить удаление файла p : ВоÑпроизвеÑти веÑÑŒ каталог l : РекурÑивно Ñмотреть веÑÑŒ каталог u : Добавить в плейлиÑÑ‚ geexbox-1.1/packages/i18n-texts/config/help_sk.txt0000644000175000017500000000077410641745505020262 0ustar benbenUZITOCNE PRIKAZY m : Zobraz/Skry menu o : Zobraz OSD casovac s : Prepni TV vystup v : Zobraz/Skry titulky Left : Zrusit / Spat Right : OK / Dopredu Down : Posun vpred 1 minute Up : Posun vzad 1 minute +/- : Audio oneskorenie +/- 100ms *// : Hlasitost +/- 1 PRIKAZY PRI VYBERE SUBORU d : nastavenie cieloveho adresara c : kopirovanie do cieloveho adresara r : odstranit suboru o : potvrdenie odstranenia suboru p : prehrat cely adresar l : rekurzivne prehrat cely adresar u : append to playlist geexbox-1.1/packages/i18n-texts/config/help_sr.txt0000644000175000017500000000163610641745505020267 0ustar benbenКОРИСÐЕ КОМÐÐДЕ m : Прикажи/Ñакриј изборник o : Прикажи ОСД тајмер s : Пребаци на ТВ излаз v : Прикажи/Ñакриј превод Лево : Откажи / иди назад ДеÑно : У реду / иди напред Доле : Иди назад 1 минут Горе : Иди напред 1 минут +/- : Кашњење звука/Ñлике +/- 100 msec *// : Јачина звука +/- 1 КОМÐÐДЕ У РÐДУ СРФÐЈЛОВИМРd : подеÑи одредишни директоријум c : копирај у одредиште r : питај да обришеш фајл o : потврди бриÑање фајла p : репродукуј/види цео директоријум l : рекурзивно види цео директоријум u : додај у лиÑту пуштања i : Ñними ток geexbox-1.1/packages/i18n-texts/config/help_sv.txt0000644000175000017500000000074010641745505020266 0ustar benbenNYTTIGA KOMMANDON m : Dolj/Visa Menyn o : Visa OSD Timern s : Byt TV-ut v : Dolj/Visa Undertextning Left : Avbryt / Ga Bakat Right : Ok / Ga Framat Down : Ga Bakat 1 minute Up :Ga Framat 1 minute +/- : Ljud Korrigering +/- 100ms *// : Volym +/- 1 COMMANDS IN FILE SELECTION d : set destination directory c : copy to destination r : ask to remove file o : confirm file removal p : play the entire directory l : recursively view the entire directory u : append to playlist geexbox-1.1/packages/i18n-texts/config/help_vn.txt0000644000175000017500000000112110641745505020253 0ustar benbenNHá»®NG LỆNH Há»®U ÃCH M: Bật/Tắt Menu O: Hiện thị đồng hồ trên màn hình s: chuyển đưá»ng ra TV v: Tắt/Bật phụ đỠtrái: Há»§y lệnh / Tua vá» phải: Thá»±c hiện lệnh / Tua Ä‘i trên: Tua vá» 1 phút dưới: Tua Ä‘i 1 phút +/-: Trá»… âm thanh +/- 100ms *//: Chỉnh âm +/- 1 NHá»®NG LỆNH Lá»°A CHỌN TẬP TIN d: Äặt thư mục đích c: Sao tá»›i thư mục đích r: Thá»±c hiện xoá tập tin o: Xác nhận xoá tập tin p: ChÆ¡i/Xem toàn bá»™ thư mục l: Xem lặp lại toàn bá»™ thư mục u: Thêm vào chương trình chÆ¡i geexbox-1.1/packages/i18n-texts/config/help_zh_CN.txt0000644000175000017500000000105010641745505020632 0ustar benben播放控制键 (USEFUL COMMANDS) m : 显示/éšè—èœå• o : åœ¨å±æ—¶é—´æ˜¾ç¤º s : å¼€/é—­ TV-Out v : 显示/éšè—字幕 Left : 快退/å–æ¶ˆå¿«é€€ Right : å¿«è¿›/å–æ¶ˆå¿«è¿› Down : 快退 1 minute Up : å¿«è¿› 1 minute +/- : 延迟声音 +/-100ms *// : 音é‡è°ƒèŠ‚ +/-1 文件选择相关命令 (COMMANDS IN FILE SELECTION) d : 设定目标目录 c : å¤åˆ¶åˆ°... r : 移动文件... (ask to remove file) o : 确认文件移动 (confirm file removal) p : 播放/查看整个目录 l : é‡å¤æ’­æ”¾æ•´ä¸ªç›®å½• u : append to playlist geexbox-1.1/packages/i18n-texts/config/help_zh_TW.txt0000644000175000017500000000075210641745505020674 0ustar benbenUSEFUL COMMANDS m : 顯示/éš±è— é¸å–® o : 顯示 OSD Timer s : 切æ›è‡³ TV-Out v : 顯示/éš±è— å­—å¹• Left : å–æ¶ˆ / å‘後快轉 Right : 確定 / å‘å‰å¿«è½‰ Down : å‘後快轉 1 minute Up : å‘å‰å¿«è½‰ 1 minute +/- : è²éŸ³ å»¶é² +/- 100ms *// : éŸ³é‡ +/- 1 COMMANDS IN FILE SELECTION d : 設定目的地目錄 c : æ‹·è²è‡³ç›®çš„地 r : è©¢å•移除檔案 o : ç¢ºèªæª”案移除 p : 播放/觀看整個目錄 l : é‡å¾©è§€çœ‹æ•´å€‹ç›®éŒ„ u : append to playlist geexbox-1.1/packages/i18n-texts/config/hu.lang0000644000175000017500000000662510641745505017354 0ustar benbenASPECT="Képarány" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="Szélesvásznú" ASPECT_ORIGINAL="Eredeti" AUTOPLAY="Autoplay Mode" AUTOPLAY_DISABLE="Autoplay Disable" AUTOPLAY_ENABLE="Autoplay Enable" CTRLS="Vezérlõk" CTRLS_EJECT="Tálca kiadás" CTRLS_PAUSE="Szünet" CTRLS_PLAYLIST="Ugrás ..." CTRLS_PREV_NEXT="Elõzõ/Következõ" CTRLS_STOP="Leállítás" DIGI_CHANNELS="Manage Channels" DIGI_CHANNELS_CANCEL="Cancel store" DIGI_CHANNELS_CONFIRM="Confirm store" DIGI_CHANNELS_SELECT="Channel -/+" DIGI_CHANNELS_STORE="Store current frequency" DIGI_RADIO="Radio" DIGI_RADIO_AM="Radio AM" DIGI_RADIO_CHANNELS="Channel -/+" DIGI_RADIO_CONFIG="Configure radio ..." DIGI_RADIO_FM="Radio FM" DIGI_RADIO_OFF="Radio off" DIGI_SAVE_CHANNEL="Save Channel ..." DIGI_TUNING="Manual Tune" DIGI_TUNING_FINE_MINUS="Fine tune -" DIGI_TUNING_FINE_PLUS="Fine tune +" DIGI_TUNING_SEEK_MINUS="Seek station -" DIGI_TUNING_SEEK_PLUS="Seek station +" DVD_PLAYBACK="DVD Playback Method" DVD_PLAYBACK_DIRECT="Direct Playback" DVD_PLAYBACK_DVDNAV="DVD Navigation Menu" FILES_FILTER="Fájl szûrés" FILES_FILTER_ALL="Minden fájl" FILES_FILTER_MEDIA="Csak a támogatott típusok" IMG_10S="10mp" IMG_15M="15perc" IMG_15S="15mp" IMG_1S="1mp" IMG_30S="30mp" IMG_3S="3mp" IMG_5M="5perc" IMG_5S="5mp" IMG_60S="1perc" IMG_SHOW_DISABLE="Nincs automata képváltás" IMG_SHOW_TIMEOUT="Diavetítés idõköze" INFO="Információ" LISTEN_RADIO="Listen Radio ..." LIST_CHANNELS="List of Channels ..." MENU_CONTROLS="Vezérlõk" MENU_GEEXBOX="GeeXboX" MENU_HELP="Segítség" MENU_OPEN="Lejátszás" MENU_OPTIONS="Beállítások" MENU_QUIT="Kikapcsolás" OPEN="Lejátszás" OPEN_FILE="Fájl kiválasztása ..." OPTIONS="Beállítások" OPTIONS_AUTOPLAY="Autoplay mode ..." OPTIONS_DVD_SETTINGS="DVD Settings ..." OPTIONS_FILE_FILTER="Fájl szûrés ..." OPTIONS_IMG_SHOW="Diavetítés idõköze ..." OPTIONS_INFOS="Információ ..." OPTIONS_RESET_PATH="Reset file open path" OPTIONS_SLEEP_TIMER="Set Sleeptimer ..." OPTIONS_SUBS_SIZE="Subtitles size ..." OPTIONS_TV_NORM="TV típus ..." OPTIONS_TV_SWITCH="TV kimenet be/ki" OPTIONS_VSYNC="Függõleges szinkronjel be/ki" PLAYLIST="Ugrás" PLAY_CDDA="Audio CD lejátszás" PLAY_DVD="DVD lejátszás" PLAY_VCD="VCD/XCD lejátszás" PREF_CHAPTERS="Fejezet választás ..." PREF_PROPERTIES="Stream Properties ..." SELECT_CHAPTER="Fejezet választás" SELECT_FILE="Válassz fájlt:" SLEEP_TIMER="Sleeptimer (time until shutdown)" SLEEP_TIMER_120M="120min" SLEEP_TIMER_15M="15min" SLEEP_TIMER_30M="30min" SLEEP_TIMER_45M="45min" SLEEP_TIMER_60M="60min" SLEEP_TIMER_75M="75min" SLEEP_TIMER_90M="90min" SLEEP_TIMER_OFF="OFF (default)" STREAM_ABITRATE="Audio Bitrate" STREAM_ACODEC="Audio Codec" STREAM_ALBUM="Album" STREAM_ARTIST="Artist" STREAM_ASAMPLES="Audio Samples" STREAM_COMMENT="Comment" STREAM_GENRE="Genre" STREAM_NAME="Name" STREAM_PROPERTIES="Stream Properties" STREAM_RESOLUTION="Resolution" STREAM_TITLE="Title" STREAM_TRACK="Track" STREAM_VBITRATE="Video Bitrate" STREAM_VCODEC="Video Codec" STREAM_YEAR="Year" SUBS_SIZE="Subtitles size" SUBS_SIZE_DEFAULT="Default" SUBS_SIZE_GIANT="Giant" SUBS_SIZE_HUGE="Huge" SUBS_SIZE_LARGE="Large" SUBS_SIZE_SMALL="Small" TV_CHANNELS="TV csatornák ..." TV_INPUT_COMPOSITE="Composite bemenet" TV_INPUT_SVHS="S-VHS bemenet" TV_NORM="TV típus" TV_SETTINGS="TV beállítások" WATCH_DVB="Watch Digital TV (DVB)" WATCH_PVR="Watch PVR" WATCH_TV="TV nézés" WELCOME_CONSOLE="Üdvözöllek az MPlayer-ben" geexbox-1.1/packages/i18n-texts/config/it.lang0000644000175000017500000001024110641745505017341 0ustar benbenASPECT="Aspetto" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="Cinemascope" ASPECT_ORIGINAL="Originale" AUDIO_DELAY="Ritardo" AUDIO_MUTE="Mute" AUDIO_PREF="Settaggi Audio" AUDIO_STREAMS="Traccia Audio" AUDIO_VOLUME="Volume" AUTOPLAY="Modalità Autoplay" AUTOPLAY_DISABLE="Autoplay Disattivato" AUTOPLAY_ENABLE="Autoplay Attivato" COLORS_BRIGHTNESS="Luminosita" COLORS_CONTRAST="Contrasto" COLORS_GAMMA="Gamma" COLORS_HUE="Hue" COLORS_PREF="Colori" COLORS_SATURATION="Saturatione" CTRLS="Controlli" CTRLS_EJECT="Espelli" CTRLS_PAUSE="Pausa" CTRLS_PLAYLIST="Vai a ..." CTRLS_PREV_NEXT="Precedente/Successivo" CTRLS_STOP="Stop" DIGI_CHANNELS="Gestione Canali" DIGI_CHANNELS_CANCEL="Cancel store" DIGI_CHANNELS_CONFIRM="Confirm store" DIGI_CHANNELS_SELECT="Canale -/+" DIGI_CHANNELS_STORE="Salva frequenza attuale" DIGI_RADIO="Radio" DIGI_RADIO_AM="Radio AM" DIGI_RADIO_CHANNELS="Canale -/+" DIGI_RADIO_CONFIG="Configura radio ..." DIGI_RADIO_FM="Radio FM" DIGI_RADIO_OFF="Radio off" DIGI_SAVE_CHANNEL="Salva Canale ..." DIGI_TUNING="Sintonia Manuale" DIGI_TUNING_FINE_MINUS="Sintonia Fine -" DIGI_TUNING_FINE_PLUS="Sintonia Fine +" DIGI_TUNING_SEEK_MINUS="Ricerca stazione -" DIGI_TUNING_SEEK_PLUS="Ricerca stazione +" DVD_PLAYBACK="Metodo Esecuzione DVD" DVD_PLAYBACK_DIRECT="Esecuzione Diretta" DVD_PLAYBACK_DVDNAV="Menu di Navigazione DVD" FILES_FILTER="Filtro File" FILES_FILTER_ALL="Visualizza tutti i File" FILES_FILTER_MEDIA="Visualizza solo i File multimediali" IMG_10S="10s" IMG_15M="15min" IMG_15S="15s" IMG_1S="1s" IMG_30S="30s" IMG_3S="3s" IMG_5M="5min" IMG_5S="5s" IMG_60S="1min" IMG_SHOW_DISABLE="Disabilita slide show" IMG_SHOW_TIMEOUT="Intervallo visualizzazione immagini" INFO="Informazioni" LISTEN_RADIO="Ascolta Radio ..." LIST_CHANNELS="Lista dei Canali ..." LOAD_SUB="Carica sottotitoli ..." LOAD_SUB_FILE="scregli un Sottotitolo:" MENU_CONTROLS="Controlli" MENU_GEEXBOX="GeeXboX" MENU_HELP="Aiuto" MENU_OPEN="Apri" MENU_PREFERENCES="Impostazioni" MENU_OPTIONS="Opzioni" MENU_QUIT="Esci" OPEN="Apri" OPEN_FILE="Apri File ..." OPTIONS="Opzioni" OPTIONS_AUTOPLAY="Modalità Autoplay ..." OPTIONS_DVD_SETTINGS="Impostazioni DVD ..." OPTIONS_FILE_FILTER="Filtro File ..." OPTIONS_IMG_SHOW="Intervallo visual. immagini ..." OPTIONS_INFOS="Informazioni ..." OPTIONS_RESET_PATH="Resetta percorso file" OPTIONS_SLEEP_TIMER="Regolazione Sleeptimer ..." OPTIONS_SUBS_SIZE="Dimensioni Sottotitoli ..." OPTIONS_TV_NORM="Formato video ..." OPTIONS_TV_SWITCH="Cambia TV-Out" OPTIONS_VSYNC="Cambia Sincronia Verticale" PLAYLIST="Vai a" PLAY_CDDA="Esegui Audio CD" PLAY_DVD="Esegui DVD" PLAY_VCD="Esegui VCD / XCD" PREFERENCES="Impostazioni" PREF_AUDIO="Audio ..." PREF_CHAPTERS="Selezione capitolo ..." PREF_PROPERTIES="Proprieta flusso..." PREF_SUBS="Sottotitoli ..." PREF_VIDEO="Video ..." SELECT_CHAPTER="Seleziona capitolo" SELECT_FILE="Seleziona un file:" SLEEP_TIMER="Sleeptimer (tempo allo spegnimento)" SLEEP_TIMER_120M="120min" SLEEP_TIMER_15M="15min" SLEEP_TIMER_30M="30min" SLEEP_TIMER_45M="45min" SLEEP_TIMER_60M="60min" SLEEP_TIMER_75M="75min" SLEEP_TIMER_90M="90min" SLEEP_TIMER_OFF="OFF (default)" SPEED="Velocita riproduzione" STREAM_ABITRATE="Audio Bitrate" STREAM_ACODEC="Audio Codec" STREAM_ALBUM="Album" STREAM_ARTIST="Artista" STREAM_ASAMPLES="Audio Samples" STREAM_COMMENT="Commento" STREAM_GENRE="Genere" STREAM_NAME="Nome" STREAM_PROPERTIES="Proprieta Flusso" STREAM_RESOLUTION="Risoluzione" STREAM_TITLE="Titolo" STREAM_TRACK="Traccia" STREAM_VBITRATE="Video Bitrate" STREAM_VCODEC="Video Codec" STREAM_YEAR="Anno" SUBS="Sottotitoli" SUBS_DELAY="Ritardo" SUBS_FORCED="Forced sub only" SUBS_POSITION="Posizione" SUBS_PREF="Sottotitoli" SUBS_SIZE="Dimensioni Sottotitoli" SUBS_SIZE_DEFAULT="Normali" SUBS_SIZE_GIANT="Giganti" SUBS_SIZE_HUGE="Enormi" SUBS_SIZE_LARGE="Grandi" SUBS_SIZE_SMALL="Piccoli" SUBS_VISIBILITY="Visibilita" TV_CHANNELS="Canali TV ..." TV_INPUT_COMPOSITE="Entrata Video Composito" TV_INPUT_SVHS="Entrata Video S-VHS" TV_NORM="Formato video" TV_SETTINGS="Impostazioni TV" VIDEO_ASPECT="Aspect Ratio ..." VIDEO_COLORS="Colori ..." VIDEO_FRAMEDROP="Frame dropping" VIDEO_PREF="Video" WATCH_DVB="Guarda TV Digitale (DVB)" WATCH_PVR="Guarda PVR" WATCH_TV="Guarda TV" WELCOME_CONSOLE="Benvenuti in GeeXboX" geexbox-1.1/packages/i18n-texts/config/jp.lang0000644000175000017500000001162410641745505017344 0ustar benbenASPECT="縦横比" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="ã‚·ãƒãƒžã‚¹ã‚³ãƒ¼ãƒ—" ASPECT_ORIGINAL="オリジナル" AUDIO_DELAY="ディレイ" AUDIO_MUTE="消音" AUDIO_PREF="音声設定" AUDIO_STREAMS="音声ストリーム" AUDIO_VOLUME="音é‡" AUTOPLAY="自動å†ç”Ÿãƒ¢ãƒ¼ãƒ‰" AUTOPLAY_DISABLE="自動å†ç”Ÿã‚’無効ã«ã™ã‚‹" AUTOPLAY_ENABLE="自動å†ç”Ÿã‚’有効ã«ã™ã‚‹" COLORS_BRIGHTNESS="明度" COLORS_CONTRAST="コントラスト" COLORS_GAMMA="ガンマ値" COLORS_HUE="色相" COLORS_PREF="色彩" COLORS_SATURATION="彩度" CTRLS="æ“作" CTRLS_EJECT="å–り出ã—" CTRLS_PAUSE="ä¸€æ™‚åœæ­¢" CTRLS_PLAYLIST="プレイリスト。。。" CTRLS_PREV_NEXT="戻るï¼é€²ã‚€" CTRLS_STOP="åœæ­¢" DEMUXER_NAME="デマルãƒãƒ—レクサ" DIGI_CHANNELS="ãƒãƒ£ãƒ³ãƒãƒ«ç®¡ç†" DIGI_CHANNELS_CANCEL="セーブã®ã‚­ãƒ£ãƒ³ã‚»ãƒ«" DIGI_CHANNELS_CONFIRM="セーブã®ç¢ºèª" DIGI_CHANNELS_SELECT="ãƒãƒ£ãƒ³ãƒãƒ«ã€€-/+" DIGI_CHANNELS_STORE="ã“ã®æ³¢æ•°ã‚’セーブã™ã‚‹" DIGI_RADIO="ラジオ" DIGI_RADIO_AM="AMラジオ" DIGI_RADIO_CHANNELS="ãƒãƒ£ãƒ³ãƒãƒ«ã€€-/+" DIGI_RADIO_CONFIG="ラジオ構æˆã€‚。。" DIGI_RADIO_FM="FMラジオ" DIGI_RADIO_OFF="ラジオを切る" DIGI_SAVE_CHANNEL="ãƒãƒ£ãƒ³ãƒãƒ«ãƒ—リセット。。。" DIGI_TUNING="æ‰‹å‹•é¸æŠž" DIGI_TUNING_FINE_MINUS="å°ã•ã„æ¤œç´¢ï¼ˆfine seek) -" DIGI_TUNING_FINE_PLUS="å°ã•ã„æ¤œç´¢ï¼ˆfine seek) +" DIGI_TUNING_SEEK_MINUS="検索(seek)−" DIGI_TUNING_SEEK_PLUS="検索(seek)+" DVD_PLAYBACK="DVDå†ç”Ÿãƒ¢ãƒ¼ãƒ‰" DVD_PLAYBACK_DIRECT="å†ç”Ÿ" DVD_PLAYBACK_DVDNAV="DVDナビゲーションメニュー" FILES_FILTER="ファイルフィルター" FILES_FILTER_ALL="ã™ã¹ã¦ã®ãƒ•ァイル表示ã™ã‚‹" FILES_FILTER_MEDIA="メディアファイルã®ã¿ã‚’表示ã™ã‚‹" IMG_10S="1ï¼ç§’" IMG_15M="15分" IMG_15S="15秒" IMG_1S="1秒" IMG_30S="3ï¼ç§’" IMG_3S="3秒" IMG_5M="5分" IMG_5S="5秒" IMG_60S="1分" IMG_SHOW_DISABLE="スライドショーを無効ã«ã™ã‚‹" IMG_SHOW_TIMEOUT="映åƒãŒã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã™ã‚‹ã¾ã§ã®æ™‚é–“" INFO="情報" LISTEN_RADIO="ラジオをèžã。。。" LIST_CHANNELS="ãƒãƒ£ãƒ³ãƒãƒ«ãƒªã‚¹ãƒˆã€‚。。" LOAD_SUB="字幕を読ã¿è¾¼ã‚€ã€‚。。" LOAD_SUB_FILE="字幕を読ã¿è¾¼ã‚€" MENU_CONTROLS="æ“作" MENU_GEEXBOX="ギックスボックス" MENU_HELP="ヘルプ" MENU_OPEN="é–‹ã" MENU_OPTIONS="オプション" MENU_PREFERENCES="設定" MENU_QUIT="終了" OPEN="é–‹ã" OPEN_FILE="ファイルを開ã‘る。。。" OPTIONS="オプション" OPTIONS_AUTOPLAY="自動å†ç”Ÿãƒ¢ãƒ¼ãƒ‰ã€‚。。" OPTIONS_DVD_SETTINGS="DVD設定。。。" OPTIONS_FILE_FILTER="ファイルフィルタ。。。" OPTIONS_IMG_SHOW="映åƒãŒã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã™ã‚‹ã¾ã§ã®æ™‚間。。。" OPTIONS_INFOS="情報。。。" OPTIONS_RESET_PATH="ファイルを開ã‘る所をリセットã™ã‚‹" OPTIONS_SLEEP_TIMER="スリープタイマー設定。。。" OPTIONS_SUBS_SIZE="字幕サイズ。。。" OPTIONS_TV_NORM="テレビã®è¦æ ¼ 。。。" OPTIONS_TV_SWITCH="テレビ切り替ãˆ" OPTIONS_VSYNC="åž‚ç›´åŒæœŸ" PLAYLIST="プレイリスト" PLAY_CDDA="オーディオCDをå†ç”Ÿã™ã‚‹" PLAY_DVD="DVDをå†ç”Ÿã™ã‚‹" PLAY_VCD="VCDï¼ï¼¸ï¼£ï¼¤ã‚’å†ç”Ÿã™ã‚‹" PREFERENCES="設定" PREF_AUDIO="音声。。。" PREF_CHAPTERS="ãƒãƒ£ãƒ—ã‚¿ãƒ¼é¸æŠžã€‚ã€‚ã€‚" PREF_PROPERTIES="ストリーム特性。。。" PREF_SUBS="字幕。。。" PREF_VIDEO="ビデオ。。。" SELECT_CHAPTER="ãƒãƒ£ãƒ—ã‚¿ãƒ¼é¸æŠž" SELECT_FILE="ãƒ•ã‚¡ã‚¤ãƒ«é¸æŠž" SLEEP_TIMER="スリープタイマー(シャットダウンã™ã‚‹ã¾" SLEEP_TIMER_120M="12ï¼åˆ†" SLEEP_TIMER_15M="15分" SLEEP_TIMER_30M="3ï¼åˆ†" SLEEP_TIMER_45M="45分" SLEEP_TIMER_60M="ï¼–ï¼åˆ†" SLEEP_TIMER_75M="75分" SLEEP_TIMER_90M="ï¼™ï¼åˆ†" SLEEP_TIMER_OFF="ã‚ªãƒ•ï¼ˆåˆæœŸè¨­å®šï¼‰" SPEED="速度" STREAM_ABITRATE="Audio Bitrate" STREAM_ACODEC="Audio Codec" STREAM_ALBUM="Album" STREAM_ARTIST="Artist" STREAM_ASAMPLES="Audio Samples" STREAM_COMMENT="Comment" STREAM_GENRE="Genre" STREAM_NAME="Name" STREAM_PROPERTIES="ストリーム特性" STREAM_RESOLUTION="Resolution" STREAM_TITLE="Title" STREAM_TRACK="Track" STREAM_VBITRATE="Video Bitrate" STREAM_VCODEC="Video Codec" STREAM_YEAR="Year" SUBS_DELAY="ディレイ" SUBS_FORCED="強制字幕表示" SUBS_POSITION="表示ä½ç½®" SUBS_PREF="字幕" SUBS_SIZE="字幕サイズ" SUBS_SIZE_DEFAULT="標準" SUBS_SIZE_GIANT="最大" SUBS_SIZE_HUGE="特大" SUBS_SIZE_LARGE="大" SUBS_SIZE_SMALL="å°" SUBS_VISIBILITY="鮮明度" TV_CHANNELS="テレビãƒãƒ£ãƒ³ãƒãƒ«ã€‚。。" TV_INPUT_COMPOSITE="コンãƒã‚¸ãƒƒãƒˆå…¥åŠ›" TV_INPUT_SVHS="S−VHS入力" TV_NORM="テレビã®è¦æ ¼" TV_SETTINGS="テレビを見る" VIDEO_ASPECT="アスペクト比" VIDEO_COLORS="色彩" VIDEO_FRAMEDROP="コマè½ã¡" VIDEO_PREF="ビデオ" WATCH_DVB="デジタルTVを見る" WATCH_PVR="PVRを見る" WATCH_TV="テレビを見る" WELCOME_CONSOLE="MPlï½ï½™ï½…ï½’ã¸ã‚ˆã†ã“ã" geexbox-1.1/packages/i18n-texts/config/ko.lang0000644000175000017500000000644010641745505017344 0ustar benbenASPECT="외양" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="시네마 스코프" ASPECT_ORIGINAL="ì›ë³¸" AUTOPLAY="Autoplay Mode" AUTOPLAY_DISABLE="Autoplay Disable" AUTOPLAY_ENABLE="Autoplay Enable" CTRLS="컨트롤" CTRLS_EJECT="꺼내기" CTRLS_PAUSE="잠시멈춤" CTRLS_PLAYLIST="ì í”„.." CTRLS_PREV_NEXT="ì´ì „/다ìŒ" CTRLS_STOP="ì •ì§€" DIGI_CHANNELS="Manage Channels" DIGI_CHANNELS_CANCEL="Cancel store" DIGI_CHANNELS_CONFIRM="Confirm store" DIGI_CHANNELS_SELECT="Channel -/+" DIGI_CHANNELS_STORE="Store current frequency" DIGI_RADIO="Radio" DIGI_RADIO_AM="Radio AM" DIGI_RADIO_CHANNELS="Channel -/+" DIGI_RADIO_CONFIG="Configure radio ..." DIGI_RADIO_FM="Radio FM" DIGI_RADIO_OFF="Radio off" DIGI_SAVE_CHANNEL="Save Channel ..." DIGI_TUNING="Manual Tune" DIGI_TUNING_FINE_MINUS="Fine tune -" DIGI_TUNING_FINE_PLUS="Fine tune +" DIGI_TUNING_SEEK_MINUS="Seek station -" DIGI_TUNING_SEEK_PLUS="Seek station +" DVD_PLAYBACK="DVD Playback Method" DVD_PLAYBACK_DIRECT="Direct Playback" DVD_PLAYBACK_DVDNAV="DVD Navigation Menu" FILES_FILTER="íŒŒì¼ í•„í„°" FILES_FILTER_ALL="모든 íŒŒì¼ ë³´ê¸°" FILES_FILTER_MEDIA="미디어 파ì¼ë§Œ 보기" IMG_10S="10ì´ˆ" IMG_15M="15ë¶„" IMG_15S="15ì´ˆ" IMG_1S="1ì´ˆ" IMG_30S="30ì´ˆ" IMG_3S="3ì´ˆ" IMG_5M="5ë¶„" IMG_5S="5ì´ˆ" IMG_60S="1ë¶„" IMG_SHOW_DISABLE="슬ë¼ì´ë“œì‡¼ ì •ì§€" IMG_SHOW_TIMEOUT="ì´ë¯¸ì§€ 보기 타임아웃" INFO="ì •ë³´" LISTEN_RADIO="Listen Radio ..." LIST_CHANNELS="List of Channels ..." MENU_CONTROLS="컨트롤" MENU_GEEXBOX="GeeXboX" MENU_HELP="ë„움ë§" MENU_OPEN="열기" MENU_OPTIONS="옵션" MENU_QUIT="ë내기" OPEN="열기" OPEN_FILE="íŒŒì¼ ì—´ê¸°" OPTIONS="옵션" OPTIONS_AUTOPLAY="Autoplay mode ..." OPTIONS_DVD_SETTINGS="DVD Settings ..." OPTIONS_FILE_FILTER="íŒŒì¼ í•„í„° ..." OPTIONS_IMG_SHOW="ì´ë¯¸ì§€ 보기 타임아웃 ..." OPTIONS_INFOS="ì •ë³´ ..." OPTIONS_RESET_PATH="Reset file open path" OPTIONS_SLEEP_TIMER="Set Sleeptimer ..." OPTIONS_SUBS_SIZE="Subtitles size ..." OPTIONS_TV_NORM="TV 기준..." OPTIONS_TV_SWITCH="TV-Out 스위치" OPTIONS_VSYNC="ìˆ˜ì§ Sync 스위치" PLAYLIST="ì í”„ " PLAY_CDDA="Audio CD 재ìƒ" PLAY_DVD="DVD 재ìƒ" PLAY_VCD="VCD / XCD 재ìƒ" PREF_CHAPTERS="Chapter selection ..." PREF_PROPERTIES="Stream Properties ..." SELECT_CHAPTER="Chapter ì„ íƒ" SELECT_FILE="파ì¼ì„ íƒ:" SLEEP_TIMER="Sleeptimer (time until shutdown)" SLEEP_TIMER_120M="120min" SLEEP_TIMER_15M="15min" SLEEP_TIMER_30M="30min" SLEEP_TIMER_45M="45min" SLEEP_TIMER_60M="60min" SLEEP_TIMER_75M="75min" SLEEP_TIMER_90M="90min" SLEEP_TIMER_OFF="OFF (default)" STREAM_ABITRATE="Audio Bitrate" STREAM_ACODEC="Audio Codec" STREAM_ALBUM="Album" STREAM_ARTIST="Artist" STREAM_ASAMPLES="Audio Samples" STREAM_COMMENT="Comment" STREAM_GENRE="Genre" STREAM_NAME="Name" STREAM_PROPERTIES="Stream Properties" STREAM_RESOLUTION="Resolution" STREAM_TITLE="Title" STREAM_TRACK="Track" STREAM_VBITRATE="Video Bitrate" STREAM_VCODEC="Video Codec" STREAM_YEAR="Year" SUBS_SIZE="Subtitles size" SUBS_SIZE_DEFAULT="Default" SUBS_SIZE_GIANT="Giant" SUBS_SIZE_HUGE="Huge" SUBS_SIZE_LARGE="Large" SUBS_SIZE_SMALL="Small" TV_CHANNELS="TV 채ë„" TV_INPUT_COMPOSITE="ìž…ë ¥ 합성" TV_INPUT_SVHS="S-VHS ìž…ë ¥" TV_NORM="TV 표준" TV_SETTINGS="TV 보기" WATCH_DVB="Watch Digital TV (DVB)" WATCH_PVR="Watch PVR" WATCH_TV="TV 보기" WELCOME_CONSOLE="Welcome to MPlayer" geexbox-1.1/packages/i18n-texts/config/nl.lang0000644000175000017500000000634110641745505017344 0ustar benbenASPECT="Weergave" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="Cinemascoop" ASPECT_ORIGINAL="Origineel" AUTOPLAY="Autoplay Mode" AUTOPLAY_DISABLE="Autoplay Disable" AUTOPLAY_ENABLE="Autoplay Enable" CTRLS="Bediening" CTRLS_EJECT="Eject" CTRLS_PAUSE="Pause" CTRLS_PLAYLIST="Ga naar ..." CTRLS_PREV_NEXT="Vorig/Volgend" CTRLS_STOP="Stop" DIGI_CHANNELS="Manage Channels" DIGI_CHANNELS_CANCEL="Cancel store" DIGI_CHANNELS_CONFIRM="Confirm store" DIGI_CHANNELS_SELECT="Channel -/+" DIGI_CHANNELS_STORE="Store current frequency" DIGI_RADIO="Radio" DIGI_RADIO_AM="Radio AM" DIGI_RADIO_CHANNELS="Channel -/+" DIGI_RADIO_CONFIG="Configure radio ..." DIGI_RADIO_FM="Radio FM" DIGI_RADIO_OFF="Radio off" DIGI_SAVE_CHANNEL="Save Channel ..." DIGI_TUNING="Manual Tune" DIGI_TUNING_FINE_MINUS="Fine tune -" DIGI_TUNING_FINE_PLUS="Fine tune +" DIGI_TUNING_SEEK_MINUS="Seek station -" DIGI_TUNING_SEEK_PLUS="Seek station +" DVD_PLAYBACK="DVD Playback Method" DVD_PLAYBACK_DIRECT="Direct Playback" DVD_PLAYBACK_DVDNAV="DVD Navigation Menu" FILES_FILTER="Files Filter" FILES_FILTER_ALL="Display all Files" FILES_FILTER_MEDIA="Display Media Files Only" IMG_10S="10s" IMG_15M="15min" IMG_15S="15s" IMG_1S="1s" IMG_30S="30s" IMG_3S="3s" IMG_5M="5min" IMG_5S="5s" IMG_60S="1min" IMG_SHOW_DISABLE="Disable slide show" IMG_SHOW_TIMEOUT="Image show timeout" INFO="Info" LISTEN_RADIO="Listen Radio ..." LIST_CHANNELS="List of Channels ..." MENU_CONTROLS="Bediening" MENU_GEEXBOX="GeeXboX" MENU_HELP="Help" MENU_OPEN="Open" MENU_OPTIONS="Opties" MENU_QUIT="Afsluiten" OPEN="Open" OPEN_FILE="Open bestand ..." OPTIONS="Opties" OPTIONS_AUTOPLAY="Autoplay mode ..." OPTIONS_DVD_SETTINGS="DVD Settings ..." OPTIONS_FILE_FILTER="Files Filter ..." OPTIONS_IMG_SHOW="Image show timeout ..." OPTIONS_INFOS="Info ..." OPTIONS_RESET_PATH="Reset file open path" OPTIONS_SLEEP_TIMER="Set Sleeptimer ..." OPTIONS_SUBS_SIZE="Subtitles size ..." OPTIONS_TV_NORM="TV Norm ..." OPTIONS_TV_SWITCH="Activeer TV-Out" OPTIONS_VSYNC="Activeer Vert. Sync." PLAYLIST="Ga naar" PLAY_CDDA="Speel Audio CD" PLAY_DVD="Speel DVD af" PLAY_VCD="Speel VCD / XCD af" PREF_CHAPTERS="Chapter selection ..." PREF_PROPERTIES="Stream Properties ..." SELECT_CHAPTER="Select chapter" SELECT_FILE="Kies een bestand:" SLEEP_TIMER="Sleeptimer (time until shutdown)" SLEEP_TIMER_120M="120min" SLEEP_TIMER_15M="15min" SLEEP_TIMER_30M="30min" SLEEP_TIMER_45M="45min" SLEEP_TIMER_60M="60min" SLEEP_TIMER_75M="75min" SLEEP_TIMER_90M="90min" SLEEP_TIMER_OFF="OFF (default)" STREAM_ABITRATE="Audio Bitrate" STREAM_ACODEC="Audio Codec" STREAM_ALBUM="Album" STREAM_ARTIST="Artist" STREAM_ASAMPLES="Audio Samples" STREAM_COMMENT="Comment" STREAM_GENRE="Genre" STREAM_NAME="Name" STREAM_PROPERTIES="Stream Properties" STREAM_RESOLUTION="Resolution" STREAM_TITLE="Title" STREAM_TRACK="Track" STREAM_VBITRATE="Video Bitrate" STREAM_VCODEC="Video Codec" STREAM_YEAR="Year" SUBS_SIZE="Subtitles size" SUBS_SIZE_DEFAULT="Default" SUBS_SIZE_GIANT="Giant" SUBS_SIZE_HUGE="Huge" SUBS_SIZE_LARGE="Large" SUBS_SIZE_SMALL="Small" TV_CHANNELS="TV Channels ..." TV_INPUT_COMPOSITE="Composite Input" TV_INPUT_SVHS="S-VHS Input" TV_NORM="TV Norm" TV_SETTINGS="Open TV" WATCH_DVB="Watch Digital TV (DVB)" WATCH_PVR="Watch PVR" WATCH_TV="Open TV" WELCOME_CONSOLE="Welcome to MPlayer" geexbox-1.1/packages/i18n-texts/config/no.lang0000644000175000017500000001006310642012221017322 0ustar benbenASPECT="Aspekt" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="Kino" ASPECT_ORIGINAL="Original" AUDIO_DELAY="Utsett" AUDIO_MUTE="Demp" AUDIO_PREF="Lyd egenskaper" AUDIO_STREAMS="Lyd Stream" AUDIO_VOLUME="Volum" AUTOPLAY="Autostart Modus" AUTOPLAY_DISABLE="Deaktiver Autostart" AUTOPLAY_ENABLE="Aktiver Autostart " COLORS_BRIGHTNESS="Lys" COLORS_CONTRAST="Kontrast" COLORS_GAMMA="Gamma" COLORS_HUE="Fargenyanser" COLORS_PREF="Farger" COLORS_SATURATION="Metningsgrad" CTRLS="Kontrollpanel" CTRLS_EJECT="Løs ut cd/dvd" CTRLS_PAUSE="Pause" CTRLS_PLAYLIST="Spilleliste ..." CTRLS_PREV_NEXT="Forrige/Neste" CTRLS_STOP="Stop" DEMUXER_NAME="Demuxer" DIGI_CHANNELS="Kanal instillinger" DIGI_CHANNELS_CANCEL="Avbryt lagring" DIGI_CHANNELS_CONFIRM="Bekreft lagring" DIGI_CHANNELS_SELECT="Kanal -/+" DIGI_CHANNELS_STORE="Lagre aktuelle frekvens" DIGI_RADIO="Radio" DIGI_RADIO_AM="Radio AM" DIGI_RADIO_CHANNELS="Kanal -/+" DIGI_RADIO_CONFIG="Konfigurer lyd ..." DIGI_RADIO_FM="Radio FM" DIGI_RADIO_OFF="Radio av" DIGI_SAVE_CHANNEL="Lagre kanal ..." DIGI_TUNING="Manuell Instilling" DIGI_TUNING_FINE_MINUS="Finjuster -" DIGI_TUNING_FINE_PLUS="Finjuster +" DIGI_TUNING_SEEK_MINUS="Søk etter stasjon -" DIGI_TUNING_SEEK_PLUS="Søk etter stasjon +" DVD_PLAYBACK="Avspillings Metoder For DVD" DVD_PLAYBACK_DIRECT="Direkte Avspilling" DVD_PLAYBACK_DVDNAV="DVD Navigerings Meny" FILES_FILTER="Fil Filter" FILES_FILTER_ALL="Vis alle Filer" FILES_FILTER_MEDIA="Vis kun Media Filer" IMG_10S="10s" IMG_15M="15min" IMG_15S="15s" IMG_1S="1s" IMG_30S="30s" IMG_3S="3s" IMG_5M="5min" IMG_5S="5s" IMG_60S="1min" IMG_SHOW_DISABLE="Stopp lysbildefremvisning" IMG_SHOW_TIMEOUT="Lysbilde tidsavbrudd" INFO="Info" LISTEN_RADIO="Hør pÃ¥ Radio ..." LIST_CHANNELS="Kanalliste ..." LOAD_SUB="Last undertekst ..." LOAD_SUB_FILE="Last en undertekst:" MENU_CONTROLS="Kontrollpanel" MENU_GEEXBOX="GeeXboX" MENU_HELP="Hjelp" MENU_OPEN="Ã…pne" MENU_OPTIONS="Opsjoner" MENU_PREFERENCES="Innstillinger" MENU_QUIT="Avslutt" OPEN="Ã…pne" OPEN_FILE="Ã…pne fil ..." OPTIONS="Opsjoner" OPTIONS_AUTOPLAY="Autostart modus ..." OPTIONS_DVD_SETTINGS="DVD Instillinger ..." OPTIONS_FILE_FILTER="Fil Filter ..." OPTIONS_IMG_SHOW="Lysbilde tidsavbrudd ..." OPTIONS_INFOS="Info ..." OPTIONS_RESET_PATH="Sett Tilbake Til Standard Filsti" OPTIONS_SLEEP_TIMER="Søvnfunksjon ..." OPTIONS_SUBS_SIZE="Undertekst strørrelse ..." OPTIONS_TV_NORM="TV Norm ..." OPTIONS_TV_SWITCH="Bytt Til TV-ut" OPTIONS_VSYNC="Bytt Vertikal Synk" PLAYLIST="GÃ¥ til" PLAY_CDDA="Spill musikk CD" PLAY_DVD="Spill DVD" PLAY_VCD="Spill VCD / XCD" PREFERENCES="Instillinger" PREF_AUDIO="Lyd ..." PREF_CHAPTERS="Velg Kapittel ..." PREF_PROPERTIES="Stream Egenskaper ..." PREF_SUBS="Undertekst ..." PREF_VIDEO="Video ..." SELECT_CHAPTER="Velg kapittel" SELECT_FILE="Velg en fil:" SLEEP_TIMER="Søvn Funksjon (Tid Før Pc SlÃ¥s Av)" SLEEP_TIMER_120M="120min" SLEEP_TIMER_15M="15min" SLEEP_TIMER_30M="30min" SLEEP_TIMER_45M="45min" SLEEP_TIMER_60M="60min" SLEEP_TIMER_75M="75min" SLEEP_TIMER_90M="90min" SLEEP_TIMER_OFF="Av (Standard)" SPEED="Hastighet" STREAM_ABITRATE="Lyd Bithastighet" STREAM_ACODEC="Lyd Kodek" STREAM_ALBUM="Album" STREAM_ARTIST="Artist" STREAM_ASAMPLES="Lyd eksempel" STREAM_COMMENT="Kommentar" STREAM_GENRE="Genre" STREAM_NAME="Navn" STREAM_PROPERTIES="Stream egenskaper" STREAM_RESOLUTION="Oppløsning" STREAM_TITLE="Tittel" STREAM_TRACK="Spor" STREAM_VBITRATE="Video Bithastighet" STREAM_VCODEC="Video Kodek" STREAM_YEAR="Ã…r" SUBS="Undertekst" SUBS_DELAY="Utsett" SUBS_FORCED="Bare undertekst" SUBS_POSITION="Posisjon" SUBS_PREF="Undertekst" SUBS_SIZE="Undertekst størrelse" SUBS_SIZE_DEFAULT="Standard" SUBS_SIZE_GIANT="Kjempe stor" SUBS_SIZE_HUGE="Stor" SUBS_SIZE_LARGE="Medium" SUBS_SIZE_SMALL="Liten" SUBS_VISIBILITY="Synlighet" TV_CHANNELS="TV Kanaler ..." TV_INPUT_COMPOSITE="Kompositt Inngang" TV_INPUT_SVHS="S-VHS Inngang" TV_NORM="TV Norm" TV_SETTINGS="Se pÃ¥ TV" VIDEO_ASPECT="Aspekt forhold ..." VIDEO_COLORS="Farger ..." VIDEO_FRAMEDROP="Tap av bilder" VIDEO_PREF="Video" WATCH_DVB="Se pÃ¥ Digital TV (DVB)" WATCH_PVR="Se PVR" WATCH_TV="Se pÃ¥ TV" WELCOME_CONSOLE="Velkommen til MPlayer" geexbox-1.1/packages/i18n-texts/config/pl.lang0000644000175000017500000001041110641745505017337 0ustar benbenASPECT="Widok" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="Zakres kinowy" ASPECT_ORIGINAL="Originalny" AUDIO_DELAY="Opóźnienie" AUDIO_MUTE="Wycisz" AUDIO_PREF="Preferencje Audio" AUDIO_STREAMS="StrumieÅ„ Audio" AUDIO_VOLUME="GÅ‚oÅ›ność" AUTOPLAY="Tryb autoodtwarzania" AUTOPLAY_DISABLE="Wyłącz autoodtwarzanie" AUTOPLAY_ENABLE="Włącz autoodtwarzanie" COLORS_BRIGHTNESS="Jasność" COLORS_CONTRAST="Kontrast" COLORS_GAMMA="Gamma" COLORS_HUE="OdcieÅ„" COLORS_PREF="Kolory" COLORS_SATURATION="Nasycenie" CTRLS="Sterowanie" CTRLS_EJECT="WysuÅ„" CTRLS_PAUSE="Pauza" CTRLS_PLAYLIST="Przejdź do ..." CTRLS_PREV_NEXT="Poprzedni/NastÄ™pny" CTRLS_STOP="Stop" DEMUXER_NAME="Demuxer" DIGI_CHANNELS="ZarzÄ…dzanie kanaÅ‚ami" DIGI_CHANNELS_CANCEL="Zaniechaj magazynowanie" DIGI_CHANNELS_CONFIRM="Potwierdź magazynowanie" DIGI_CHANNELS_SELECT="KanaÅ‚ -/+" DIGI_CHANNELS_STORE="Magazynuj aktualnÄ… czÄ™stotliwość" DIGI_RADIO="Radio" DIGI_RADIO_AM="Radio AM" DIGI_RADIO_CHANNELS="KanaÅ‚ -/+" DIGI_RADIO_CONFIG="Konfiguracja radia ..." DIGI_RADIO_FM="Radio FM" DIGI_RADIO_OFF="Wyłącz radio" DIGI_SAVE_CHANNEL="Zapisz KanaÅ‚ ..." DIGI_TUNING="RÄ™czne Strojenie" DIGI_TUNING_FINE_MINUS="Precyzyjne dostrojenie -" DIGI_TUNING_FINE_PLUS="Precyzyjne dostrojenie +" DIGI_TUNING_SEEK_MINUS="Szukaj stacji -" DIGI_TUNING_SEEK_PLUS="Szukaj stacji +" DVD_PLAYBACK="Metoda odtwarzania DVD" DVD_PLAYBACK_DIRECT="BezpoÅ›rednie odtwarzanie" DVD_PLAYBACK_DVDNAV="Menu Nawigacyjne DVD" FILES_FILTER="Widok plików" FILES_FILTER_ALL="WyÅ›wietl wszystkie pliki" FILES_FILTER_MEDIA="WyÅ›wietl tylko pliki multimedialne" IMG_10S="10s" IMG_15M="15min" IMG_15S="15s" IMG_1S="1s" IMG_30S="30s" IMG_3S="3s" IMG_5M="5min" IMG_5S="5s" IMG_60S="1min" IMG_SHOW_DISABLE="Wyłącz pokaz slajdów" IMG_SHOW_TIMEOUT="Czas pokazu slajdów" INFO="Informacje" LISTEN_RADIO="SÅ‚uchaj Radia ..." LIST_CHANNELS="Lista Kanałów ..." LOAD_SUB="ZaÅ‚aduj napisy ..." LOAD_SUB_FILE="Uruchom napisy:" MENU_CONTROLS="Sterowanie" MENU_GEEXBOX="GeeXboX" MENU_HELP="Pomoc" MENU_OPEN="Otwórz" MENU_OPTIONS="Opcje" MENU_PREFERENCES="Preferencje" MENU_QUIT="Koniec" OPEN="Otwórz" OPEN_FILE="Otwórz plik ..." OPTIONS="Opcje" OPTIONS_AUTOPLAY="Tryb autoodtwarzania ..." OPTIONS_DVD_SETTINGS="Ustawienia DVD ..." OPTIONS_FILE_FILTER="Widok plikow ..." OPTIONS_IMG_SHOW="InterwaÅ‚ Pokazu Slajdów ..." OPTIONS_INFOS="Informacje ..." OPTIONS_RESET_PATH="Resetuj otwarty plik" OPTIONS_SLEEP_TIMER="Ustaw czas autowyłączania ..." OPTIONS_SUBS_SIZE="Rozmiar czcionki ..." OPTIONS_TV_NORM="SygnaÅ‚ TV ..." OPTIONS_TV_SWITCH="Przełącz TV-Out" OPTIONS_VSYNC="Przełącz do widoku pionowego" PLAYLIST="Przejdź do" PLAY_CDDA="Odtwarzaj Audio CD" PLAY_DVD="Odtwarzaj DVD" PLAY_VCD="Odtwarzaj VCD / XCD" PREFERENCES="Preferenje" PREF_AUDIO="Audio ..." PREF_CHAPTERS="Wybór rozdziaÅ‚u ..." PREF_PROPERTIES="WÅ‚aÅ›ciwoÅ›ci strumienia ..." PREF_SUBS="Napisy ..." PREF_VIDEO="Video ..." SELECT_CHAPTER="Wybierz RozdziaÅ‚" SELECT_FILE="Wybierz plik:" SLEEP_TIMER="Autowyłączenie" SLEEP_TIMER_120M="120min" SLEEP_TIMER_15M="15min" SLEEP_TIMER_30M="30min" SLEEP_TIMER_45M="45min" SLEEP_TIMER_60M="60min" SLEEP_TIMER_75M="75min" SLEEP_TIMER_90M="90min" SLEEP_TIMER_OFF="Brak (domyÅ›lnie)" SPEED="PrÄ™dkość" STREAM_ABITRATE="Audio Bitrate" STREAM_ACODEC="Audio dekoder" STREAM_ALBUM="Album" STREAM_ARTIST="Wykonawca" STREAM_ASAMPLES="Audio Samples" STREAM_COMMENT="Komentarz" STREAM_GENRE="Rodzaj" STREAM_NAME="Nazwa" STREAM_PROPERTIES="WÅ‚aÅ›ciwoÅ›ci Strumienia" STREAM_RESOLUTION="Rozdzielczość" STREAM_TITLE="TytuÅ‚" STREAM_TRACK="Utwór" STREAM_VBITRATE="Video Bitrate" STREAM_VCODEC="Video dekoder" STREAM_YEAR="Rok" SUBS="Napisy" SUBS_DELAY="Opóźnienie" SUBS_FORCED="WymuÅ› tylko napisy" SUBS_POSITION="Pozycja" SUBS_PREF="Napisy" SUBS_SIZE="Rozmiar napisów" SUBS_SIZE_DEFAULT="DomyÅ›lne" SUBS_SIZE_GIANT="Gigantyczne" SUBS_SIZE_HUGE="Ogromne" SUBS_SIZE_LARGE="Duże" SUBS_SIZE_SMALL="MaÅ‚e" SUBS_VISIBILITY="Widoczność" TV_CHANNELS="KanaÅ‚y TV ..." TV_INPUT_COMPOSITE="WejÅ›cie Composite" TV_INPUT_SVHS="WejÅ›cie S-VHS" TV_NORM="SygnaÅ‚ TV" TV_SETTINGS="Ustawiena TV" VIDEO_ASPECT="prpoprcja widoku ..." VIDEO_COLORS="Kolory ..." VIDEO_FRAMEDROP="zmiana ramki" VIDEO_PREF="Video" WATCH_DVB="OglÄ…daj CyfrowÄ… TV (DVB)" WATCH_PVR="OglÄ…daj PVR" WATCH_TV="OglÄ…daj TV" WELCOME_CONSOLE="Witaj w MPlayer" geexbox-1.1/packages/i18n-texts/config/ro.lang0000644000175000017500000000676010641745505017360 0ustar benbenASPECT="Aspect" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="Cinema" ASPECT_ORIGINAL="Original" AUTOPLAY="Mod de redare automată" AUTOPLAY_DISABLE="Redare automată dezactivată" AUTOPLAY_ENABLE="Redare automată activată" CTRLS="Controale" CTRLS_EJECT="Scoate" CTRLS_PAUSE="Pauză" CTRLS_PLAYLIST="Sări la ..." CTRLS_PREV_NEXT="ÃŽnapoi/ÃŽnainte" CTRLS_STOP="Stop" DIGI_CHANNELS="Ajustare canale" DIGI_CHANNELS_CANCEL="RenunÅ£are stocare" DIGI_CHANNELS_CONFIRM="Confirmare stocare" DIGI_CHANNELS_SELECT="Canal -/+" DIGI_CHANNELS_STORE="Stocare frecvenţă curentă" DIGI_RADIO="Radio" DIGI_RADIO_AM="Radio AM" DIGI_RADIO_CHANNELS="Canal -/+" DIGI_RADIO_CONFIG="Configurare radio ..." DIGI_RADIO_FM="Radio FM" DIGI_RADIO_OFF="Dezactivare radio" DIGI_SAVE_CHANNEL="Salvare canal ..." DIGI_TUNING="Căutare manuală" DIGI_TUNING_FINE_MINUS="Căutare fină -" DIGI_TUNING_FINE_PLUS="Căutare fină +" DIGI_TUNING_SEEK_MINUS="Caută staÅ£ie -" DIGI_TUNING_SEEK_PLUS="Caută staÅ£ie +" DVD_PLAYBACK="Metodă navigare DVD" DVD_PLAYBACK_DIRECT="Navigare directă" DVD_PLAYBACK_DVDNAV="Navigare cu meniul DVD" FILES_FILTER="Filtru fiÅŸiere" FILES_FILTER_ALL="Arată toate fiÅŸierele" FILES_FILTER_MEDIA="Arată doar fiÅŸierele media" IMG_10S="10s" IMG_15M="15min" IMG_15S="15s" IMG_1S="1s" IMG_30S="30s" IMG_3S="3s" IMG_5M="5min" IMG_5S="5s" IMG_60S="1min" IMG_SHOW_DISABLE="Dezactivează prezentarea automată" IMG_SHOW_TIMEOUT="Timp vizualizare poză" INFO="InformaÅ£ii" LISTEN_RADIO="Ascultă radio ..." LIST_CHANNELS="Listă de canale ..." MENU_CONTROLS="Controale" MENU_GEEXBOX="GeeXboX" MENU_HELP="Ajutor" MENU_OPEN="Deschide" MENU_OPTIONS="OpÅ£iuni" MENU_QUIT="IeÅŸire" OPEN="Deschide" OPEN_FILE="Deschide fiÅŸier ..." OPTIONS="OpÅ£iuni" OPTIONS_AUTOPLAY="Mod de redare automată ..." OPTIONS_DVD_SETTINGS="Setări DVD ..." OPTIONS_FILE_FILTER="Filtru fiÅŸiere ..." OPTIONS_IMG_SHOW="Timp vizualizare poză ..." OPTIONS_INFOS="InformaÅ£ii ..." OPTIONS_RESET_PATH="Resetare cale deschidere fiÅŸiere" OPTIONS_SLEEP_TIMER="Setare timp aÅ£ipire ..." OPTIONS_SUBS_SIZE="Subtitles size ..." OPTIONS_TV_NORM="Standard TV ..." OPTIONS_TV_SWITCH="Schimbă TV-Out" OPTIONS_VSYNC="Schimbă sincronizare verticală" PLAYLIST="Sări la" PLAY_CDDA="Rulează CD Audio" PLAY_DVD="Rulează DVD" PLAY_VCD="Rulează VCD / XCD" PREF_CHAPTERS="SelecÅ£ie capitol ..." PREF_PROPERTIES="Proprietăţi flux ..." SELECT_CHAPTER="Selectează capitol" SELECT_FILE="Selectează un fiÅŸier:" SLEEP_TIMER="AÅ£ipire (timp până la închidere)" SLEEP_TIMER_120M="120min" SLEEP_TIMER_15M="15min" SLEEP_TIMER_30M="30min" SLEEP_TIMER_45M="45min" SLEEP_TIMER_60M="60min" SLEEP_TIMER_75M="75min" SLEEP_TIMER_90M="90min" SLEEP_TIMER_OFF="Dezactivează (iniÅ£ial)" STREAM_ABITRATE="Audio Bitrate" STREAM_ACODEC="Audio Codec" STREAM_ALBUM="Album" STREAM_ARTIST="Artist" STREAM_ASAMPLES="Audio Samples" STREAM_COMMENT="Comment" STREAM_GENRE="Genre" STREAM_NAME="Name" STREAM_PROPERTIES="Proprietăţi flux" STREAM_RESOLUTION="Resolution" STREAM_TITLE="Title" STREAM_TRACK="Track" STREAM_VBITRATE="Video Bitrate" STREAM_VCODEC="Video Codec" STREAM_YEAR="Year" SUBS_SIZE="Subtitles size" SUBS_SIZE_DEFAULT="Default" SUBS_SIZE_GIANT="Giant" SUBS_SIZE_HUGE="Huge" SUBS_SIZE_LARGE="Large" SUBS_SIZE_SMALL="Small" TV_CHANNELS="Canale TV ..." TV_INPUT_COMPOSITE="Intrarea video composite" TV_INPUT_SVHS="Intrare video S-VHS" TV_NORM="Standard TV" TV_SETTINGS="Deschide TV" WATCH_DVB="UrmăreÅŸte TV digital (DVB)" WATCH_PVR="Watch PVR" WATCH_TV="Deschide TV" WELCOME_CONSOLE="Bine aÅ£i venit la MPlayer" geexbox-1.1/packages/i18n-texts/config/ru.lang0000644000175000017500000001331310641745505017356 0ustar benbenASPECT="Пропорции" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="КинематографичеÑкий" ASPECT_ORIGINAL="Оригинальный" AUDIO_DELAY="Задержка" AUDIO_MUTE="Выкл. звук" AUDIO_PREF="УÑтановки звука" AUDIO_STREAMS="Ðудио поток" AUDIO_VOLUME="ГромкоÑть" AUTOPLAY="ÐвтовоÑпроизведение" AUTOPLAY_DISABLE="Выключить автовоÑпроизведение" AUTOPLAY_ENABLE="Включить автовоÑпроизведение" COLORS_BRIGHTNESS="ЯркоÑть" COLORS_CONTRAST="КонтраÑÑ‚" COLORS_GAMMA="Гамма" COLORS_HUE="ЦветноÑть" COLORS_PREF="Цвета" COLORS_SATURATION="ÐаÑыщенноÑть" CTRLS="Управление" CTRLS_EJECT="Извлечь" CTRLS_PAUSE="Пауза" CTRLS_PLAYLIST="Перейти к ..." CTRLS_PREV_NEXT="Пред./След." CTRLS_STOP="Стоп" DEMUXER_NAME="ДемультиплекÑор" DIGI_CHANNELS="ÐаÑтройка Ñтанций" DIGI_CHANNELS_CANCEL="Отменить Ñохранение" DIGI_CHANNELS_CONFIRM="Подтвердить Ñохранение" DIGI_CHANNELS_SELECT="РадиоÑÑ‚Ð°Ð½Ñ†Ð¸Ñ -/+" DIGI_CHANNELS_STORE="Сохранить текущую чаÑтоту" DIGI_RADIO="Радио" DIGI_RADIO_AM="AM радио" DIGI_RADIO_CHANNELS="РадиоÑÑ‚Ð°Ð½Ñ†Ð¸Ñ -/+" DIGI_RADIO_CONFIG="ÐаÑтройки радио ..." DIGI_RADIO_FM="FM радио" DIGI_RADIO_OFF="Выключить радио" DIGI_SAVE_CHANNEL="Сохранить Ñтанцию ..." DIGI_TUNING="Ручной поиÑк" DIGI_TUNING_FINE_MINUS="Ð¢Ð¾Ñ‡Ð½Ð°Ñ Ð½Ð°Ñтройка -" DIGI_TUNING_FINE_PLUS="Ð¢Ð¾Ñ‡Ð½Ð°Ñ Ð½Ð°Ñтройка +" DIGI_TUNING_SEEK_MINUS="ПоиÑк Ñтанции -" DIGI_TUNING_SEEK_PLUS="ПоиÑк Ñтанции +" DVD_PLAYBACK="УÑтановки DVD" DVD_PLAYBACK_DIRECT="ПрÑмое воÑпроизведение" DVD_PLAYBACK_DVDNAV="Меню навигации DVD" FILES_FILTER="Фильтр файлов" FILES_FILTER_ALL="Отображать вÑе файлы" FILES_FILTER_MEDIA="Отображать только медиа" IMG_10S="10Ñек" IMG_15M="15мин" IMG_15S="15Ñек" IMG_1S="1Ñек" IMG_30S="30Ñек" IMG_3S="3Ñек" IMG_5M="5мин" IMG_5S="5Ñек" IMG_60S="1мин" IMG_SHOW_DISABLE="Отключить показ Ñлайдов" IMG_SHOW_TIMEOUT="Задержка Ñлайдов" INFO="ИнформациÑ" LISTEN_RADIO="Слушать радио ..." LIST_CHANNELS="СпиÑок каналов ..." LOAD_SUB_FILE="Загрузить Ñубтитры:" LOAD_SUB="Загрузить Ñубтитры ..." MENU_CONTROLS="Управление" MENU_GEEXBOX="GeeXboX" MENU_HELP="Помошь" MENU_OPEN="Открыть" MENU_OPTIONS="ÐаÑтройки" MENU_PREFERENCES="УÑтановки" MENU_QUIT="Выход" OPEN="Открыть" OPEN_FILE="Открыть файл ..." OPTIONS="ÐаÑтройки" OPTIONS_AUTOPLAY="ÐвтовоÑпроизведение ..." OPTIONS_DVD_SETTINGS="УÑтановки DVD ..." OPTIONS_FILE_FILTER="Фильтр файлов ..." OPTIONS_IMG_SHOW="Задержка Ñлайд-шоу ..." OPTIONS_INFOS="Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ ..." OPTIONS_RESET_PATH="СброÑить путь Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²" OPTIONS_SLEEP_TIMER="Ðвтовыключение ..." OPTIONS_SUBS_SIZE="Размер Ñубтитров ..." OPTIONS_TV_NORM="TV Ñтандарт ..." OPTIONS_TV_SWITCH="Включить TV-выход" OPTIONS_VSYNC="Включить верт. Ñинхр." PLAYLIST="Перейти к" PLAY_CDDA="ВоÑпроизвеÑти Audio CD" PLAY_DVD="ВоÑпроизвеÑти DVD" PLAY_VCD="ВоÑпроизвеÑти VCD / XCD" PREFERENCES="УÑтановки" PREF_AUDIO="Ðудио ..." PREF_CHAPTERS="Выбор Ñпизода ..." PREF_PROPERTIES="СвойÑтва потока ..." PREF_SUBS="Субтитры ..." PREF_VIDEO="Видео ..." SELECT_CHAPTER="Выбрать Ñпизод" SELECT_FILE="Выбрать файл:" SLEEP_TIMER="Ðвтовыключение (Ð²Ñ€ÐµÐ¼Ñ Ð´Ð¾ выключениÑ)" SLEEP_TIMER_120M="120мин" SLEEP_TIMER_15M="15мин" SLEEP_TIMER_30M="30мин" SLEEP_TIMER_45M="45мин" SLEEP_TIMER_60M="60мин" SLEEP_TIMER_75M="75мин" SLEEP_TIMER_90M="90мин" SLEEP_TIMER_OFF="Отключено (по-умолчанию)" SPEED="СкороÑть" STREAM_ABITRATE="Ðудио битрейт" STREAM_ACODEC="Ðудио кодек" STREAM_ALBUM="Ðльбом" STREAM_ARTIST="ÐртиÑÑ‚" STREAM_ASAMPLES="ЧаÑтота диÑкретизации" STREAM_COMMENT="Комментарий" STREAM_GENRE="Жанр" STREAM_NAME="Ðазвание" STREAM_PROPERTIES="СвойÑтва потока" STREAM_RESOLUTION="Разрешение" STREAM_TITLE="Заголовок" STREAM_TRACK="Дорожка" STREAM_VBITRATE="Видео битрейт" STREAM_VCODEC="Видео кодек" STREAM_YEAR="Год" SUBS="Субтитры" SUBS_DELAY="Задержка" SUBS_FORCED="Forced sub only" SUBS_POSITION="Положение" SUBS_PREF="Субтитры" SUBS_SIZE="Размер Ñубтитров" SUBS_SIZE_DEFAULT="По умолчанию" SUBS_SIZE_GIANT="ГигантÑкие" SUBS_SIZE_HUGE="Огромные" SUBS_SIZE_LARGE="Крупные" SUBS_SIZE_SMALL="Мелкие" SUBS_VISIBILITY="Видимые" TV_CHANNELS="TV Программы ..." TV_INPUT_COMPOSITE="Выбрать вход Composite" TV_INPUT_SVHS="Выбрать вход S-VHS" TV_NORM="TV Стандарт" TV_SETTINGS="Открыть TV" VIDEO_ASPECT="Пропорции ..." VIDEO_COLORS="Цвета ..." VIDEO_FRAMEDROP="ПропуÑк кадров" VIDEO_PREF="Видео" WATCH_DVB="Смотреть цифровое TV (DVB)" WATCH_PVR="Смотреть PVR" WATCH_TV="Открыть TV" WELCOME_CONSOLE="Welcome to MPlayer" geexbox-1.1/packages/i18n-texts/config/sk.lang0000644000175000017500000000644110641745505017351 0ustar benbenASPECT="Pomer stran obrazu" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="Cinemaskop" ASPECT_ORIGINAL="Povodny" AUTOPLAY="Autoplay Mode" AUTOPLAY_DISABLE="Autoplay Disable" AUTOPLAY_ENABLE="Autoplay Enable" CTRLS="Ovladanie" CTRLS_EJECT="Vysunutie" CTRLS_PAUSE="Pauza" CTRLS_PLAYLIST="Prejst na ..." CTRLS_PREV_NEXT="Predch/Dalsi" CTRLS_STOP="Zastavit" DIGI_CHANNELS="Manage Channels" DIGI_CHANNELS_CANCEL="Cancel store" DIGI_CHANNELS_CONFIRM="Confirm store" DIGI_CHANNELS_SELECT="Channel -/+" DIGI_CHANNELS_STORE="Store current frequency" DIGI_RADIO="Radio" DIGI_RADIO_AM="Radio AM" DIGI_RADIO_CHANNELS="Channel -/+" DIGI_RADIO_CONFIG="Configure radio ..." DIGI_RADIO_FM="Radio FM" DIGI_RADIO_OFF="Radio off" DIGI_SAVE_CHANNEL="Save Channel ..." DIGI_TUNING="Manual Tune" DIGI_TUNING_FINE_MINUS="Fine tune -" DIGI_TUNING_FINE_PLUS="Fine tune +" DIGI_TUNING_SEEK_MINUS="Seek station -" DIGI_TUNING_SEEK_PLUS="Seek station +" DVD_PLAYBACK="DVD Playback Method" DVD_PLAYBACK_DIRECT="Direct Playback" DVD_PLAYBACK_DVDNAV="DVD Navigation Menu" FILES_FILTER="Files Filter" FILES_FILTER_ALL="Zobrazit vsetky subory" FILES_FILTER_MEDIA="Zobrazit iba multimedialne subory" IMG_10S="10s" IMG_15M="15min" IMG_15S="15s" IMG_1S="1s" IMG_30S="30s" IMG_3S="3s" IMG_5M="5min" IMG_5S="5s" IMG_60S="1min" IMG_SHOW_DISABLE="Zrusenie slideshow" IMG_SHOW_TIMEOUT="Image show timeout" INFO="Info" LISTEN_RADIO="Pocuvat radio ..." LIST_CHANNELS="Zoznam kanalov ..." MENU_CONTROLS="Ovladanie" MENU_GEEXBOX="GeeXboX" MENU_HELP="Pomoc" MENU_OPEN="Otvorit" MENU_OPTIONS="Volby" MENU_QUIT="Koniec" OPEN="Otvorit" OPEN_FILE="Prehrat subor ..." OPTIONS="Volby" OPTIONS_AUTOPLAY="Autoplay mode ..." OPTIONS_DVD_SETTINGS="DVD Settings ..." OPTIONS_FILE_FILTER="Suborovy filter ..." OPTIONS_IMG_SHOW="Image show timeout ..." OPTIONS_INFOS="Informacie ..." OPTIONS_RESET_PATH="Reset file open path" OPTIONS_SLEEP_TIMER="Nastavit casovac ..." OPTIONS_SUBS_SIZE="Subtitles size ..." OPTIONS_TV_NORM="TV Norm ..." OPTIONS_TV_SWITCH="Prepnut TV vystup" OPTIONS_VSYNC="Prepnut vertikalnu synch." PLAYLIST="Prejst na na" PLAY_CDDA="Prehrat Audio CD" PLAY_DVD="Prehrat DVD" PLAY_VCD="Prehrat VCD / XCD" PREF_CHAPTERS="Vyber kapitoly ..." PREF_PROPERTIES="Stream Properties ..." SELECT_CHAPTER="Vyber kapitoly" SELECT_FILE="Vybrat subor:" SLEEP_TIMER="Sleeptimer (time until shutdown)" SLEEP_TIMER_120M="120min" SLEEP_TIMER_15M="15min" SLEEP_TIMER_30M="30min" SLEEP_TIMER_45M="45min" SLEEP_TIMER_60M="60min" SLEEP_TIMER_75M="75min" SLEEP_TIMER_90M="90min" SLEEP_TIMER_OFF="VYPNUTY (standardne)" STREAM_ABITRATE="Audio Bitrate" STREAM_ACODEC="Audio Codec" STREAM_ALBUM="Album" STREAM_ARTIST="Artist" STREAM_ASAMPLES="Audio Samples" STREAM_COMMENT="Comment" STREAM_GENRE="Genre" STREAM_NAME="Name" STREAM_PROPERTIES="Stream Properties" STREAM_RESOLUTION="Resolution" STREAM_TITLE="Title" STREAM_TRACK="Track" STREAM_VBITRATE="Video Bitrate" STREAM_VCODEC="Video Codec" STREAM_YEAR="Year" SUBS_SIZE="Subtitles size" SUBS_SIZE_DEFAULT="Default" SUBS_SIZE_GIANT="Giant" SUBS_SIZE_HUGE="Huge" SUBS_SIZE_LARGE="Large" SUBS_SIZE_SMALL="Small" TV_CHANNELS="TV kanaly ..." TV_INPUT_COMPOSITE="Kompozitny vstup" TV_INPUT_SVHS="S-VHS Vstup" TV_NORM="TV Norm" TV_SETTINGS="Prehrat TV" WATCH_DVB="Sledovat digitalnu TV (DVB)" WATCH_PVR="Watch PVR" WATCH_TV="Prehrat TV" WELCOME_CONSOLE="Vita vas MPlayer!" geexbox-1.1/packages/i18n-texts/config/sr.lang0000644000175000017500000001014610641745505017355 0ustar benbenASPECT="Размера екрана" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="БиоÑкопÑки" ASPECT_ORIGINAL="У оригиналу" AUTOPLAY="Режим пуштања" AUTOPLAY_DISABLE="Онемогући Ñамопуштање" AUTOPLAY_ENABLE="Омогући Ñамопуштање" CTRLS="Управљање" CTRLS_EJECT="Избаци" CTRLS_PAUSE="Пауза" CTRLS_PLAYLIST="Иди на..." CTRLS_PREV_NEXT="Претходни/Ñледећи" CTRLS_STOP="Стоп" DIGI_CHANNELS="Управљање каналима" DIGI_CHANNELS_CANCEL="Поништи чување" DIGI_CHANNELS_CONFIRM="Потврди чување" DIGI_CHANNELS_SELECT="Канал -/+" DIGI_CHANNELS_STORE="Запамти тренутну фреквенцију" DIGI_RADIO="Радио" DIGI_RADIO_AM="Радио AM" DIGI_RADIO_CHANNELS="Канал -/+" DIGI_RADIO_CONFIG="ПодеÑи радио..." DIGI_RADIO_FM="Радио FM" DIGI_RADIO_OFF="ИÑкључи радио" DIGI_SAVE_CHANNEL="Сачувај канал..." DIGI_TUNING="Ручно подешавање" DIGI_TUNING_FINE_MINUS="Фино подеÑи -" DIGI_TUNING_FINE_PLUS="Фино подеÑи +" DIGI_TUNING_SEEK_MINUS="Тражи -" DIGI_TUNING_SEEK_PLUS="Тражи +" DVD_PLAYBACK="Ðачин пуштања за ДВД" DVD_PLAYBACK_DIRECT="ПуÑти директно" DVD_PLAYBACK_DVDNAV="Изборник за навигацију" FILES_FILTER="Филтер фајлова" FILES_FILTER_ALL="Прикажи Ñве фајлове" FILES_FILTER_MEDIA="Прикажи Ñамо медија фајлове" IMG_10S="10 Ñек" IMG_15M="15 мин" IMG_15S="15 Ñек" IMG_1S="1 Ñек" IMG_30S="30 Ñек" IMG_3S="3 Ñек" IMG_5M="5 мин" IMG_5S="5 Ñек" IMG_60S="1 мин" IMG_SHOW_DISABLE="Онемогући Ñлајдове" IMG_SHOW_TIMEOUT="Промена Ñлајда на..." INFO="Инфо" LISTEN_RADIO="Слушај радио..." LIST_CHANNELS="СпиÑак канала..." MENU_CONTROLS="Контроле" MENU_GEEXBOX="GeeXboX" MENU_HELP="Помоћ" MENU_OPEN="Отвори" MENU_OPTIONS="ПоÑтавке" MENU_QUIT="Крај" OPEN="Отвори" OPEN_FILE="Отвори фај..." OPTIONS="ПоÑтавке" OPTIONS_AUTOPLAY="Режим пуштања..." OPTIONS_DVD_SETTINGS="ДВД поÑтавке..." OPTIONS_FILE_FILTER="Филтер фајлова..." OPTIONS_IMG_SHOW="Промена Ñлајда на..." OPTIONS_INFOS="Инфо..." OPTIONS_RESET_PATH="ПоÑтави путању фајла" OPTIONS_SLEEP_TIMER="ПодеÑи тајмер..." OPTIONS_TV_NORM="ТВ Ñтандард..." OPTIONS_TV_SWITCH="Пребаци на ТВ излаз" OPTIONS_VSYNC="Промени вертикалну Ñинхр." PLAYLIST="Иди на" PLAY_CDDA="ПуÑти аудио диÑк" PLAY_DVD="ПуÑти ДВД" PLAY_VCD="ПуÑти видео диÑк" PREF_CHAPTERS="Избор поглавља..." PREF_PROPERTIES="ПоÑтавке тока..." SELECT_CHAPTER="Одабери поглавље" SELECT_FILE="Одабери фајл:" SLEEP_TIMER="Тајмер (време до гашења)" SLEEP_TIMER_120M="120 мин" SLEEP_TIMER_15M="15 мин" SLEEP_TIMER_30M="30 мин" SLEEP_TIMER_45M="45 мин" SLEEP_TIMER_60M="60 мин" SLEEP_TIMER_75M="75 мин" SLEEP_TIMER_90M="90 мин" SLEEP_TIMER_OFF="Тајмер иÑкључен (подразумевано)" STREAM_ABITRATE="Ðудио проток" STREAM_ACODEC="Ðудио кодек" STREAM_ALBUM="Ðлбум" STREAM_ARTIST="Извођач" STREAM_ASAMPLES="Ðудио узорака" STREAM_COMMENT="Коментар" STREAM_GENRE="Жанр" STREAM_NAME="Фајл" STREAM_PROPERTIES="Тренутно пуштам:" STREAM_RESOLUTION="Резолуција" STREAM_TITLE="ÐаÑлов" STREAM_TRACK="По реду" STREAM_VBITRATE="Видео проток" STREAM_VCODEC="Видео кодек" STREAM_YEAR="Година" TV_CHANNELS="ТВ канали..." TV_INPUT_COMPOSITE="Композитни улаз" TV_INPUT_SVHS="S-VHS улаз" TV_NORM="ТВ Ñтандард" TV_SETTINGS="Гледај ТВ" WATCH_DVB="Гледај дигиталну ТВ (DVB)" WATCH_TV="Гледај ТВ" WELCOME_CONSOLE="Добродошли у MPlayer" geexbox-1.1/packages/i18n-texts/config/sv.lang0000644000175000017500000000637410641745505017371 0ustar benbenASPECT="Vy" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="Cinemascope" ASPECT_ORIGINAL="Ursprunglig" AUTOPLAY="Autoplay Mode" AUTOPLAY_DISABLE="Autoplay Disable" AUTOPLAY_ENABLE="Autoplay Enable" CTRLS="Kontroller" CTRLS_EJECT="Mata ut" CTRLS_PAUSE="Paus" CTRLS_PLAYLIST="Hoppa till ..." CTRLS_PREV_NEXT="FöregÃ¥nde/Nästa" CTRLS_STOP="Stopp" DIGI_CHANNELS="Manage Channels" DIGI_CHANNELS_CANCEL="Cancel store" DIGI_CHANNELS_CONFIRM="Confirm store" DIGI_CHANNELS_SELECT="Channel -/+" DIGI_CHANNELS_STORE="Store current frequency" DIGI_RADIO="Radio" DIGI_RADIO_AM="Radio AM" DIGI_RADIO_CHANNELS="Channel -/+" DIGI_RADIO_CONFIG="Configure radio ..." DIGI_RADIO_FM="Radio FM" DIGI_RADIO_OFF="Radio off" DIGI_SAVE_CHANNEL="Save Channel ..." DIGI_TUNING="Manual Tune" DIGI_TUNING_FINE_MINUS="Fine tune -" DIGI_TUNING_FINE_PLUS="Fine tune +" DIGI_TUNING_SEEK_MINUS="Seek station -" DIGI_TUNING_SEEK_PLUS="Seek station +" DVD_PLAYBACK="DVD Playback Method" DVD_PLAYBACK_DIRECT="Direct Playback" DVD_PLAYBACK_DVDNAV="DVD Navigation Menu" FILES_FILTER="Filfilter" FILES_FILTER_ALL="Visa alla filer" FILES_FILTER_MEDIA="Visa endast multimediafiler" IMG_10S="10s" IMG_15M="15min" IMG_15S="15s" IMG_1S="1s" IMG_30S="30s" IMG_3S="3s" IMG_5M="5min" IMG_5S="5s" IMG_60S="1min" IMG_SHOW_DISABLE="Stäng bildspel" IMG_SHOW_TIMEOUT="Bildspelsintervall" INFO="Info" LISTEN_RADIO="Listen Radio ..." LIST_CHANNELS="List of Channels ..." MENU_CONTROLS="Kontroller" MENU_GEEXBOX="GeeXboX" MENU_HELP="Hjälp" MENU_OPEN="Öppna" MENU_OPTIONS="Alternativ" MENU_QUIT="Avsluta" OPEN="Öppna" OPEN_FILE="Öppna fil ..." OPTIONS="Alternativ" OPTIONS_AUTOPLAY="Autoplay mode ..." OPTIONS_DVD_SETTINGS="DVD Settings ..." OPTIONS_FILE_FILTER="Filfilter ..." OPTIONS_IMG_SHOW="Bildspelsintervall ..." OPTIONS_INFOS="Info ..." OPTIONS_RESET_PATH="Reset file open path" OPTIONS_SLEEP_TIMER="Set Sleeptimer ..." OPTIONS_SUBS_SIZE="Subtitles size ..." OPTIONS_TV_NORM="TV-standard ..." OPTIONS_TV_SWITCH="Byt TV-Ut" OPTIONS_VSYNC="Byt Vertical Sync" PLAYLIST="Hoppa till" PLAY_CDDA="Spela upp Ljud-CD" PLAY_DVD="Spela upp DVD" PLAY_VCD="Spela upp VCD / XCD" PREF_CHAPTERS="Kapitelval ..." PREF_PROPERTIES="Stream Properties ..." SELECT_CHAPTER="Välj kapitel" SELECT_FILE="Välj fil:" SLEEP_TIMER="Sleeptimer (time until shutdown)" SLEEP_TIMER_120M="120min" SLEEP_TIMER_15M="15min" SLEEP_TIMER_30M="30min" SLEEP_TIMER_45M="45min" SLEEP_TIMER_60M="60min" SLEEP_TIMER_75M="75min" SLEEP_TIMER_90M="90min" SLEEP_TIMER_OFF="OFF (default)" STREAM_ABITRATE="Audio Bitrate" STREAM_ACODEC="Audio Codec" STREAM_ALBUM="Album" STREAM_ARTIST="Artist" STREAM_ASAMPLES="Audio Samples" STREAM_COMMENT="Comment" STREAM_GENRE="Genre" STREAM_NAME="Name" STREAM_PROPERTIES="Stream Properties" STREAM_RESOLUTION="Resolution" STREAM_TITLE="Title" STREAM_TRACK="Track" STREAM_VBITRATE="Video Bitrate" STREAM_VCODEC="Video Codec" STREAM_YEAR="Year" SUBS_SIZE="Subtitles size" SUBS_SIZE_DEFAULT="Default" SUBS_SIZE_GIANT="Giant" SUBS_SIZE_HUGE="Huge" SUBS_SIZE_LARGE="Large" SUBS_SIZE_SMALL="Small" TV_CHANNELS="TV-kanaler ..." TV_INPUT_COMPOSITE="KompositingÃ¥ng" TV_INPUT_SVHS="S-VHSingÃ¥ng" TV_NORM="TV-standard" TV_SETTINGS="Inställningar för TV" WATCH_DVB="Watch Digital TV (DVB)" WATCH_PVR="Watch PVR" WATCH_TV="Titta pÃ¥ TV" WELCOME_CONSOLE="Välkommen till MPlayer" geexbox-1.1/packages/i18n-texts/config/vn.lang0000644000175000017500000000701410641745505017354 0ustar benbenASPECT="Tỉ lệ màn hình" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="Màn ảnh rá»™ng" ASPECT_ORIGINAL="Gốc" AUTOPLAY="Autoplay Mode" AUTOPLAY_DISABLE="Tắt chÆ¡i tá»± động" AUTOPLAY_ENABLE="Äặt chÆ¡i tá»± động" CTRLS="Äiá»u khiển" CTRLS_EJECT="Äẩy ra" CTRLS_PAUSE="Tạm ngưng" CTRLS_PLAYLIST="Chương trình chÆ¡i ..." CTRLS_PREV_NEXT="Trước / Sau" CTRLS_STOP="Dừng" DIGI_CHANNELS="Quản lý kênh" DIGI_CHANNELS_CANCEL="Huá»· lưu" DIGI_CHANNELS_CONFIRM="Xác nhận lưu" DIGI_CHANNELS_SELECT="Kênh -/+" DIGI_CHANNELS_STORE="Lưu tần số hiện tại" DIGI_RADIO="Äài" DIGI_RADIO_AM="AM" DIGI_RADIO_CHANNELS="Kênh -/+" DIGI_RADIO_CONFIG="Cấu hình đài ..." DIGI_RADIO_FM="FM" DIGI_RADIO_OFF=" Tắt" DIGI_SAVE_CHANNEL="Lưu kênh ..." DIGI_TUNING="Manual Tune" DIGI_TUNING_FINE_MINUS="Chỉnh mịn -" DIGI_TUNING_FINE_PLUS="Chỉnh mịn +" DIGI_TUNING_SEEK_MINUS="Tìm đài -" DIGI_TUNING_SEEK_PLUS="Tìm đài +" DVD_PLAYBACK="Kiểu chÆ¡i DVD" DVD_PLAYBACK_DIRECT="ChÆ¡i trá»±c tiếp" DVD_PLAYBACK_DVDNAV="Menu chương trình DVD" FILES_FILTER="Lá»c tập tin" FILES_FILTER_ALL="Hiện tất cả" FILES_FILTER_MEDIA="Chỉ hiện tập tin media" IMG_10S="10 giây " IMG_15M="15 phút" IMG_15S="15 giây " IMG_1S="1 giây " IMG_30S="30 giây " IMG_3S="3 giây " IMG_5M="5 phút" IMG_5S="5 giây " IMG_60S="1 phút" IMG_SHOW_DISABLE="Tắt xem chương trình ảnh" IMG_SHOW_TIMEOUT="Thá»i gian nghỉ xem ảnh" INFO="Thông tin" LISTEN_RADIO="Nghe đài ..." LIST_CHANNELS="Chá»n kênh ..." MENU_CONTROLS="Äiá»u khiển" MENU_GEEXBOX="GeeXboX" MENU_HELP="Hướng dẫn" MENU_OPEN="ChÆ¡i" MENU_OPTIONS="Lá»±a chá»n" MENU_QUIT="Thoát" OPEN="Mở" OPEN_FILE="Mở tập tin ..." OPTIONS="Lá»±a chá»n" OPTIONS_AUTOPLAY="Chế độ tá»± chÆ¡i ..." OPTIONS_DVD_SETTINGS="Cài đặt DVD ..." OPTIONS_FILE_FILTER="Lá»c tập tin ..." OPTIONS_IMG_SHOW="Thá»i gian nghỉ xem ảnh ..." OPTIONS_INFOS="Thông tin ..." OPTIONS_RESET_PATH="Äặt lại đưá»ng dẫn" OPTIONS_SLEEP_TIMER="Äặt giá» ngá»§ ..." OPTIONS_SUBS_SIZE="Cỡ phụ đỠ..." OPTIONS_TV_NORM="TV thưá»ng ..." OPTIONS_TV_SWITCH="Chá»n đưá»ng ra TV" OPTIONS_VSYNC="Chá»n đồng bá»™ dá»c" PLAYLIST="Chương trình chÆ¡i" PLAY_CDDA="ChÆ¡i đĩa CD" PLAY_DVD="ChÆ¡i DVD" PLAY_VCD="ChÆ¡i VCD / XCD" PREF_CHAPTERS="Chá»n chương ..." PREF_PROPERTIES="Tính chất truyá»n ..." SELECT_CHAPTER="Select chapter" SELECT_FILE="Chá»n tập tin:" SLEEP_TIMER="Äặt giá» ngá»§" SLEEP_TIMER_120M="120 phút" SLEEP_TIMER_15M="15phút" SLEEP_TIMER_30M="30 phút" SLEEP_TIMER_45M="45 phút" SLEEP_TIMER_60M="60 phút" SLEEP_TIMER_75M="75 phút" SLEEP_TIMER_90M="90 phút" SLEEP_TIMER_OFF="TẮT (mặc định)" STREAM_ABITRATE="Audio Bitrate" STREAM_ACODEC="Audio Codec" STREAM_ALBUM="Album" STREAM_ARTIST="Artist" STREAM_ASAMPLES="Audio Samples" STREAM_COMMENT="Comment" STREAM_GENRE="Genre" STREAM_NAME="Name" STREAM_PROPERTIES="Tính chất truyá»n" STREAM_RESOLUTION="Resolution" STREAM_TITLE="Title" STREAM_TRACK="Track" STREAM_VBITRATE="Video Bitrate" STREAM_VCODEC="Video Codec" STREAM_YEAR="Year" SUBS_SIZE="Cỡ tiêu Ä‘á»" SUBS_SIZE_DEFAULT="Mặc định" SUBS_SIZE_GIANT="Khổng lồ" SUBS_SIZE_HUGE="Rất lá»›n" SUBS_SIZE_LARGE="Lá»›n" SUBS_SIZE_SMALL="Nhá»" TV_CHANNELS="Kênh ..." TV_INPUT_COMPOSITE="ÄÆ°á»ng vào Composite" TV_INPUT_SVHS="ÄÆ°á»ng vào S-VHS" TV_NORM="TV thưá»ng" TV_SETTINGS="Xem TV" WATCH_DVB="Xem TV số (DVB)" WATCH_PVR="Xem video ghi lại" WATCH_TV="Xem TV" WELCOME_CONSOLE="Mplayer xin chào" geexbox-1.1/packages/i18n-texts/config/zh_CN.lang0000644000175000017500000000751710641745505017742 0ustar benbenASPECT="å±å¹•外观 (Aspect)" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="Cinemascopeå®½å± (Cinemascope)" ASPECT_ORIGINAL="原始 (Original)" AUTOPLAY="Autoplay Mode" AUTOPLAY_DISABLE="Autoplay Disable" AUTOPLAY_ENABLE="Autoplay Enable" CTRLS="控制 (Controls)" CTRLS_EJECT="退片 (Eject)" CTRLS_PAUSE="æš‚åœ (Pause)" CTRLS_PLAYLIST="跳到... (Jump to)" CTRLS_PREV_NEXT="å‘åŽ/å‘å‰ (Prev/Next)" CTRLS_STOP="åœæ­¢ (Stop)" DIGI_CHANNELS="Manage Channels" DIGI_CHANNELS_CANCEL="Cancel store" DIGI_CHANNELS_CONFIRM="Confirm store" DIGI_CHANNELS_SELECT="Channel -/+" DIGI_CHANNELS_STORE="Store current frequency" DIGI_RADIO="Radio" DIGI_RADIO_AM="Radio AM" DIGI_RADIO_CHANNELS="Channel -/+" DIGI_RADIO_CONFIG="Configure radio ..." DIGI_RADIO_FM="Radio FM" DIGI_RADIO_OFF="Radio off" DIGI_SAVE_CHANNEL="Save Channel ..." DIGI_TUNING="Manual Tune" DIGI_TUNING_FINE_MINUS="Fine tune -" DIGI_TUNING_FINE_PLUS="Fine tune +" DIGI_TUNING_SEEK_MINUS="Seek station -" DIGI_TUNING_SEEK_PLUS="Seek station +" DVD_PLAYBACK="DVD Playback Method" DVD_PLAYBACK_DIRECT="Direct Playback" DVD_PLAYBACK_DVDNAV="DVD Navigation Menu" FILES_FILTER="文件过滤 (Files Filter)" FILES_FILTER_ALL="显示全部文件 (Display all Files)" FILES_FILTER_MEDIA="åªæ˜¾ç¤ºå¤šåª’体文件 (Display Media Files Only)" IMG_10S="10ç§’ (10s)" IMG_15M="15分 (15min)" IMG_15S="15ç§’ (15s)" IMG_1S="1ç§’ (1s)" IMG_30S="30ç§’ (30s)" IMG_3S="3ç§’ (3s)" IMG_5M="5分 (5min)" IMG_5S="5ç§’ (5s)" IMG_60S="1分 (1min)" IMG_SHOW_DISABLE="ç¦æ­¢å¹»ç¯ç‰‡åŠŸèƒ½ (Disable slide show)" IMG_SHOW_TIMEOUT="å¹»ç¯ç‰‡æµè§ˆ (Image show timeout)" INFO="å…¶å®ƒä¿¡æ¯ (info)" LISTEN_RADIO="Listen Radio ..." LIST_CHANNELS="List of Channels ..." MENU_CONTROLS="控制 (Control)" MENU_GEEXBOX="中文GeeXboX" MENU_HELP="帮助 (Help)" MENU_OPEN="播放 (Open)" MENU_OPTIONS="选项 (Options)" MENU_QUIT="关机 (Quit)" OPEN="播放 (Open)" OPEN_FILE="打开文件 (Open file)" OPTIONS="选项 (Options)" OPTIONS_AUTOPLAY="Autoplay mode ..." OPTIONS_DVD_SETTINGS="DVD Settings ..." OPTIONS_FILE_FILTER="文件过滤 (Files Filter)" OPTIONS_IMG_SHOW="å¹»ç¯ç‰‡æµè§ˆ (Image show timeout)" OPTIONS_INFOS="å…¶å®ƒä¿¡æ¯ (Info)" OPTIONS_RESET_PATH="Reset file open path" OPTIONS_SLEEP_TIMER="Set Sleeptimer ..." OPTIONS_SUBS_SIZE="Subtitles size ..." OPTIONS_TV_NORM="ç”µè§†åˆ¶å¼ (TV Norm)" OPTIONS_TV_SWITCH="电视输出 (Switch TV-Out)" OPTIONS_VSYNC="åž‚ç›´åŒæ­¥è½¬æ¢ (Switch Vertical Sync)" PLAYLIST="跳到... (Jump to)" PLAY_CDDA="播放音ä¹CD (Play Audio CD)" PLAY_DVD="播放DVD (Play DVD)" PLAY_VCD="播放VCD/XCD (Play VCD/XCD)" PREF_CHAPTERS="选择章节/曲目 (Chapter selection)" PREF_PROPERTIES="Stream Properties ..." SELECT_CHAPTER="选择章节/曲目 (Select chapter)" SELECT_FILE="选择文件 (Select a file):" SLEEP_TIMER="Sleeptimer (time until shutdown)" SLEEP_TIMER_120M="120min" SLEEP_TIMER_15M="15min" SLEEP_TIMER_30M="30min" SLEEP_TIMER_45M="45min" SLEEP_TIMER_60M="60min" SLEEP_TIMER_75M="75min" SLEEP_TIMER_90M="90min" SLEEP_TIMER_OFF="OFF (default)" STREAM_ABITRATE="Audio Bitrate" STREAM_ACODEC="Audio Codec" STREAM_ALBUM="Album" STREAM_ARTIST="Artist" STREAM_ASAMPLES="Audio Samples" STREAM_COMMENT="Comment" STREAM_GENRE="Genre" STREAM_NAME="Name" STREAM_PROPERTIES="Stream Properties" STREAM_RESOLUTION="Resolution" STREAM_TITLE="Title" STREAM_TRACK="Track" STREAM_VBITRATE="Video Bitrate" STREAM_VCODEC="Video Codec" STREAM_YEAR="Year" SUBS_SIZE="Subtitles size" SUBS_SIZE_DEFAULT="Default" SUBS_SIZE_GIANT="Giant" SUBS_SIZE_HUGE="Huge" SUBS_SIZE_LARGE="Large" SUBS_SIZE_SMALL="Small" TV_CHANNELS="ç”µè§†é¢‘é“ (TV Channels ...)" TV_INPUT_COMPOSITE="AV 输入 (Composite Input)" TV_INPUT_SVHS="S-VHS输入 (S-VHS Input)" TV_NORM="ç”µè§†åˆ¶å¼ (TV Norm)" TV_SETTINGS="观看电视 (Watch TV)" WATCH_DVB="Watch Digital TV (DVB)" WATCH_PVR="Watch PVR" WATCH_TV="观看电视 (Watch TV)" WELCOME_CONSOLE="Welcome to MPlayer" geexbox-1.1/packages/i18n-texts/config/zh_TW.lang0000644000175000017500000000757310641745505017776 0ustar benbenASPECT="外觀 (Aspect)" ASPECT_16_9="16:9" ASPECT_4_3="4:3" ASPECT_CINEMASCOPE="電影比例" ASPECT_ORIGINAL="原始比例" AUTOPLAY="自動播放模å¼" AUTOPLAY_DISABLE="å–æ¶ˆè‡ªå‹•播放" AUTOPLAY_ENABLE="啟動自動播放" CTRLS="控制 (Controls)" CTRLS_EJECT="退片 (Eject)" CTRLS_PAUSE="æš«åœ (Pause)" CTRLS_PLAYLIST="跳至 (Jump to)" CTRLS_PREV_NEXT="å‘å‰/å‘後 (Prev/Next)" CTRLS_STOP="åœæ­¢ (Stop)" DIGI_CHANNELS="Manage Channels" DIGI_CHANNELS_CANCEL="Cancel store" DIGI_CHANNELS_CONFIRM="Confirm store" DIGI_CHANNELS_SELECT="Channel -/+" DIGI_CHANNELS_STORE="Store current frequency" DIGI_RADIO="Radio" DIGI_RADIO_AM="Radio AM" DIGI_RADIO_CHANNELS="Channel -/+" DIGI_RADIO_CONFIG="Configure radio ..." DIGI_RADIO_FM="Radio FM" DIGI_RADIO_OFF="Radio off" DIGI_SAVE_CHANNEL="Save Channel ..." DIGI_TUNING="Manual Tune" DIGI_TUNING_FINE_MINUS="Fine tune -" DIGI_TUNING_FINE_PLUS="Fine tune +" DIGI_TUNING_SEEK_MINUS="Seek station -" DIGI_TUNING_SEEK_PLUS="Seek station +" DVD_PLAYBACK="光碟播放方法" DVD_PLAYBACK_DIRECT="直接播放" DVD_PLAYBACK_DVDNAV="é¸å–®æ’­æ”¾" FILES_FILTER="æª”æ¡ˆéŽæ¿¾ (Files Filter)" FILES_FILTER_ALL="顯示全部檔案 (Display all Files)" FILES_FILTER_MEDIA="僅顯示多媒體檔 (Display Media Files Only)" IMG_10S="10s" IMG_15M="15min" IMG_15S="15s" IMG_1S="1s" IMG_30S="30s" IMG_3S="3s" IMG_5M="5min" IMG_5S="5s" IMG_60S="1min" IMG_SHOW_DISABLE="å–æ¶ˆæŠ•影片播放" IMG_SHOW_TIMEOUT="圖片ç€ç é€Ÿåº¦ (Image show timeout)" INFO="其它資訊 (info)" LISTEN_RADIO="Listen Radio ..." LIST_CHANNELS="List of Channels ..." LOAD_SUB="載入字幕 ..." LOAD_SUB_FILE="載入字幕檔:" MENU_CONTROLS="控制 (Control)" MENU_GEEXBOX="豪è¯å¤šåª’體中心" MENU_HELP="求助 (Help)" MENU_OPEN="開啟 (Open)" MENU_OPTIONS="é¸é … (Options)" MENU_PREFERENCES=" 設定 (Setup)" MENU_QUIT="離開 (Quit)" OPEN="開啟 (Open)" OPEN_FILE="開啟檔案 (Open file)" OPTIONS="é¸é … (Options)" OPTIONS_AUTOPLAY="è‡ªå‹•æ’­æ”¾æ¨¡å¼ ..." OPTIONS_DVD_SETTINGS="光碟設定 ..." OPTIONS_FILE_FILTER="æª”æ¡ˆéŽæ¿¾ (Files Filter)" OPTIONS_IMG_SHOW="圖片ç€ç é€Ÿåº¦ (Image show timeout)" OPTIONS_INFOS="其它資訊 (Info)" OPTIONS_RESET_PATH="é‡è¨­é–‹å•Ÿè·¯å¾‘" OPTIONS_SLEEP_TIMER="定時關機 ..." OPTIONS_SUBS_SIZE="å­—åž‹å¤§å° ..." OPTIONS_TV_NORM="è¨Šè™Ÿé¸æ“‡ (TV Norm)" OPTIONS_TV_SWITCH="é›»è¦–è¼¸å‡ºåˆ‡æ› (Switch TV-Out)" OPTIONS_VSYNC="åž‚ç›´åŒæ­¥åˆ‡æ› (Switch Vertical Sync)" PLAYLIST="跳至 (Jump to)" PLAY_CDDA="播放音樂CD (Play Audio CD)" PLAY_DVD="播放DVD (Play DVD)" PLAY_VCD="播放VCD/XCD (Play VCD/XCD)" PREFERENCES="設定" PREF_AUDIO="è²é“ ..." PREF_CHAPTERS="鏿“‡ç« ç¯€ ..." PREF_PROPERTIES="ä¸²æµæª”案資訊 ..." PREF_SUBS="字幕 ..." PREF_VIDEO="å½±åƒ ..." SELECT_CHAPTER="鏿“‡ç« ç¯€ (Select chapter)" SELECT_FILE="鏿“‡æª”案 (Select a file):" SLEEP_TIMER="定時關機 (time until shutdown)" SLEEP_TIMER_120M="120分é˜" SLEEP_TIMER_15M="15分é˜" SLEEP_TIMER_30M="30分é˜" SLEEP_TIMER_45M="45分é˜" SLEEP_TIMER_60M="60分é˜" SLEEP_TIMER_75M="75分é˜" SLEEP_TIMER_90M="90分é˜" SLEEP_TIMER_OFF="關閉 (default)" STREAM_ABITRATE="Audio Bitrate" STREAM_ACODEC="Audio Codec" STREAM_ALBUM="Album" STREAM_ARTIST="Artist" STREAM_ASAMPLES="Audio Samples" STREAM_COMMENT="Comment" STREAM_GENRE="Genre" STREAM_NAME="Name" STREAM_PROPERTIES="Stream Properties" STREAM_RESOLUTION="Resolution" STREAM_TITLE="Title" STREAM_TRACK="Track" STREAM_VBITRATE="Video Bitrate" STREAM_VCODEC="Video Codec" STREAM_YEAR="Year" SUBS_SIZE="字型大å°" SUBS_SIZE_DEFAULT="3=中" SUBS_SIZE_GIANT="6=巨大" SUBS_SIZE_HUGE="5=大" SUBS_SIZE_LARGE="4=é©ä¸­" SUBS_SIZE_SMALL="2=å°" TV_CHANNELS="TV Channels ..." TV_INPUT_COMPOSITE="Composite Input" TV_INPUT_SVHS="S-VHS Input" TV_NORM="é›»è¦–è¨Šè™Ÿé¸æ“‡ (TV Norm)" TV_SETTINGS="觀看電視 (Watch TV)" WATCH_DVB="Watch Digital TV (DVB)" WATCH_PVR="Watch PVR" WATCH_TV="觀看電視 (Watch TV)" WELCOME_CONSOLE="Welcome to MPlayer" geexbox-1.1/packages/i18n-texts/install0000755000175000017500000000121410641745505016211 0ustar benben#!/bin/sh . config/options mkdir -p $INSTALL/etc/mplayer mkdir -p $INSTALL/usr/share/mplayer case "$2" in generator) mkdir -p $GENERATOR_NAME/i18n/texts cp $PACKAGES/$1/config/help_*.txt $GENERATOR_NAME/i18n/texts/ cp $PACKAGES/$1/config/*.lang $GENERATOR_NAME/i18n/texts/ ;; installator) cp $PACKAGES/$1/config/help_*.txt $INSTALL/usr/share/mplayer cp $PACKAGES/$1/config/*.lang $INSTALL/etc/mplayer ;; *) for MENU_LANG in $INCLUDED_LANGS; do cp $PACKAGES/$1/config/help_$MENU_LANG.txt $INSTALL/usr/share/mplayer/ cp $PACKAGES/$1/config/$MENU_LANG.lang $INSTALL/etc/mplayer/ done ;; esac geexbox-1.1/packages/i18n/0000755000175000017500000000000010641745505013452 5ustar benbengeexbox-1.1/packages/i18n/build0000755000175000017500000000012110641745505014471 0ustar benben#!/bin/sh . config/options $SCRIPTS/build i18n-fonts $SCRIPTS/build i18n-iconv geexbox-1.1/packages/i18n/config/0000755000175000017500000000000010641745505014717 5ustar benbengeexbox-1.1/packages/i18n/config/lang.conf0000644000175000017500000000447210641745505016516 0ustar benben#!/bin/sh CHARSETS="iso-8859-1 iso-8859-2 iso-8859-6 iso-8859-7 iso-8859-8 iso-8859-9 windows-1250 windows-1251 windows-1253 windows-1256 windows-1258 koi8-r gb2312 big5 euc-kr utf-8" LANGUAGES="ar bg br ca cs de el en es et fi fr he hu it jp ko nl no pl ro ru sk sr sv vn zh_CN zh_TW" DEFAULT_LANGUAGE=en DEFAULT_FONT=FreeSans.ttf # ISO-8859-1 Languages: br_name="Brazilian Portuguese" br_charset=iso-8859-1 ca_name=Catalan ca_charset=iso-8859-1 de_name=German de_charset=iso-8859-1 en_name=English en_charset=iso-8859-1 es_name=Spanish es_charset=iso-8859-1 et_name=Estonian et_charset=iso-8859-1 fi_name=Finnish fi_charset=iso-8859-1 fr_name=French fr_charset=iso-8859-1 it_name=Italian it_charset=iso-8859-1 nl_name=Dutch nl_charset=iso-8859-1 no_name=Norwegian no_charset=iso-8859-1 sv_name=Swedish sv_charset=iso-8859-1 ####################### # ISO-8859-2 Languages: cs_name=Czech cs_charset=iso-8859-2 hu_name=Hungarian hu_charset=iso-8859-2 pl_name=Polish pl_charset=iso-8859-2 ro_name=Romanian ro_charset=iso-8859-2 sk_name=Slovak sk_charset=iso-8859-2 ####################### # ISO-8859-6 Languages: ar_name=Arabic ar_charset=iso-8859-6 ####################### # ISO-8859-7 Languages: el_name="Hellenic (Greek)" el_charset=iso-8859-7 ####################### # ISO-8859-8 Languages: he_name=Hebrew he_charset=iso-8859-8 ####################### # WINDOWS-1250 Languages: sr_name=Serbian sr_charset=windows-1250 ####################### # WINDOWS-1251 Languages: bg_name=Bulgarian bg_charset=windows-1251 ####################### # WINDOWS-1258 Languages: vn_name=Vietnamese vn_charset=windows-1258 ####################### # KOI8-R Languages: ru_name=Russian ru_charset=koi8-r ####################### # EUC-KR Languages: ko_name=Korean ko_charset=euc-kr ####################### # Japanese Unicode Languages: jp_name=Japanese jp_charset=utf-8 ####################### # GB2312 Languages: zh_CN_name="Chinese - Simplified" zh_CN_charset=gb2312 ####################### # BIG5 Languages: zh_TW_name="Chinese - Traditional" zh_TW_charset=big5 ####################### # Fonts settings iso_8859_6_font=FreeSerif.ttf windows_1256_font=FreeSerif.ttf utf_8_font=gt200001.ttf gb2312_font=gkai00mp.ttf big5_font=bkai00mp.ttf euc_kr_font=dotum.ttf iso_8859_6_fribidi=ISO8859-6 iso_8859_8_fribidi=ISO8859-8 windows_1256_fribidi=WINDOWS-1256 geexbox-1.1/packages/i18n/config/packages.ini0000644000175000017500000000176710641745505017211 0ustar benben[Fonts/] name=Extra fonts desc=This section contains fonts which were too big to be included desc=in the offical release. file=http://www.geexbox.org/fonts/ dir=i18n/fonts/ [Fonts/Asian/] name=Asian fonts [Fonts/Asian/Chinese Simplified (GB2312)] name=Chinese Simplified - GB2312 file=asian/arphic/gkai00mp.ttf.bz2 md5=a80284408ea4eafae8d1c7893c08eec7 license=asian/arphic/LICENSE [Fonts/Asian/Chinese Traditional (BIG5)] name=Chinese Traditional - BIG5 file=asian/arphic/bkai00mp.ttf.bz2 md5=a491ac3098f7c6500e48ab4c8e1c15a5 license=asian/arphic/LICENSE [Fonts/Asian/Korean (EUC-KR)] name=Korean - EUC-KR file=asian/baekmuk/dotum.ttf.bz2 md5=cba7b2660bf489790b06d9a513fe43c9 license=asian/baekmuk/COPYRIGHT [Fonts/Asian/Japanese (UTF-8)] name=Futsuuna Japanese UTF-8 file=asian/gt200001.ttf.bz2 md5=ee4dff6cc9f5411b962f16532eb3bf42 [Fonts/Asian/Japanese (UTF-8)] name=Kawaii Japanese UTF-8 file=asian/mikachanfonts/mikachan.ttf.bz2 md5=aca130883d31de8661eda83b44776e62 license=asian/mikachanfonts/COPYRIGHT geexbox-1.1/packages/i18n/install0000755000175000017500000000074010641745505015047 0ustar benben#!/bin/sh . config/options $SCRIPTS/install i18n-fonts $2 $SCRIPTS/install i18n-iconv $2 $SCRIPTS/install i18n-texts $2 $SCRIPTS/install i18n-keymaps $2 mkdir -p $INSTALL/etc cp $PACKAGES/$1/scripts/lang.funcs $INSTALL/etc case "$2" in generator) mkdir -p $GENERATOR_NAME/i18n cp $PACKAGES/$1/config/lang.conf $GENERATOR_NAME/i18n cp $PACKAGES/$1/scripts/lang.funcs $GENERATOR_NAME/i18n ;; *) cp $PACKAGES/$1/config/lang.conf $INSTALL/etc ;; esac geexbox-1.1/packages/i18n/scripts/0000755000175000017500000000000010641745505015141 5ustar benbengeexbox-1.1/packages/i18n/scripts/lang.funcs0000644000175000017500000000222710641745505017125 0ustar benben#!/bin/sh simplifylang() { local i tmp for i in $LANGUAGES; do eval tmp=\$${i}_name if [ "$1" = "$i" -o "$1" = "$tmp" ]; then echo $i return fi done } lang2charset() { local i lang charset=$1 if [ -z "$charset" ]; then if [ -n "$MENU_LANG" ]; then charset="$MENU_LANG" else charset="$DEFAULT_LANGUAGE" fi fi lang=`simplifylang $charset` if [ -n "$lang" ]; then eval charset=\$${lang}_charset fi for i in $CHARSETS; do if [ "$charset" = "$i" ]; then echo $charset return fi done echo "ERROR: Couldn't find a matching charset for '$1'." 1>&2 } lang2font() { local i tmp charset charset=`lang2charset $1` charset=`echo "$charset" | sed s%-%_%g` for i in ${charset}_${2}font ${charset}_font DEFAULT_FONT; do eval tmp=\$$i if [ -n "$tmp" ]; then echo $tmp return fi done } fribidi_mp_set_option() { local tmp name name=`echo $1 | sed s%-%_%g` eval tmp=\$${name}_fribidi if [ -n "$tmp" ]; then mp_set_option "${2}flip-hebrew" 1 mp_set_option "${2}fribidi-charset" "$tmp" else mp_set_option "${2}flip-hebrew" 0 fi } geexbox-1.1/packages/i810tvout/0000755000175000017500000000000010641745505014456 5ustar benbengeexbox-1.1/packages/i810tvout/arch0000644000175000017500000000000510641745505015311 0ustar benbeni386 geexbox-1.1/packages/i810tvout/build0000755000175000017500000000026010641745505015501 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain $SCRIPTS/build pciutils make -C $BUILD/$1* \ CC=$CC \ CFLAGS="$CFLAGS" \ LIBS="$LDFLAGS" \ i810tvout geexbox-1.1/packages/i810tvout/url0000644000175000017500000000007610641745505015206 0ustar benbenhttp://i810tvout.geexbox.org/download/i810tvout-0.9.1.tar.bz2 geexbox-1.1/packages/iconv-base/0000755000175000017500000000000010641745505014721 5ustar benbengeexbox-1.1/packages/iconv-base/build0000755000175000017500000000126110641745505015746 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain export MODULEDIR="/usr/share/iconv" export TABLEDIR="/usr/share/iconv" export ICONV_BUILTIN_CHARSETS="utf-8" cd $BUILD/$1* make all cp lib/libiconv.* $LIB_PREFIX/lib cp lib/iconv.h $LIB_PREFIX/include cp ccs/iconv_mktbl $ROOT/$TOOLCHAIN/bin grep -v '#' ccs/charset.aliases | ./iconv_builtin -n $ICONV_BUILTIN_CHARSETS | cut -f 1 | while read i; do echo "$i $i.cct" >> charset.db done grep -v '#' ces/charset.aliases | ./iconv_builtin -n $ICONV_BUILTIN_CHARSETS | cut -f 1 | while read i; do echo "$i $i.so" >> charset.db grep '{"' ces/$i.c | cut -d '"' -f 2 | while read j; do echo "$i $j.cct" >> charset.db done done geexbox-1.1/packages/iconv-base/install0000755000175000017500000000015010641745505016311 0ustar benben#!/bin/sh . config/options mkdir -p $INSTALL/usr/lib cp $BUILD/$1*/lib/libiconv.so.2 $INSTALL/usr/lib geexbox-1.1/packages/iconv-base/patches/0000755000175000017500000000000010641745505016350 5ustar benbengeexbox-1.1/packages/iconv-base/patches/10_GNUmakefiles.diff0000644000175000017500000001307610641745505022023 0ustar benbendiff -Nur iconv-base-2.0.orig/GNUmakefile iconv-base-2.0/GNUmakefile --- iconv-base-2.0.orig/GNUmakefile Thu Jan 1 02:00:00 1970 +++ iconv-base-2.0/GNUmakefile Fri Mar 4 21:31:24 2005 @@ -0,0 +1,11 @@ +all: + $(MAKE) -C lib all + $(MAKE) -C ccs all + $(MAKE) -C ces all + $(MAKE) -C util all + +clean: + $(MAKE) -C lib clean + $(MAKE) -C ccs clean + $(MAKE) -C ces clean + $(MAKE) -C util clean diff -Nur iconv-base-2.0.orig/GNUmakefile.inc iconv-base-2.0/GNUmakefile.inc --- iconv-base-2.0.orig/GNUmakefile.inc Thu Jan 1 02:00:00 1970 +++ iconv-base-2.0/GNUmakefile.inc Fri Mar 4 21:31:24 2005 @@ -0,0 +1,8 @@ +ICONV_BUILTIN_CHARSETS ?= us-ascii utf-8 ucs-4-internal + +PREFIX ?= /usr + +MODULEDIR ?= ${PREFIX}/libexec/iconv +TABLEDIR ?= ${PREFIX}/share/iconv + +CFLAGS += -I../lib diff -Nur iconv-base-2.0.orig/ccs/GNUmakefile iconv-base-2.0/ccs/GNUmakefile --- iconv-base-2.0.orig/ccs/GNUmakefile Thu Jan 1 02:00:00 1970 +++ iconv-base-2.0/ccs/GNUmakefile Fri Mar 4 21:31:24 2005 @@ -0,0 +1,63 @@ +include ../GNUmakefile.inc + +CHARSETS_C = $(shell ../iconv_builtin -s .c $(ICONV_BUILTIN_CHARSETS) < charset.aliases) +CHARSETS_TBL = $(shell ../iconv_builtin -ns .cct $(ICONV_BUILTIN_CHARSETS) < charset.aliases) + +LIB = ccs +SRCS = ccs_builtin.c ${CHARSETS_C} + +SOBJS = ${SRCS:.c=.So} + +all: ${CHARSETS_TBL} + +lib: lib${LIB}.a ${SOBJS} + +lib${LIB}.a: ${SRCS:.c=.o} + @${AR} cq ${@} ${^} + +ccs_builtin.c: ${CHARSETS_C} + ../iconv_builtin -o ${@} ${<} + +.txt.cct: + ./iconv_mktbl -o ${@} ${<} + +.txt.c: + ./iconv_mktbl -Co ${@} ${<} + +us-ascii.cct: iso-8859-1.txt + ./iconv_mktbl -ao ${@} ${<} + +us-ascii.c: iso-8859-1.txt + ./iconv_mktbl -Cao ${@} ${<} + +jis_x0208-1983.cct: jis_x0208-1983.txt + ./iconv_mktbl -c 1 -u 2 -o ${@} ${<} + +jis_x0208-1983.c: jis_x0208-1983.txt + ./iconv_mktbl -C -c 1 -u 2 -o ${@} ${<} + +cns11643-plane1.cct: cns11643.txt + ./iconv_mktbl -p 0x1 -o ${@} ${<} + +cns11643-plane1.c: cns11643.txt + ./iconv_mktbl -C -p 0x1 -o ${@} ${<} + +cns11643-plane2.cct: cns11643.txt + ./iconv_mktbl -p 0x2 -o ${@} ${<} + +cns11643-plane2.c: cns11643.txt + ./iconv_mktbl -C -p 0x2 -o ${@} ${<} + +cns11643-plane14.cct: cns11643.txt + ./iconv_mktbl -p 0xE -o ${@} ${<} + +cns11643-plane14.c: cns11643.txt + ./iconv_mktbl -C -p 0xE -o ${@} ${<} + +.c.So: + ${CC} -fPIC -DPIC ${CFLAGS} -c ${^} -o ${@} + +clean: + rm -f *.o *.So *.so *.c + +.SUFFIXES: .cct .txt .So diff -Nur iconv-base-2.0.orig/ces/GNUmakefile iconv-base-2.0/ces/GNUmakefile --- iconv-base-2.0.orig/ces/GNUmakefile Thu Jan 1 02:00:00 1970 +++ iconv-base-2.0/ces/GNUmakefile Fri Mar 4 21:31:24 2005 @@ -0,0 +1,35 @@ +include ../GNUmakefile.inc + +CHARSETS_C = $(shell ../iconv_builtin -s .c $(ICONV_BUILTIN_CHARSETS) < charset.aliases) +CHARSETS_SO= $(shell ../iconv_builtin -ns .so $(ICONV_BUILTIN_CHARSETS) < charset.aliases) +CHARSETS_O = $(shell ../iconv_builtin -ns .o $(ICONV_BUILTIN_CHARSETS) < charset.aliases) + +LIB= ces +SRCS= ces_builtin.c ${CHARSETS_C} + +LDADD = -L../lib -liconv + +all: ${CHARSETS_SO} ${SRCS:.c=.So} + +lib: lib${LIB}.a + +lib${LIB}.a: ${SRCS:.c=.o} + @${AR} cq ${@} ${^} + +lib${LIB}_static.a: ${CHARSETS_O} + @${AR} cq ${@} ${^} + +ces_builtin.c: ${CHARSETS_C} ${CHARSETS_O} + ../iconv_builtin -mo ${@} \ + ${CHARSETS_C} PIC ${CHARSETS_O} + +.c.So: + ${CC} -fPIC -DPIC ${CFLAGS} -c ${^} -o ${@} + +.So.so: + ${CC} -shared -Wl,-x -o ${@} -Wl,-soname,${@} ${^} + +clean: + rm -f *.o *.So *.so *.lst ces_builtin.c + +.SUFFIXES: .So .so diff -Nur iconv-base-2.0.orig/lib/GNUmakefile iconv-base-2.0/lib/GNUmakefile --- iconv-base-2.0.orig/lib/GNUmakefile Thu Jan 1 02:00:00 1970 +++ iconv-base-2.0/lib/GNUmakefile Fri Mar 4 21:31:24 2005 @@ -0,0 +1,56 @@ +include ../GNUmakefile.inc + +LIB = iconv +SHLIB_MAJOR = 2 +SHLIB_MINOR = 0 + +SRCS = aliases.c ccs.c ces.c ces_euc.c ces_iso2022.c ces_table.c \ + converter.c iconv.c utils.c + +BUILTIN_CCS = $(shell cd ../ccs/ && $(MAKE) lib >/dev/null && ${AR} t libccs.a) +BUILTIN_CES = $(shell cd ../ces/ && $(MAKE) lib >/dev/null && ${AR} t libces.a) +BUILTIN_CES_STATIC = $(shell cd ../ces && $(MAKE) libces_static.a >/dev/null && ${AR} t libces_static.a) + +OBJS = $(patsubst %,../ccs/%,$(BUILTIN_CCS)) $(patsubst %,../ces/%,$(BUILTIN_CES)) $(SRCS:.c=.o) +STATICOBJS = $(patsubst %,../ces/%,$(BUILTIN_CES_STATIC)) + +SOBJS = ${OBJS:.o=.So} + +LIBDIR = ${PREFIX}/lib + +INCDIR = ${PREFIX}/include +INCS = iconv.h + +CFLAGS += -DICONV_MODULE_PATH=\"${MODULEDIR}\" \ + -DICONV_TABLE_PATH=\"${TABLEDIR}\" + +MAN3 = iconv.3 iconv_open.3 iconv_close.3 + +ALIASES = ../ccs/charset.aliases \ + ../ces/charset.aliases + +all: lib${LIB}.a lib${LIB}.so + +lib${LIB}.a: ${OBJS} ${STATICOBJS} + ${AR} cq ${@} ${^} + +lib${LIB}.so.${SHLIB_MAJOR}: ${SOBJS} + ${CC} ${LDFLAGS} -shared -Wl,-x -o ${@} -Wl,-soname,${@} ${^} + +lib${LIB}.so: lib${LIB}.so.${SHLIB_MAJOR} + ln -s lib${LIB}.so.${SHLIB_MAJOR} lib${LIB}.so + +aliases.c: aliases.h + +aliases.h: ${ALIASES} + cat ${^} | ../iconv_builtin ${BUILTIN_CCS} \ + ${BUILTIN_CES} PIC ${BUILTIN_CES_STATIC} > ${@} + +.c.So: + ${CC} -fPIC -DPIC ${CFLAGS} -c ${^} -o ${@} + +clean: + rm -f ../ccs/libccs.a ../ces/libces*.a *.o *.So + rm -f lib${LIB}.a lib${LIB}.so.${SHLIB_MAJOR} lib${LIB}.so + +.SUFFIXES: .So diff -Nur iconv-base-2.0.orig/util/GNUmakefile iconv-base-2.0/util/GNUmakefile --- iconv-base-2.0.orig/util/GNUmakefile Thu Jan 1 02:00:00 1970 +++ iconv-base-2.0/util/GNUmakefile Fri Mar 4 21:31:24 2005 @@ -0,0 +1,14 @@ +include ../GNUmakefile.inc + +PROG= iconv +SRCS= iconv.c iconv_stream.c + +LDADD= -L../lib/ -liconv -ldl + +all: $(PROG) + +$(PROG): $(SRCS:.c=.o) + $(CC) $(CFLAGS) $(LDFLAGS) -o $(@) $(^) $(LDADD) + +clean: + rm -f *.o iconv geexbox-1.1/packages/iconv-base/patches/20_linux.diff0000644000175000017500000000373710641745505020654 0ustar benbendiff -Nur iconv-base-2.0.orig/ccs/endian.h iconv-base-2.0/ccs/endian.h --- iconv-base-2.0.orig/ccs/endian.h Sun Oct 29 15:45:37 2000 +++ iconv-base-2.0/ccs/endian.h Fri Mar 4 21:31:24 2005 @@ -30,7 +30,11 @@ * iconv (Charset Conversion Library) v2.0 */ +#ifdef __linux__ +#include +#else #include +#endif #if BYTE_ORDER == LITTLE_ENDIAN diff -Nur iconv-base-2.0.orig/lib/ccs.c iconv-base-2.0/lib/ccs.c --- iconv-base-2.0.orig/lib/ccs.c Sun Nov 26 17:16:20 2000 +++ iconv-base-2.0/lib/ccs.c Fri Mar 4 21:31:24 2005 @@ -30,12 +30,20 @@ * iconv (Charset Conversion Library) v2.0 */ +#include +#ifdef __linux__ +#include +#endif #include /* errno */ #include /* PATH_MAX */ #include /* snprintf */ #include /* free, malloc */ #include /* strncmp */ -#include /* ntohl, ntohs */ +#ifdef __linux__ +#include /* ntohl, ntohs */ +#else +#include +#endif #define ICONV_INTERNAL #include /* iconv_ccs */ diff -Nur iconv-base-2.0.orig/lib/ces.c iconv-base-2.0/lib/ces.c --- iconv-base-2.0.orig/lib/ces.c Sun Nov 26 17:16:52 2000 +++ iconv-base-2.0/lib/ces.c Fri Mar 4 21:33:27 2005 @@ -116,7 +116,7 @@ int res; char *pathlist; - if (issetugid() || !(pathlist = getenv("ICONV_MODULE_PATH"))) + if (/*issetugid() || */ !(pathlist = getenv("ICONV_MODULE_PATH"))) pathlist = ICONV_MODULE_PATH; snprintf(file, sizeof(file), "%s.so", name); if (iconv_filesize(pathlist, file, buffer) <= 0) diff -Nur iconv-base-2.0.orig/lib/utils.c iconv-base-2.0/lib/utils.c --- iconv-base-2.0.orig/lib/utils.c Wed Mar 9 15:21:54 2005 +++ iconv-base-2.0/lib/utils.c Wed Mar 9 15:22:02 2005 @@ -84,7 +84,7 @@ if (fd < 0) return NULL; - ptr = (const void *)mmap(NULL, size, PROT_READ, 0, fd, 0); + ptr = (const void *)mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0); close(fd); if (ptr == MAP_FAILED) return NULL; geexbox-1.1/packages/iconv-base/patches/30_oldperl.diff0000644000175000017500000000067610641745505021156 0ustar benbendiff -Nur iconv-base-2.0.orig/iconv_builtin iconv-base-2.0/iconv_builtin --- iconv-base-2.0.orig/iconv_builtin 2000/12/01 10:15:21 1.1 +++ iconv-base-2.0/iconv_builtin 2000/12/01 10:15:46 @@ -83,7 +83,7 @@ %builtins = map { $pic = 1 if $_ eq 'PIC'; $_ => $pic } @ARGV; while () { - unless (/^([^[:space:]#]+)/) { + unless (/^([^\s#]+)/) { # line continuation or comment print $_ unless $opt_s || !$opt_n || /^#WARNING/; next; geexbox-1.1/packages/iconv-base/patches/40_converter.diff0000644000175000017500000000265410641745505021523 0ustar benbendiff -Nur iconv-base-2.0.orig/lib/converter.c iconv-base-2.0/lib/converter.c --- iconv-base-2.0.orig/lib/converter.c.orig Sun Nov 26 22:10:22 2000 +++ iconv-base-2.0/lib/converter.c Mon Mar 18 19:49:56 2002 @@ -92,14 +92,14 @@ if (ch == UCS_CHAR_NONE) { /* Incomplete character in input buffer */ errno = EINVAL; - return res; + return (size_t)(-1); } if (ch == UCS_CHAR_INVALID) { /* Invalid character in source buffer */ *inbytesleft += *inbuf - ptr; *inbuf = ptr; errno = EILSEQ; - return res; + return (size_t)(-1); } size = ICONV_CES_CONVERT_FROM_UCS(&(uc->to), ch, outbuf, outbytesleft); @@ -116,7 +116,7 @@ *inbytesleft += *inbuf - ptr; *inbuf = ptr; errno = E2BIG; - return res; + return (size_t)(-1); } } return res; @@ -156,14 +156,24 @@ { if (inbuf && *inbuf && inbytesleft && *inbytesleft > 0 && outbuf && *outbuf && outbytesleft && *outbytesleft > 0) { - size_t len = *inbytesleft < *outbytesleft ? *inbytesleft - : *outbytesleft; - bcopy(*inbuf, *outbuf, len); + size_t result, len; + if (*inbytesleft < *outbytesleft) { + result = 0; + len = *inbytesleft; + } else { + result = (size_t)(-1); + errno = E2BIG; + len = *outbytesleft; + } + memcpy(*outbuf, *inbuf, len); *inbuf += len; *inbytesleft -= len; *outbuf += len; *outbytesleft -= len; + + return result; } + return 0; } geexbox-1.1/packages/iconv-base/patches/50_disable-iso2022.diff0000644000175000017500000000075410641745505022215 0ustar benbendiff -Nur iconv-base-2.0.orig/lib/GNUmakefile iconv-base-2.0/lib/GNUmakefile --- iconv-base-2.0.orig/lib/GNUmakefile Sat Mar 12 13:59:11 2005 +++ iconv-base-2.0/lib/GNUmakefile Sat Mar 12 13:59:23 2005 @@ -4,7 +4,7 @@ SHLIB_MAJOR = 2 SHLIB_MINOR = 0 -SRCS = aliases.c ccs.c ces.c ces_euc.c ces_iso2022.c ces_table.c \ +SRCS = aliases.c ccs.c ces.c ces_euc.c ces_table.c \ converter.c iconv.c utils.c BUILTIN_CCS = $(shell cd ../ccs/ && $(MAKE) lib >/dev/null && ${AR} t libccs.a) geexbox-1.1/packages/iconv-base/patches/60-gcc4-fix.diff0000644000175000017500000000670710641745505021043 0ustar benben+* fix gcc4 compliation - "error: invalid lvalue in increment" diff -Nur iconv-base-2.0.orig/ces/ucs-2-internal.c iconv-base-2.0/ces/ucs-2-internal.c --- iconv-base-2.0.orig/ces/ucs-2-internal.c Sun Nov 26 14:49:53 2000 +++ iconv-base-2.0/ces/ucs-2-internal.c Fri Mar 3 20:27:48 2006 @@ -43,7 +43,8 @@ return -1; /* No corresponding character in UCS-2 */ if (*outbytesleft < sizeof(ucs2_t)) return 0; /* No space in the output buffer */ - *((ucs2_t *)(*outbuf))++ = in; + *((ucs2_t *)(*outbuf)) = in; + *outbuf = (unsigned char *)((ucs2_t *)(*outbuf) + 1); (*outbytesleft) -= sizeof(ucs2_t); return 1; } @@ -52,10 +53,14 @@ convert_to_ucs(struct iconv_ces *ces, const unsigned char **inbuf, size_t *inbytesleft) { + ucs2_t out; + if (*inbytesleft < sizeof(ucs2_t)) return UCS_CHAR_NONE; /* Not enough bytes in the input buffer */ (*inbytesleft) -= sizeof(ucs2_t); - return *((const ucs2_t *)(*inbuf))++; + out = *((ucs2_t *)(*inbuf)); + *inbuf = (unsigned char *)((ucs2_t *)(*inbuf) + 1); + return out; } ICONV_CES_STATELESS_MODULE_DECL(ucs_2_internal); diff -Nur iconv-base-2.0.orig/ces/ucs-4-internal.c iconv-base-2.0/ces/ucs-4-internal.c --- iconv-base-2.0.orig/ces/ucs-4-internal.c Sun Nov 26 14:49:59 2000 +++ iconv-base-2.0/ces/ucs-4-internal.c Fri Mar 3 20:28:44 2006 @@ -41,7 +41,8 @@ return 1; /* No state reinitialization for table charsets */ if (*outbytesleft < sizeof(ucs4_t)) return 0; /* No space in the output buffer */ - *((ucs4_t *)(*outbuf))++ = in; + *((ucs4_t *)(*outbuf)) = in; + *outbuf = (unsigned char *)((ucs4_t *)(*outbuf) + 1); (*outbytesleft) -= sizeof(ucs4_t); return 1; } @@ -50,10 +51,14 @@ convert_to_ucs(struct iconv_ces *ces, const unsigned char **inbuf, size_t *inbytesleft) { + ucs4_t out; + if (*inbytesleft < sizeof(ucs4_t)) return UCS_CHAR_NONE; /* Not enough bytes in the input buffer */ (*inbytesleft) -= sizeof(ucs4_t); - return *((const ucs4_t *)(*inbuf))++; + out = *((ucs4_t *)(*inbuf)); + *inbuf = (unsigned char *)((ucs4_t *)(*inbuf) + 1); + return out; } ICONV_CES_STATELESS_MODULE_DECL(ucs_4_internal); diff -Nur iconv-base-2.0.orig/lib/ces_euc.c iconv-base-2.0/lib/ces_euc.c --- iconv-base-2.0.orig/lib/ces_euc.c Sat Nov 18 22:21:43 2000 +++ iconv-base-2.0/lib/ces_euc.c Fri Mar 3 20:32:31 2006 @@ -65,7 +65,7 @@ } } state->nccs = num; - (iconv_ces_euc_state *)*data = state; + *data = state; return 0; } diff -Nur iconv-base-2.0.orig/lib/ces_table.c iconv-base-2.0/lib/ces_table.c --- iconv-base-2.0.orig/lib/ces_table.c Sun Nov 26 14:01:25 2000 +++ iconv-base-2.0/lib/ces_table.c Fri Mar 3 20:32:44 2006 @@ -47,7 +47,7 @@ if (res) free(ccs); else - (struct iconv_ccs *)(*data) = ccs; + *data = ccs; return res; } diff -Nur iconv-base-2.0.orig/util/iconv_stream.c iconv-base-2.0/util/iconv_stream.c --- iconv-base-2.0.orig/util/iconv_stream.c Sun Sep 3 22:38:36 2000 +++ iconv-base-2.0/util/iconv_stream.c Fri Mar 3 20:33:41 2006 @@ -114,7 +114,7 @@ if (left > size) left = size; memcpy(stream->buf_ptr, buf, left); - (const char *)buf += left; + buf = (const char *)buf + left; size -= left; stream->buf_ptr += left; res = iconv_write(handle, stream->buffer, @@ -141,7 +141,7 @@ return -1; res = 0; } - (const char *)buf += res; + buf = (const char *)buf + res; size -= res; } while (size && res); if (!size) geexbox-1.1/packages/iconv-base/url0000644000175000017500000000004410641745505015444 0ustar benbenGEEXBOX_SRCS/iconv-base-2.0.tar.bz2 geexbox-1.1/packages/iconv-extra/0000755000175000017500000000000010641745505015132 5ustar benbengeexbox-1.1/packages/iconv-extra/build0000755000175000017500000000062510641745505016162 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain $SCRIPTS/build iconv-base cd $BUILD/$1* make all grep -v '#' ccs/charset.aliases | cut -f 1 | while read i; do echo "$i $i.cct" >> charset.db done grep -v '#' ces/charset.aliases | cut -f 1 | while read i; do echo "$i $i.so" >> charset.db grep '{"' ces/$i.c | cut -d '"' -f 2 | while read j; do echo "$i $j.cct" >> charset.db done done geexbox-1.1/packages/iconv-extra/patches/0000755000175000017500000000000010641745505016561 5ustar benbengeexbox-1.1/packages/iconv-extra/patches/10_GNUmakefiles.diff0000644000175000017500000000567710641745505022244 0ustar benbendiff -Nur iconv-extra-2.0.orig/GNUmakefile iconv-extra-2.0/GNUmakefile --- iconv-extra-2.0.orig/GNUmakefile Thu Jan 1 02:00:00 1970 +++ iconv-extra-2.0/GNUmakefile Fri Mar 4 22:49:27 2005 @@ -0,0 +1,7 @@ +all: + $(MAKE) -C ccs all + $(MAKE) -C ces all + +clean: + $(MAKE) -C ccs clean + $(MAKE) -C ces clean diff -Nur iconv-extra-2.0.orig/ccs/GNUmakefile iconv-extra-2.0/ccs/GNUmakefile --- iconv-extra-2.0.orig/ccs/GNUmakefile Thu Jan 1 02:00:00 1970 +++ iconv-extra-2.0/ccs/GNUmakefile Fri Mar 4 22:51:32 2005 @@ -0,0 +1,64 @@ +CHARSETS_TBL = iso-8859-3.cct iso-8859-6.cct iso-8859-7.cct iso-8859-8.cct \ + iso-8859-9.cct iso-8859-10.cct iso-8859-13.cct iso-8859-14.cct \ + koi8-ru.cct gb12345.cct johab.cct adobe-stdenc.cct \ + adobe-symbol.cct adobe-zdingbats.cct mac-ce.cct \ + mac-croatian.cct mac-cyrillic.cct mac-dingbats.cct \ + mac-greek.cct mac-iceland.cct mac-japan.cct mac-roman.cct \ + mac-romania.cct mac-thai.cct mac-turkish.cct mac-ukraine.cct \ + cp424.cct cp500.cct cp856.cct cp1006.cct cp437.cct cp737.cct \ + cp857.cct cp860.cct cp861.cct cp862.cct cp863.cct cp864.cct \ + cp865.cct cp869.cct cp874.cct cp932.cct cp936.cct cp949.cct \ + cp950.cct windows-1250.cct windows-1251.cct windows-1252.cct \ + windows-1253.cct windows-1254.cct windows-1255.cct \ + windows-1256.cct windows-1257.cct windows-1258.cct cp037.cct \ + cp875.cct cp1026.cct cp10000.cct cp10006.cct cp10007.cct \ + cp10029.cct cp10079.cct cp10081.cct + +all: ${CHARSETS_TBL} + +.txt.cct: + iconv_mktbl -o ${@} ${<} + +adobe-stdenc.cct: adobe-stdenc.txt + iconv_mktbl -p '' -c 1 -u 0 -o ${@} ${<} + +adobe-symbol.cct: adobe-symbol.txt + iconv_mktbl -p '' -c 1 -u 0 -o ${@} ${<} + +adobe-zdingbats.cct: adobe-zdingbats.txt + iconv_mktbl -p '' -c 1 -u 0 -o ${@} ${<} + +mac-ce.cct: mac-ce.txt + iconv_mktbl -Mo ${@} ${<} + +mac-croatian.cct: mac-croatian.txt + iconv_mktbl -Mo ${@} ${<} + +mac-cyrillic.cct: mac-cyrillic.txt + iconv_mktbl -Mo ${@} ${<} + +mac-dingbats.cct: mac-dingbats.txt + iconv_mktbl -Mo ${@} ${<} + +mac-greek.cct: mac-greek.txt + iconv_mktbl -Mo ${@} ${<} + +mac-iceland.cct: mac-iceland.txt + iconv_mktbl -Mo ${@} ${<} + +mac-roman.cct: mac-roman.txt + iconv_mktbl -Mo ${@} ${<} + +mac-romania.cct: mac-romania.txt + iconv_mktbl -Mo ${@} ${<} + +mac-thai.cct: mac-thai.txt + iconv_mktbl -Mo ${@} ${<} + +mac-turkish.cct: mac-turkish.txt + iconv_mktbl -Mo ${@} ${<} + +mac-ukraine.cct: mac-ukraine.txt + iconv_mktbl -Mo ${@} ${<} + +.SUFFIXES: .cct .txt diff -Nur iconv-extra-2.0.orig/ces/GNUmakefile iconv-extra-2.0/ces/GNUmakefile --- iconv-extra-2.0.orig/ces/GNUmakefile Thu Jan 1 02:00:00 1970 +++ iconv-extra-2.0/ces/GNUmakefile Fri Mar 4 22:51:06 2005 @@ -0,0 +1,15 @@ +CHARSETS_SO = unicode-1-1-utf-7.so iso-2022-cn.so iso-2022-jp.so \ + iso-2022-jp-2.so iso-2022-kr.so + +all: ${CHARSETS_SO} + +.c.So: + ${CC} -fPIC -DPIC ${CFLAGS} -c ${^} -o ${@} + +.So.so: + @${CC} -shared -Wl,-x -o ${@} -Wl,-soname,${@} ${^} + +clean: + rm -f *.So *.so + +.SUFFIXES: .so .So geexbox-1.1/packages/iconv-extra/patches/20_gcc4-fix.diff0000644000175000017500000000212110641745505021314 0ustar benben+* fix gcc4 compliation - "error: invalid lvalue in increment" diff -Nur iconv-extra-2.0.orig/ces/unicode-1-1-utf-7.c iconv-extra-2.0/ces/unicode-1-1-utf-7.c --- iconv-extra-2.0.orig/ces/unicode-1-1-utf-7.c Tue Nov 21 00:41:22 2000 +++ iconv-extra-2.0/ces/unicode-1-1-utf-7.c Fri Mar 3 20:46:49 2006 @@ -230,7 +230,7 @@ if (*inbytesleft < 2) return UCS_CHAR_NONE; needbytes = 1; - ch = char_type(*(++((unsigned char *)*inbuf))); + ch = char_type(*(++(*inbuf))); (*inbytesleft) --; case utf7_printable: utf7_state[0] = 0; @@ -246,7 +246,7 @@ (*inbytesleft) += needbytes; return UCS_CHAR_NONE; } - switch (char_type(*(++(unsigned char *)*inbuf))) { + switch (char_type(*(++(*inbuf)))) { case utf7_shift_out: (*inbuf) ++; (*inbytesleft) -= 2; @@ -264,7 +264,7 @@ return UCS_CHAR_INVALID; } (*inbytesleft) --; - return *((unsigned char *)*inbuf) ++; + return *((*inbuf)++); #undef utf7_state } geexbox-1.1/packages/iconv-extra/url0000644000175000017500000000004510641745505015656 0ustar benbenGEEXBOX_SRCS/iconv-extra-2.0.tar.bz2 geexbox-1.1/packages/imlib2/0000755000175000017500000000000010641745505014051 5ustar benbengeexbox-1.1/packages/imlib2/build0000755000175000017500000000140510641745505015076 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain $SCRIPTS/build libpng $SCRIPTS/build jpeg $SCRIPTS/build libungif $SCRIPTS/build tiff $SCRIPTS/build zlib $SCRIPTS/build freetype cd $BUILD/$1* ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=$LIB_PREFIX \ --with-freetype-config=$LIB_PREFIX/bin/freetype-config \ --disable-static \ --enable-shared \ --disable-amd64 \ --without-x \ --with-jpeg \ --with-png \ --with-tiff \ --with-gif \ --with-zlib \ --without-bzip2 \ --without-id3 sed -i 's%#define PACKAGE_LIB_DIR.*%#define PACKAGE_LIB_DIR "/usr/lib"%' config.h make make install geexbox-1.1/packages/imlib2/install0000755000175000017500000000062310641745505015446 0ustar benben#!/bin/sh . config/options $SCRIPTS/install tiff $SCRIPTS/install libpng mkdir -p $INSTALL/usr/lib cp -PR $BUILD/$1*/src/lib/.libs/libImlib2.so* $INSTALL/usr/lib mkdir -p $INSTALL/usr/lib/imlib2/loaders cp $BUILD/$1*/src/modules/loaders/.libs/*.so $INSTALL/usr/lib/imlib2/loaders mkdir -p $INSTALL/usr/lib/imlib2/filters cp $BUILD/$1*/src/modules/filters/.libs/*.so $INSTALL/usr/lib/imlib2/filters geexbox-1.1/packages/imlib2/patches/0000755000175000017500000000000010641745505015500 5ustar benbengeexbox-1.1/packages/imlib2/patches/10_no_x.diff0000644000175000017500000001336010641745505017600 0ustar benbendiff -Naur imlib2-1.3.0.orig/configure imlib2-1.3.0/configure --- imlib2-1.3.0.orig/configure 2006-11-21 21:08:02.000000000 +0100 +++ imlib2-1.3.0/configure 2006-11-21 21:08:45.000000000 +0100 @@ -21360,163 +21360,6 @@ freetype_cflags=`$FREETYPE_CONFIG --cflags` freetype_libs=`$FREETYPE_CONFIG --libs` -if test "${ac_cv_header_X11_X_h+set}" = set; then - { echo "$as_me:$LINENO: checking for X11/X.h" >&5 -echo $ECHO_N "checking for X11/X.h... $ECHO_C" >&6; } -if test "${ac_cv_header_X11_X_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_X_h" >&5 -echo "${ECHO_T}$ac_cv_header_X11_X_h" >&6; } -else - # Is the header compilable? -{ echo "$as_me:$LINENO: checking X11/X.h usability" >&5 -echo $ECHO_N "checking X11/X.h usability... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } - -# Is the header present? -{ echo "$as_me:$LINENO: checking X11/X.h presence" >&5 -echo $ECHO_N "checking X11/X.h presence... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: X11/X.h: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: X11/X.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/X.h: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: X11/X.h: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: X11/X.h: present but cannot be compiled" >&5 -echo "$as_me: WARNING: X11/X.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/X.h: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: X11/X.h: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/X.h: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: X11/X.h: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/X.h: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: X11/X.h: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/X.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: X11/X.h: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/X.h: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: X11/X.h: in the future, the compiler will take precedence" >&2;} - - ;; -esac -{ echo "$as_me:$LINENO: checking for X11/X.h" >&5 -echo $ECHO_N "checking for X11/X.h... $ECHO_C" >&6; } -if test "${ac_cv_header_X11_X_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_header_X11_X_h=$ac_header_preproc -fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_X_h" >&5 -echo "${ECHO_T}$ac_cv_header_X11_X_h" >&6; } - -fi -if test $ac_cv_header_X11_X_h = yes; then - have_x="yes" -else - have_x="no" -fi - - - if test "x$have_x" = "xno"; then # If --without-x was passed, this will be "disabled" instead of "no" -- # so always treat "no" as an error geexbox-1.1/packages/imlib2/url0000644000175000017500000000010610641745505014573 0ustar benbenhttp://prdownloads.sourceforge.net/enlightenment/imlib2-1.3.0.tar.gz geexbox-1.1/packages/initrd/0000755000175000017500000000000010641745505014164 5ustar benbengeexbox-1.1/packages/initrd/build0000755000175000017500000000133410641745505015212 0ustar benben#!/bin/sh . config/options $SCRIPTS/build genext2fs export INSTALL=$BUILD/$1/mnt rm -rf $INSTALL mkdir -p $INSTALL rm -f $BUILD/$1/$1 $BUILD/$1/$1.gz mkdir $INSTALL/bin mkdir $INSTALL/etc mkdir $INSTALL/ramfs mkdir $INSTALL/sbin mkdir $INSTALL/usr mkdir $INSTALL/usr/bin $SCRIPTS/install $TARGET_LIBC $SCRIPTS/install busybox $SCRIPTS/install udev $SCRIPTS/install iscd cp $PACKAGES/$1/scripts/linuxrc $INSTALL cp $PACKAGES/$1/scripts/console $INSTALL/sbin cp $PACKAGES/$1/scripts/nosystem $INSTALL/sbin cp $PACKAGES/$1/scripts/r[ow] $INSTALL/usr/bin ln -s /bin/busybox $INSTALL/bin/sh echo $TARGET_ARCH > $INSTALL/etc/arch $BUILD/genext2fs*/genext2fs -d $INSTALL -b $RAMDISK_SIZE -i 512 $BUILD/$1/$1 gzip -9 $BUILD/$1/$1 geexbox-1.1/packages/initrd/install0000755000175000017500000000065010641745505015561 0ustar benben#!/bin/sh . config/options test "$2" != installator && INSTALL="$INSTALL/boot" mkdir -p $INSTALL cp $BUILD/$1/$1.gz $INSTALL if [ "$2" != generator ]; then $SCRIPTS/build bootsplash $SCRIPTS/build theme-$THEME splashdat=$BUILD/theme-$THEME/bootsplash-$RESOLUTION.dat [ ! -f $splashdat ] && echo "Theme $THEME does not support resolution $RESOLUTION" && exit 1 cat $splashdat >> $ROOT/$INSTALL/$1.gz fi exit 0 geexbox-1.1/packages/initrd/need_build0000755000175000017500000000065210641745505016207 0ustar benben#!/bin/sh . config/options $SCRIPTS/build $TARGET_LIBC $SCRIPTS/build busybox $SCRIPTS/build udev $SCRIPTS/build iscd STAMP=$STAMPS/$1/build for p in $TARGET_LIBC busybox udev iscd; do test $STAMPS/$p/build -nt $STAMP && rm -f $STAMP done test $PACKAGES/initrd/config/dev -nt $STAMP && rm -f $STAMP for f in console linuxrc nosystem ro rw; do test $PACKAGES/initrd/scripts/$f -nt $STAMP && rm -f $STAMP done exit 0 geexbox-1.1/packages/initrd/scripts/0000755000175000017500000000000010641762631015652 5ustar benbengeexbox-1.1/packages/initrd/scripts/console0000755000175000017500000000026410641745505017245 0ustar benben#!/bin/sh /bin/busybox test ! -e /proc/cpuinfo && /bin/busybox mount -t proc none /proc /bin/busybox test ! -e /bin/cp && /bin/busybox --install -s while true; do /bin/sh done geexbox-1.1/packages/initrd/scripts/linuxrc0000755000175000017500000000742410641762631017273 0ustar benben#!/bin/sh busybox mount -t ramfs none /ramfs IFS=' ' for i in `busybox find /`; do if busybox test -d $i; then busybox mkdir -p /ramfs$i else busybox ln -s /initrd$i /ramfs$i fi done busybox mkdir /ramfs/initrd busybox pivot_root /ramfs /ramfs/initrd busybox mkdir -p /proc /sys /usr/bin /usr/sbin busybox mount -t proc none /proc busybox mount -t sysfs none /sys busybox --install -s echo geexbox > /proc/sys/kernel/hostname echo 0 > /proc/sys/dev/cdrom/autoclose echo 0 > /proc/sys/dev/cdrom/lock export PATH=/bin:/sbin:/usr/bin:/usr/sbin progress() { if test -f /proc/splash; then echo "show $1" > /proc/splash fi echo "### $2 ###" } progress 8000 "setting up ramfs tree" mkdir -p /dev mkdir -p /mnt mkdir -p /tmp mkdir -p /root mkdir -p /var/run mkdir -p /var/log mkdir -p /var/lock echo -n "" > /etc/mtab echo -n "" > /etc/fstab echo -n "" > /etc/mnts echo > /proc/sys/kernel/hotplug udevd --daemon udevstart grep -q installator /proc/cmdline && INSTALLATOR=yes grep -q debugging /proc/cmdline && DEBUG=yes BOOT=`sed 's/.*boot=\([^\ ]*\).*/\1/' /proc/cmdline` if test "$BOOT" = nfs; then progress 11000 "getting nfs tree" NFS=`sed 's/.*nfsroot=\([^\ ]*\).*/\1/' /proc/cmdline` GEEXBOX=/nfs mkdir -p $GEEXBOX udhcpc -q -H geexbox -n && mount -t nfs -o ro,nolock,nfsvers=2 $NFS $GEEXBOX if [ ! -f "$GEEXBOX/bin.tar.lzma" -a ! -f "$GEEXBOX/bin.tar.gz"]; then umount $GEEXBOX rmdir $GEEXBOX GEEXBOX= fi fi progress 12000 "searching cdrom drives" if [ "$BOOT" = cdrom ]; then for i in 0 1 2 3 4 5 6 7 8 9; do for DEV in `grep '^/dev/cdrom' /etc/mnts | cut -f1`; do CDROM=`grep "^$DEV " /etc/mnts | cut -f2-` if [ -d "$CDROM/GEEXBOX" ]; then GEEXBOX="$CDROM/GEEXBOX" ln -s "$DEV" /dev/cdrom break fi done [ -n "$GEEXBOX" ] && break sleep 1 done fi [ ! -e /dev/cdrom -a -b /dev/cdrom1 ] && ln -s /dev/cdrom1 /dev/cdrom if [ "$BOOT" != cdrom -a "$BOOT" != nfs ]; then if [ "$INSTALLATOR" != yes ]; then progress 17000 "boot device detection" for i in 0 1 2 3 4 5 6 7 8 9; do [ -z "$BOOTDISK" ] && BOOTDISK=`cd /dev; ls -l $BOOT | sed 's/.* \([^ ]*\)$/\1/'` [ -n "$BOOTDISK" ] && grep -q "^/dev/$BOOTDISK " /proc/mounts && break sleep 1 done for DEV in `grep '^/dev/disk' /etc/mnts | cut -f1`; do DIR=`grep "^$DEV " /etc/mnts | cut -f2-` if [ -d "$DIR/GEEXBOX" ]; then GEEXBOX="$DIR/GEEXBOX" [ "/dev/$BOOTDISK" = "$DEV" ] && break fi done fi fi if test -n "$GEEXBOX" ; then progress 25000 "copying system into ram" cp -a "$GEEXBOX/sbin" / progress 27000 "copying system into ram" cp -a "$GEEXBOX/etc" / progress 29000 "copying system into ram" cp -a "$GEEXBOX/usr" / progress 30500 "copying system into ram" cp -a "$GEEXBOX/var" / progress 31000 "copying system into ram" [ -f "$GEEXBOX/bin.tar.lzma" ] && tar xaf "$GEEXBOX/bin.tar.lzma" -C / [ -f "$GEEXBOX/bin.tar.gz" ] && tar xzf "$GEEXBOX/bin.tar.gz" -C / progress 42000 "copying system into ram" cp -a "$GEEXBOX/codecs" / progress 45000 "copying system into ram" cp -a "$GEEXBOX/firmwares" / progress 46000 "copying system into ram" INIT=/sbin/init else INIT=/sbin/nosystem progress 65535 "cleaning ram disk" fi if test "$BOOT" = nfs; then if test "$INSTALLATOR" = yes; then export NFS="$GEEXBOX" elif test -n "$GEEXBOX"; then umount "$GEEXBOX" fi fi if test "$BOOT" = cdrom; then export CDROM="${GEEXBOX%/GEEXBOX}" fi RUNLEVEL="geexbox" if test "$INSTALLATOR" = yes; then RUNLEVEL="install" elif test "$DEBUG" = yes; then RUNLEVEL="debug" fi if test "$DEBUG" = yes; then /sbin/console /dev/tty2 2>&1 & fi /bin/sh $INIT $RUNLEVEL /dev/tty1 2>&1 if test "$INSTALLATOR" = yes -o $? = 64; then reboot else poweroff fi geexbox-1.1/packages/initrd/scripts/nosystem0000755000175000017500000000050510641745505017462 0ustar benben#!/bin/sh /bin/busybox test ! -e /proc/cpuinfo && /bin/busybox mount -t proc none /proc /bin/busybox test ! -e /bin/cp && /bin/busybox --install -s echo "****" echo "**** ERROR: can't access GeeXboX second stage system !" echo "**** If booting from CD your CD drive is probably not recognized" echo "****" /bin/sh exit 1 geexbox-1.1/packages/initrd/scripts/ro0000755000175000017500000000003710641745505016221 0ustar benben#!/bin/sh /usr/bin/rw "$1" ro geexbox-1.1/packages/initrd/scripts/rw0000755000175000017500000000145410641745505016235 0ustar benben#!/bin/sh if [ "${1#/mnt/}" != "$1" ]; then DEV= for TMPDEV in `cut -f1 /etc/mnts`; do MNT=`grep "^$TMPDEV " /etc/mnts | cut -f2-` if [ "${1#$MNT}" != "$1" ]; then DEV=$TMPDEV break fi done [ -z "$DEV" ] && exit 1 if [ "$2" = ro ]; then COUNT=`sed -n "s%\([0-9]*\)\ $DEV%\1%p" /var/rw` [ "$COUNT" -lt "1" ] && exit 1 [ "$COUNT" -eq "1" ] && mount -o remount,ro "$DEV" "$MNT" COUNT=$(($COUNT-1)) sed -i "s%[0-9]*\ $DEV%$COUNT $DEV%" /var/rw else [ -f /var/rw ] && COUNT=`sed -n "s%\([0-9]*\)\ $DEV%\1%p" /var/rw` [ -z "$COUNT" -o "$COUNT" -le "0" ] && mount -o remount,rw "$DEV" "$MNT" if [ -z "$COUNT" ]; then echo "1 $DEV" >> /var/rw else COUNT=$(($COUNT+1)) sed -i "s%[0-9]*\ $DEV%$COUNT $DEV%" /var/rw fi fi fi geexbox-1.1/packages/installator/0000755000175000017500000000000010641745505015227 5ustar benbengeexbox-1.1/packages/installator/init.d/0000755000175000017500000000000010641745505016414 5ustar benbengeexbox-1.1/packages/installator/init.d/82_install0000755000175000017500000000017710641745505020326 0ustar benben#!/bin/sh # # start GeeXboX installator # # runlevels: install export UID=0 sleep 3 /bin/sh /sbin/installator geexbox exit 0 geexbox-1.1/packages/installator/install0000755000175000017500000000050710641745505016625 0ustar benben#!/bin/sh . config/options mkdir -p $INSTALL/sbin cp $PACKAGES/$1/scripts/$1.sh $INSTALL/sbin/$1 sed -i "s/VERSION=.*/VERSION=$GEEXBOX_VERSION/" $INSTALL/sbin/$1 $SCRIPTS/install ncurses $SCRIPTS/install dialog $SCRIPTS/install util-linux $SCRIPTS/install dosfstools $SCRIPTS/install grub $2 $SCRIPTS/install syslinux binary geexbox-1.1/packages/installator/scripts/0000755000175000017500000000000010641745505016716 5ustar benbengeexbox-1.1/packages/installator/scripts/installator.sh0000755000175000017500000007633110641745505021623 0ustar benben#!/bin/sh # Detect whether partition ($1) mounted at ($2) with type ($3) is microsoft. detect_os_microsoft () { local longname if [ "$3" != ntfs -a "$3" != vfat -a "$3" != msdos ]; then return fi if [ -e "$2/ntldr" -a -e "$2/NTDETECT.COM" ]; then longname="Windows NT/2000/XP" elif [ -e "$2/windows/win.com" ]; then longname="Windows 95/98/Me" elif [ -d "$2/dos" ]; then longname="MS-DOS 5.x/6.x/Win3.1" else return fi echo "$1:$longname:chain" } detect_os () { local partname partition type mpoint mkdir -p tmpmnt for partname in `sed -n "s/\ *[0-9][0-9]*\ *[0-9][0-9]*\ *[0-9][0-9][0-9]*\ \([a-z]*[0-9][0-9]*\)/\1/p" /proc/partitions`; do partition="/dev/$partname" if ! grep -q "^$partition " /proc/mounts; then if mount -o ro $partition tmpmnt >/dev/null 2>&1; then type=$(grep "^$partition " /proc/mounts | cut -d " " -f 3) detect_os_microsoft $partition tmpmnt $type umount tmpmnt >/dev/null || return fi else mpoint=$(grep "^$partition " /proc/mounts | cut -d " " -f 2) type=$(grep "^$partition " /proc/mounts | cut -d " " -f 3) detect_os_microsoft $partition $mpoint $type fi done rmdir tmpmnt } # Usage: convert os_device # Convert an OS device to the corresponding GRUB drive. # This part is OS-specific. # -- taken from `grub-install` convert () { local tmp_drive tmp_disk tmp_part if test ! -e "$1"; then echo "$1: Not found or not a block device." 1>&2 exit 1 fi tmp_disk=`echo "$1" | sed -e 's%\([sh]d[a-z]\)[0-9]*$%\1%'` tmp_part=`echo "$1" | sed -e 's%.*/[sh]d[a-z]\([0-9]*\)$%\1%'` tmp_drive=`grep -v '^#' $device_map | grep "$tmp_disk *$" \ | sed 's%.*\(([hf]d[0-9][a-g0-9,]*)\).*%\1%'` if [ -z "$tmp_drive" ]; then echo "$1 does not have any corresponding BIOS drive." 1>&2 exit 1 fi if [ -n "$tmp_part" ]; then # If a partition is specified, we need to translate it into the # GRUB's syntax. echo "$tmp_drive" | sed "s%)$%,$(($tmp_part-1)))%" else # If no partition is specified, just print the drive name. echo "$tmp_drive" fi } # Configure network interface and parameters before installing GeeXboX to disk. setup_network () { local title phy_type wifi_mode wifi_enc wifi_key wpa_drv wifi_essid host_ip subnet gw_ip dns_ip smb_user smb_pwd val f title="$BACKTITLE : Network Configuration" f="$1/etc/network" # Get type of physical interface val=`grep PHY_TYPE $f | cut -d'"' -f2` phy_type=`$DIALOG --no-cancel --aspect 15 --default-item $val --stdout --backtitle "$title" --title "Network Physical Interface" --menu "\nGeeXboX can only use one network physical interface at a time. If you have more than one NIC, GeeXboX will use the first one. If you have both a traditional Ethernet adapter and a Wireless card, GeeXboX will use the wireless card by default. It is recommended to keep physical interface auto-detection but you may also want to force the use of one kind of interface.\n" 0 0 0 auto "Auto detection (recommended)" ethernet "Force using Ethernet card" wifi "Force using Wireless card"` || exit 1 # Get wireless settings only if required if [ $phy_type = "auto" -o $phy_type = "wifi" ]; then wifi_mode=`$DIALOG --no-cancel --aspect 15 --stdout --backtitle "$title" --title "Configuring WiFi Mode" --menu "\nAs you seem to be using your wireless adapter to connect this computer to your network, you will have to setup the networking mode.\n Are you connected to an access point (recommended) or directly to another computer ?\n" 0 0 0 managed "Connected to an access point (recommended)" ad-hoc "Direct Connection"` || exit 1 wifi_enc=`$DIALOG --no-cancel --aspect 15 --stdout --backtitle "$title" --title "Configuring WiFi Encryption" --menu "\nAs you seem to be using your wireless adapter to connect this computer to your network, you will have to setup the security mode.\n Are you using no ecnryption, WEP encryption or WPA encryption ?\n" 0 0 0 none "no encryption" WEP "WEP" WPA "WPA (experimental)"` || exit 1 val=`grep WIFI_ESSID $f | cut -d'"' -f2` wifi_essid=`$DIALOG --no-cancel --aspect 15 --stdout --backtitle "$title" --title "Configuring WiFi ESSID" --inputbox "\nAs you seem to be using your wireless adapter to connect this computer to your network, you probably are using an SSID. If so, please fill in the following input box with your SSID identifier or leave it blank if you do not have one (open network).\n" 0 0 "$val"` || exit 1 if [ $wifi_enc = WEP -o $wifi_enc = WPA ]; then val=`grep WIFI_KEY $f | cut -d'"' -f2` wifi_key=`$DIALOG --no-cancel --aspect 15 --stdout --backtitle "$title" --title "Configuring WEP/WPA key" --inputbox "\nAs you have selected to use encryption for your wireless connection, please fill in the following input box with your access point WEP/WPA key.\n" 0 0 "$val"` || exit 1 fi if [ $wifi_enc = WPA ]; then wpa_drv=`$DIALOG --no-cancel --aspect 15 --stdout --backtitle "$title" --title "Configuring WiFi WPA Driver" --menu "\nSince you are connecting to your network using WPA encryption, you will have to select the driver interface. Most native linux drivers can use wext, but atmel drivers might have to use atmel.\n" 0 0 0 wext "Wireless Extensions" atmel "atmel"` || exit 1 fi fi # get GeeXboX IP address val=`grep HOST $f | cut -d'"' -f2` host_ip=`$DIALOG --no-cancel --aspect 15 --stdout --backtitle "$title" --title "GeeXboX IP" --inputbox "\nGeeXboX needs to be allocated an IP address to be present on your network. Please fill in the following input box or leave it as it is for using DHCP autoconfiguration\n" 0 0 "$val"` || exit 1 # do not get more settings if DHCP if [ ! -z $host_ip ]; then val=`grep SUBNET $f | cut -d'"' -f2` subnet=`$DIALOG --no-cancel --aspect 15 --stdout --backtitle "$title" --title "GeeXboX Subnet" --inputbox "\nYou may want to connect GeeXboX to the Internet. Please fill in the following input box with your network Subnet mask or leave it blank if you do not want to set a subnet mask for this computer.\n" 0 0 "$val"` || exit 1 val=`grep GATEWAY $f | cut -d'"' -f2` gw_ip=`$DIALOG --no-cancel --aspect 15 --stdout --backtitle "$title" --title "GeeXboX GateWay" --inputbox "\nYou may want to connect GeeXboX to the Internet. Please fill in the following input box with your gateway IP address or leave it blank if you do not want to set a gateway for this computer.\n" 0 0 "$val"` || exit 1 val=`grep DNS_SERVER $f | cut -d'"' -f2` dns_ip=`$DIALOG --no-cancel --aspect 15 --stdout --backtitle "$title" --title "GeeXboX DNS Server" --inputbox "\nYou may want to connect GeeXboX to the Internet. Please fill in the following input box with your DNS Server IP address used for name resolving or leave it blank if you do not want to resolve names with this computer.\n" 0 0 "$val"` || exit 1 fi # get samba user name val=`grep SMB_USER $f | cut -d'"' -f2` smb_user=`$DIALOG --no-cancel --stdout --backtitle "$title" --title "Set Samba User name" --inputbox "\nWhen accessing to remote Samba shares, you may need to be authenticated. Most of Microsoft Windows computers let you anonymously access to remote shares using the guest account (SHARE). Please fill in the following input box with your user name for accesing to remote Samba shares or leave it blank if you do not have one.\n" 0 0 "$val"` || exit 1 # get samba password val=`grep SMB_PWD $f | cut -d'"' -f2` smb_pwd=`$DIALOG --no-cancel --stdout --backtitle "$title" --title "Set Samba Password" --inputbox "\nIf user needs to be authenticated through a password, please fill in the following input box with it or leave it blank if you do not have one.\n" 0 0 "$val"` || exit 1 sed -i "s%^PHY_TYPE=\".*\"\(.*\)%PHY_TYPE=\"$phy_type\"\1%" $f sed -i "s%^WIFI_MODE=\".*\"\(.*\)%WIFI_MODE=\"$wifi_mode\"\1%" $f sed -i "s%^WIFI_ENC=\".*\"\(.*\)%WIFI_ENC=\"$wifi_enc\"\1%" $f sed -i "s%^WIFI_KEY=\".*\"\(.*\)%WIFI_KEY=\"$wifi_key\"\1%" $f sed -i "s%^WIFI_ESSID=\".*\"\(.*\)%WIFI_ESSID=\"$wifi_essid\"\1%" $f sed -i "s%^WPA_DRV=\".*\"\(.*\)%WPA_DRV=\"$wpa_drv\"\1%" $f sed -i "s%^HOST=.*%HOST=\"$host_ip\"%" $f sed -i "s%^SUBNET=.*%SUBNET=\"$subnet\"%" $f sed -i "s%^GATEWAY=.*%GATEWAY=\"$gw_ip\"%" $f sed -i "s%^DNS_SERVER=.*%DNS_SERVER=\"$dns_ip\"%" $f sed -i "s%^SMB_USER=.*%SMB_USER=\"$smb_user\"%" $f sed -i "s%^SMB_PWD=.*%SMB_PWD=\"$smb_pwd\"%" $f } # Configure TV card and scan for channels. setup_tvscan () { MPTVSCAN=/usr/bin/mptvscan title="$BACKTITLE : Analog TV Channels Scanner" for i in `$MPTVSCAN -i`; do INPUTS="$INPUTS $i ''" done for i in `$MPTVSCAN -s`; do NORMS="$NORMS $i ''" done for i in `$MPTVSCAN -c`; do CHANLISTS="$CHANLISTS $i ''" done while [ -z "$DONE" ]; do INPUT=`$DIALOG --no-cancel --aspect 15 --stdout --backtitle "$title" --title "TV Input Selection" --menu "\nBelow is the list of your TV card's available inputs. Please select the one you want to use for channels scan (should be Television)." 0 0 0 $INPUTS` NORM=`$DIALOG --no-cancel --aspect 15 --stdout --backtitle "$title" --title "TV Norm Selection" --menu "\nBelow is the list of your TV card's supported video standards. Please select the one you want to use, according to your localization." 0 0 0 $NORMS` CHANLIST=`$DIALOG --no-cancel --aspect 15 --stdout --backtitle "$title" --title "TV Chanlist Selection" --menu "\nBelow is the list of pre-configured chanlists for scan. Select the one corresponding to your location." 0 0 0 $CHANLISTS` $MPTVSCAN -a "-i$INPUT" "-s$NORM" "-c$CHANLIST" -p 2>/tmp/chans | $DIALOG --no-cancel --aspect 15 --stdout --backtitle "$title" --title "Scanning Channels" --gauge "\nGeeXboX is currently scanning your channels. This operation may take a while. Please wait while processing ..." 0 0 CHANNELS=`sed -e 's/CHAN=//g' -e 's/:/ - /g' -e 's/\"//g' -e 's/$/\\\\n/g' /tmp/chans` $DIALOG --aspect 12 --stdout --yes-label "Accept" --no-label "Retry" --backtitle "$title" --title "Scan Done ..." --yesno "\nCongratulations, the TV channels scan is done. The following channels has been discoverd (if no channel has been found, you can then try again with new card/tuner/norm/chanlist settings).\n\n$CHANNELS" 0 0 && DONE=true done if [ -s /tmp/chans ]; then cat /tmp/chans >> $1/etc/tvcard fi rm -f /tmp/chans sed -i "s/^TVIN_STANDARD=.*/TVIN_STANDARD=$NORM/" $1/etc/tvcard sed -i "s/^CHANLIST=.*/CHANLIST=$CHANLIST/" $1/etc/tvcard } # Configure DVB card and scan for channels. setup_dvbscan () { DVB_LIST=/usr/share/dvb DVBSCAN=/usr/bin/dvbscan SCAN_ARGS="-x 0" # Scan FreeToAir channels only TITLE="$BACKTITLE : Digital TV Channels Scanner" CHANNELS_CONF="$1/etc/mplayer/channels.conf" if [ -f /usr/share/dvb.tar.lzma -a ! -d $DVB_LIST ]; then tar xaf /usr/share/dvb.tar.lzma -C /usr/share fi if [ -f /usr/share/dvb.tar.gz -a ! -d $DVB_LIST ]; then tar xzf /usr/share/dvb.tar.gz -C /usr/share fi DVB_TYPE=`$DIALOG --no-cancel --aspect 15 --stdout --backtitle "$TITLE" --title "DVB Card Type Selection" --menu "\nBelow is the list of available DVB card types. Please select the one you want to use for channels scan." 0 0 0 dvb-s "DVB Sattelite" dvb-t "DVB Terrestrial" dvb-c "DVB Cable" atsc "ATSC (US)"` # DVB Terrestrial cards if [ $DVB_TYPE = "dvb-t" ]; then for i in `ls $DVB_LIST/$DVB_TYPE`; do COUNTRIES="$COUNTRIES $i ''" done COUNTRY=`$DIALOG --no-cancel --aspect 15 --stdout --backtitle "$TITLE" --title "Country Selection" --menu "\nBelow is the list of countries with known DVB-T transponders frequencies. Please select the one where you live." 0 0 0 $COUNTRIES` for i in `ls $DVB_LIST/$DVB_TYPE/$COUNTRY`; do CITIES="$CITIES $i ''" done CITY=`$DIALOG --no-cancel --aspect 15 --stdout --backtitle "$TITLE" --title "City Selection" --menu "\nBelow is the list of locations from your country with known DVB-T transponders frequencies. If you live in place not present in this list, please contact your DVB provider, asking for your local transponders frequencies and send this information to the LinuxTV (http://www.linuxtv.org/) team. Otherwise, simply choose the town nearest to where you live." 0 0 0 $CITIES` $DVBSCAN $SCAN_ARGS $DVB_LIST/$DVB_TYPE/$COUNTRY/$CITY > $CHANNELS_CONF elif [ $DVB_TYPE = "dvb-s" ]; then for i in `ls $DVB_LIST/$DVB_TYPE`; do SATS="$SATS $i ''" done SAT=`$DIALOG --no-cancel --aspect 15 --stdout --backtitle "$TITLE" --title "Satellite Selection" --menu "\nBelow is the list of known DVB-S satellite transponders you may be able to be connected to. If you are using another transponder which is not present in this list, please contact your DVB provider, asking for your transponder frequencies and send this information to the LinuxTV (http://www.linuxtv.org/) team. Otherwise, simply choose the one that fits your needs." 0 0 0 $SATS` $DVBSCAN $SCAN_ARGS $DVB_LIST/$DVB_TYPE/$SAT > $CHANNELS_CONF elif [ $DVB_TYPE = "dvb-c" ]; then for i in `ls $DVB_LIST/$DVB_TYPE`; do COUNTRIES="$COUNTRIES $i ''" done COUNTRY=`$DIALOG --no-cancel --aspect 15 --stdout --backtitle "$TITLE" --title "Country Selection" --menu "\nBelow is the list of countries with known DVB-C transponders frequencies. Please select the one where you live." 0 0 0 $COUNTRIES` for i in `ls $DVB_LIST/$DVB_TYPE/$COUNTRY`; do CITIES="$CITIES $i ''" done CITY=`$DIALOG --no-cancel --aspect 15 --stdout --backtitle "$TITLE" --title "City Selection" --menu "\nBelow is the list of locations from your country with known DVB-C transponders frequencies. If you live in place not present in this list, please contact your DVB provider, asking for your local transponders frequencies and send this information to the LinuxTV (http://www.linuxtv.org/) team. Otherwise, simply choose the town nearest to the place you live." 0 0 0 $CITIES` $DVBSCAN $SCAN_ARGS $DVB_LIST/$DVB_TYPE/$COUNTRY/$CITY > $CHANNELS_CONF elif [ $DVB_TYPE = "atsc" ]; then for i in `ls $DVB_LIST/$DVB_TYPE`; do ATSC="$ATSC $i ''" done FREQ=`$DIALOG --no-cancel --aspect 15 --stdout --backtitle "$TITLE" --title "ATSC Transponder Selection" --menu "\nBelow is the list of known ATSC transponders you may be able to be connected to. If you are using another transponder which is not present in this list, please contact your ATSC provider, asking for your transponder frequencies and send this information to the LinuxTV (http://www.linuxtv.org/) team. Otherwise, simply choose the one that fits your needs." 0 0 0 $ATSC` $DVBSCAN $SCAN_ARGS $DVB_LIST/$DVB_TYPE/$FREQ > $CHANNELS_CONF fi if [ -s $CHANNELS_CONF ]; then # remove non-coherent detected channels grep -v "^\[.*\]:" $CHANNELS_CONF > /tmp/channels.conf mv /tmp/channels.conf $CHANNELS_CONF fi } /bin/busybox mount -t proc none /proc /bin/busybox mount -t sysfs none /sys /bin/busybox --install -s if [ "$1" = geexbox ]; then DIALOG=/usr/bin/dialog CFDISK=/usr/bin/cfdisk SFDISK=/usr/bin/sfdisk MKDOSFS=/usr/bin/mkdosfs MKE2FS=/sbin/mke2fs GRUB=/usr/bin/grub SYSLINUX=/usr/bin/syslinux else DIALOG=`which dialog` CFDISK=`which cfdisk` SFDISK=`which sfdisk` MKDOSFS=`which mkdosfs` MKE2FS=`which mke2fs` GRUB=`which grub` SYSLINUX=`which syslinux` fi VERSION=`cat VERSION` BACKTITLE="GeeXboX $VERSION installator" if [ "$UID" != "0" ]; then echo "" echo "**** You need to be root to install GeeXboX ****" echo "" exit 1 fi if [ -z "$SFDISK" -o -z "$GRUB" -o -z "$DIALOG" ]; then echo "" echo "**** You need to have sfdisk, grub and dialog installed to install GeeXboX ****" echo "" exit 1 fi if [ ! -d "/sys/block" ]; then echo "" echo "**** You need to have a mounted sysfs at /sys. try executing: mount -t sysfs none /sys ****" echo "" exit 1 fi # disable kernel messages to avoid screen corruption echo 0 > /proc/sys/kernel/printk title="$BACKTITLE : Keymap selection" KEYMAPS="qwerty qwerty" for i in `ls /etc/keymaps` do KEYMAPS="$KEYMAPS $i $i" done KEYMAP=`$DIALOG --no-cancel --stdout --backtitle "$title" --title "Choose Keymap" --default-item qwerty --menu "Which keymap do you want to use ?" 0 0 0 $KEYMAPS` || exit 1 test -f "/etc/keymaps/$KEYMAP" && loadkmap < "/etc/keymaps/$KEYMAP" while true; do if [ -e /dev/.devfsd ]; then DISKS=`cat /proc/partitions | sed -n "s/\ *[0-9][0-9]*\ *[0-9][0-9]*\ *\([0-9][0-9]*\)\ \([a-z0-9/]*disc\).*$/\2 (\1_blocks)/p"` else DISKS=`cat /proc/partitions | sed -n "s/\ *[0-9][0-9]*\ *[0-9][0-9]*\ *\([0-9][0-9]*\)\ \([a-z]*\)$/\2 (\1_blocks)/p"` fi if [ -z "$DISKS" ]; then $DIALOG --aspect 15 --backtitle "$BACKTITLE" --title "ERROR" --yesno "\nNo disks found on this system.\nCheck again ?" 0 0 || exit 1 else DISKS="$DISKS refresh list" DISK=`$DIALOG --stdout --backtitle "$BACKTITLE" --title "Installation device" --menu "\nYou are going to install GeeXboX. For this you will need an empty partition with about 8 MB of free space.\nBe careful to choose the right disk! We won't take responsibility for any data loss." 0 0 0 $DISKS` || exit 1 [ $DISK != refresh ] && break fi done if [ "`cat /sys/block/$DISK/removable`" = 1 ]; then BOOTLOADER=`$DIALOG --stdout --aspect 15 --backtitle "$BACKTITLE" --title "Linux partition type" --menu "Which type of boot loader you want ? " 0 0 0 grub "GNU GRUB - Doesn't work with oldest BIOS" syslinux "Syslinux - For oldest BIOS compatbility"` || exit 1 TYPE=REMOVABLE else BOOTLOADER=grub TYPE=HDD fi if [ $BOOTLOADER = syslinux ]; then PART_MSG="FAT partition (type=06)" elif [ $BOOTLOADER = grub ]; then PART_MSG="FAT partition (type=0B) or Linux ext2/3 partition (type=83)" fi if [ -z "$CFDISK" ]; then CFDISK_MSG="As you don't have cfdisk installed, the installator won't be able to create the partition for you. You'll have to create it yourself before installing." else CFDISK_MSG="Please edit your partition table to create a $PART_MSG with about 8 MB of free space.\nRemember to write the changes when done. We won't take responsibility for any data loss." fi $DIALOG --stdout --backtitle "$BACKTITLE" --title "Installation device" --msgbox "$CFDISK_MSG" 0 0 || exit 1 if [ -n "$CFDISK" ]; then $CFDISK /dev/$DISK || exit 1 fi while [ ! -b "$DEV" ]; do DISKS="" for i in `$SFDISK -l /dev/$DISK | grep ${DISK%disc} | cut -f1 -d' '`; do case `$SFDISK --print-id ${i%%[0-9]*} ${i#${i%%[0-9]*}}` in 1|11|6|e|16|1e|b|c|1b|1c) #FAT12/16/32 are supported both in syslinux and grub. S=`$SFDISK -s "$i" | sed 's/\([0-9]*\)[0-9]\{3\}/\1/'` DISKS="$DISKS $i ${S}MB" ;; 83) #Linux is supported only in grub. if [ $BOOTLOADER = grub ]; then S=`$SFDISK -s "$i" | sed 's/\([0-9]*\)[0-9]\{3\}/\1/'` DISKS="$DISKS $i ${S}MB" fi ;; esac done if [ -z "$DISKS" ]; then $DIALOG --aspect 15 --backtitle "$BACKTITLE" --title "ERROR" --msgbox "\nYou don't have any $PART_MSG partition on your system. Please create a partition first using for example cfdisk.\n" 0 0 exit 1 else DEV=`$DIALOG --stdout --aspect 15 --backtitle "$BACKTITLE" --title "Installation device" --menu "Where do you want to install GeeXboX ?" 0 0 0 $DISKS` || exit 1 fi if [ ! -b "$DEV" ]; then $DIALOG --aspect 15 --backtitle "$BACKTITLE" --title "ERROR" --msgbox "\n'$DEV' is not a valid block device.\n" 0 0 fi done DEVNAME="${DEV#/dev/}" case `$SFDISK --print-id ${DEV%%[0-9]*} ${DEV#${DEV%%[0-9]*}}` in 1|11|6|e|16|1e|14|b|c|1b|1c) SUPPORTED_TYPES="vfat" PART_TYPE="FAT" ;; 83) # Linux SUPPORTED_TYPES="ext3 ext2" PART_TYPE="Linux" ;; esac mkdir di # Try to guess current partition type. MKFS_TYPE= for type in vfat ext3 ext2 auto; do if mount -o ro -t $type "$DEV" di; then MKFS_TYPE=`grep "^$DEV " /proc/mounts | cut -d " " -f 3` umount di break fi done NEED_FORMAT=yes if [ -z "$MKFS_TYPE" ]; then FORMAT_MSG="Partition is not formated. " else for type in $SUPPORTED_TYPES; do [ $type = $MKFS_TYPE ] && NEED_FORMAT=no done if [ "$NEED_FORMAT" = yes ]; then FORMAT_MSG="Partition format type ($MKFS_TYPE) is not supported in your partition type ($PART_TYPE). " else FORMAT_MSG="Partition is already formated. " fi fi $DIALOG --aspect 15 --backtitle "$BACKTITLE" --title "Formatting" --defaultno --yesno "$FORMAT_MSG\nDo you want to format '$DEV' ?\n" 0 0 && FORMAT=yes if [ "$FORMAT" = yes ]; then case `$SFDISK --print-id ${DEV%%[0-9]*} ${DEV#${DEV%%[0-9]*}}` in 1|11|6|e|16|1e|14) # FAT12 and FAT16 MKFS=$MKDOSFS MKFS_OPT="-n GEEXBOX" MKFS_TYPE=vfat MKFS_TYPENAME="FAT" ;; b|c|1b|1c) # FAT32 MKFS=$MKDOSFS MKFS_OPT="-n GEEXBOX -F 32" MKFS_TYPE=vfat MKFS_TYPENAME="FAT" ;; 83) # Linux MKFS_TYPE=`$DIALOG --stdout --aspect 15 --backtitle "$BACKTITLE" --title "Linux partition type" --menu "Which type of Linux partition you want ?" 0 0 0 ext2 "Linux ext2" ext3 "Linux ext3"` || exit 1 case $MKFS_TYPE in ext2) MKFS=$MKE2FS MKFS_OPT="-L GEEXBOX" MKFS_TYPENAME="Linux ext2" ;; ext3) MKFS=$MKE2FS MKFS_OPT="-L GEEXBOX -j" MKFS_TYPENAME="Linux ext3" ;; esac ;; esac if [ -z "$MKFS" -o ! -x $MKFS ]; then if [ "$NEED_FORMAT" = yes ]; then $DIALOG --aspect 15 --backtitle "$BACKTITLE" --title "ERROR" --msgbox "\n'$DEV' must be formated. As you don't have formatting tool installed, I won't be able to format the partition.\n" 0 0 rmdir di exit 1 else $DIALOG --aspect 15 --backtitle "$BACKTITLE" --title "Warning" --msgbox "\n'$DEV' needs to be a $MKFS_TYPENAME partition. As you don't have formatting tool installed, I won't be able to format the partition. Hopefully it is already formatted.\n" 0 0 fi else $MKFS $MKFS_OPT "$DEV" fi elif [ "$NEED_FORMAT" = yes ]; then $DIALOG --aspect 15 --backtitle "$BACKTITLE" --title "ERROR" --msgbox "\n'$DEV' needs to be a formatted.\n" 0 0 rmdir di exit 1 fi mount -t $MKFS_TYPE "$DEV" di if [ $? -ne 0 ]; then $DIALOG --aspect 15 --backtitle "$BACKTITLE" --title "ERROR" --msgbox "\nFailed to mount '$DEV' as $MKFS_TYPENAME partition.\n" 0 0 rmdir di exit 1 fi if [ -d disk ]; then cp -a disk/* di 2>/dev/null else if [ -n "$NFS" ]; then GEEXBOX="$NFS" else GEEXBOX="$CDROM/GEEXBOX" fi cp -a "$GEEXBOX" di/GEEXBOX 2>/dev/null cd di/GEEXBOX/boot mv vmlinuz initrd.gz isolinux.cfg boot.msg help.msg splash.rle ../../ cd ../../../ rm -rf di/GEEXBOX/boot fi # Setup network is only available when booting from GeeXboX. if [ "$1" = geexbox ]; then $DIALOG --aspect 15 --backtitle "$BACKTITLE" --title "Configure Network ?" --yesno "\nDo you want to configure your network parameters before installing GeeXboX to disk ?\n" 0 0 && setup_network "di/GEEXBOX" fi # Configure TV card and scan for channels. # (only available when booting from GeeXboX). if [ "$1" = geexbox ]; then if grep -q -e '0400: 109e:' \ -e '0480: 1131:' \ -e '0480: 14f1:88' \ /tmp/pci; then # Only scan if a TV card is detected /usr/bin/mptvscan -i >/dev/null 2>&1 if [ `echo $?` = 0 ]; then $DIALOG --aspect 15 --backtitle "$BACKTITLE" --title "Scan for Analog TV Channels ?" --yesno "\nDo you want to configure your analog tv card and scan for channels before installing GeeXboX to disk ?\n" 0 0 && setup_tvscan "di/GEEXBOX" fi fi fi # Configure DVB card and scan for channels. # (only available when booting from GeeXboX). if [ "$1" = geexbox ]; then # Only scan if a DVB card is detected if [ -f /var/dvbcard ]; then $DIALOG --aspect 15 --backtitle "$BACKTITLE" --title "Scan for Digital (DVB) TV Channels ?" --yesno "\nDo you want to configure your digital (DVB) tv card and scan for channels before installing GeeXboX to disk ?\n" 0 0 && setup_dvbscan "di/GEEXBOX" fi fi VESA_MODE_OLD=`grep vga= di/isolinux.cfg | head -1 | sed "s%.*vga=\([^ ]*\).*%\1%"` VESA_RES=$((($VESA_MODE_OLD - 784) / 3)) VESA_DEPTH=$((($VESA_MODE_OLD - 784) % 3)) if [ $VESA_DEPTH != 0 -a $VESA_DEPTH != 1 -a $VESA_DEPTH != 2 ] || [ $VESA_RES != 0 -a $VESA_RES != 1 -a $VESA_RES != 2 -a $VESA_RES != 3 ]; then VESA_RES=1 VESA_DEPTH=2 fi VESA_RES=`$DIALOG --stdout --aspect 15 --backtitle "$BACKTITLE" --title "Screen Resolution" --default-item $VESA_RES --menu "Select from options below" 000 0 0 0 "640x480" 1 "800x600" 2 "1024x768" 3 "1280x1024" 4 "1600x1200"` VESA_DEPTH=`$DIALOG --stdout --aspect 15 --backtitle "$BACKTITLE" --title "Screen Color Depth" --default-item $VESA_DEPTH --menu "Select from options below" 000 0 0 0 "15 bit" 1 "16 bit" 2 "24 bit"` VESA_MODE=$((784 + VESA_RES*3 + VESA_DEPTH)) [ $VESA_MODE -ge 796 ] && VESA_MODE=$((VESA_MODE + 1)) title="$BACKTITLE : Menu Language selection" LANGS=`ls di/GEEXBOX/etc/mplayer/*.lang | sed -e 's$di/GEEXBOX/etc/mplayer/\(.*\).lang$\1$g'` for l in $LANGS; do LLANGS="$LLANGS $l $l" done MENU_LANG=`$DIALOG --no-cancel --stdout --backtitle "$title" --title "Choose Menu Language" --default-item en --menu "Which language do you want to use for the menu ?" 0 0 0 $LLANGS` || exit 1 REMOTES=`ls di/GEEXBOX/etc/lirc/lircrc_* | sed -e 's/.*lircrc_//g'` for r in $REMOTES; do LREMOTES="$LREMOTES $r $r" done REMOTE=`$DIALOG --stdout --aspect 15 --backtitle "$BACKTITLE" --title "Remote" --menu "Select the remote to use" 000 0 0 $LREMOTES` RECEIVERS=`ls di/GEEXBOX/etc/lirc/lircd_* | grep -v ".conf" | sed -e 's/.*lircd_//g'` for r in $RECEIVERS; do LRECEIVERS="$LRECEIVERS $r $r" done RECEIVER=`$DIALOG --stdout --aspect 15 --backtitle "$BACKTITLE" --title "Receiver" --menu "Select the receiver to use" 000 0 0 $LRECEIVERS` if grep -q "splash=silent" di/isolinux.cfg; then SPLASH_ARGUMENT="" SPLASH_OLD="silent" else SPLASH_ARGUMENT="--defaultno" SPLASH_OLD="0" fi $DIALOG --aspect 15 --backtitle "$BACKTITLE" --defaultno --title "Bootsplash" $SPLASH_ARGUMENT --yesno "\nDo you want to disable bootsplash ?\n" 0 0 && SPLASH="0" || SPLASH="silent" grubprefix=/boot/grub grubdir=di$grubprefix device_map=$grubdir/device.map rm -rf $grubdir mkdir -p $grubdir [ -f "di/GEEXBOX/usr/share/grub-i386-pc.tar.lzma" ] && tar xaf "di/GEEXBOX/usr/share/grub-i386-pc.tar.lzma" -C $grubdir [ -f "di/GEEXBOX/usr/share/grub-i386-pc.tar.gz" ] && tar xzf "di/GEEXBOX/usr/share/grub-i386-pc.tar.gz" -C $grubdir if [ -f "di/GEEXBOX/usr/share/grub-splash.xpm.gz" ]; then cp -f "di/GEEXBOX/usr/share/grub-splash.xpm.gz" $grubdir || exit 1 disable_splashimage= else disable_splashimage="#" fi splashimage="$grubprefix/grub-splash.xpm.gz" if [ $BOOTLOADER = syslinux ]; then cp "di/GEEXBOX/usr/share/ldlinux.sys" di sed -e "s/boot=cdrom/boot=${DEV#/dev/}/" -e "s/lang=.*/lang=$MENU_LANG/" -e "s/vga=$VESA_MODE_OLD/vga=$VESA_MODE/" -e "s/splash=$SPLASH_OLD/splash=$SPLASH/" -e "s/keymap=.*/keymap=$KEYMAP/" di/isolinux.cfg > di/syslinux.cfg rm di/isolinux.cfg elif [ $BOOTLOADER = grub ]; then cp $grubdir/stage2 $grubdir/stage2_single rm di/isolinux.cfg di/boot.msg di/help.msg di/splash.rle fi if [ $TYPE = HDD ]; then echo "quit" | $GRUB --batch --no-floppy --device-map=$device_map elif [ $TYPE = REMOVABLE ]; then echo "(hd0) ${DEV%%[0-9]*}" > $device_map fi rootdev=$(convert $DEV) if [ -z "$rootdev" ]; then $DIALOG --aspect 15 --backtitle "$BACKTITLE" --title "ERROR" --msgbox "\nCouldn't find my GRUB partition representation\n" 0 0 umount di rmdir di exit 1 fi if [ $BOOTLOADER = syslinux ]; then umount di $SYSLINUX "$DEV" mount -t $MKFS_TYPE "$DEV" di elif [ $BOOTLOADER = grub ]; then if [ $TYPE = HDD ]; then rootdev_single=$rootdev fake_device= elif [ $TYPE = REMOVABLE ]; then rootdev_single="(fd0)" fake_device="device $rootdev_single $DEV" fi $GRUB --batch --no-floppy --device-map=$device_map < $grubdir/single.lst < $grubdir/menu.lst <> $grubdir/menu.lst <> $grubdir/menu.lst <> $grubdir/menu.lst <> $grubdir/menu.lst < #include #include #include #include #include int main (int argc, char **argv) { int fd, capabilites; if (argc != 2) { fprintf (stderr, "usage: %s device\n", argv[0]); return 1; } fd = open (argv[1], O_RDONLY | O_NONBLOCK); if (fd < 0) { perror ("Can't open device"); return 2; } if ((capabilites=ioctl (fd, CDROM_GET_CAPABILITY)) < 0) { perror ("Can't get capabilities"); return 3; } if (capabilites & CDC_DVD) printf ("DVD\n"); else printf ("CD\n"); close (fd); return 0; } geexbox-1.1/packages/ivtv/0000755000175000017500000000000010641745505013663 5ustar benbengeexbox-1.1/packages/ivtv/build0000755000175000017500000000032110641745505014704 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain $SCRIPTS/build linux cd $BUILD/$1*/driver make KDIR=$(kernel_path) cp ivtv.h $SYSROOT_PREFIX/usr/include/linux cd ../i2c-drivers make KDIR=$(kernel_path) geexbox-1.1/packages/ivtv/config/0000755000175000017500000000000010641745505015130 5ustar benbengeexbox-1.1/packages/ivtv/config/packages.ini0000644000175000017500000000110710641745505017406 0ustar benben[Firmwares/IVTV] name=Firmware for the IVTV based cards. license=IVTV/license-end-user.txt desc=Firmware for the Hauppauge PVR 150/250/350/500 and clones. file=IVTV/v4l-cx2341x-dec.fw.bz2 md5=f25e62f2c62881c35968fda333abe3df file=IVTV/v4l-cx2341x-enc.fw.bz2 md5=815e717a37690dbbd6ae53719a881ae8 file=IVTV/v4l-cx2341x-init.mpg.bz2 md5=3b7dec419b8dbe79bc372e7ea73f0efd file=IVTV/v4l-cx25840.fw.bz2 md5=22350986a9f5565929878b31e5b32dc2 file=IVTV/v4l-pvrusb2-24xxx-01.fw.bz2 md5=11ba243bf699adc66e94a5cb687bbbff file=IVTV/v4l-pvrusb2-29xxx-01.fw.bz2 md5=9848b63056b4d188d1c42e9376fc8a6e geexbox-1.1/packages/ivtv/config/pvr0000644000175000017500000000160410641745505015663 0ustar benben# Below are the default GeeXboX input/encoding settings for the PVR cards # See MPlayer man pages for more details # Aspect ratio (0 for 1:1, 1 for 4:3, 2 for 16:9 and 3 for 2.21:1) PVR_ASPECT=1 # Encoding audio rate (32000, 44100 and 48000 Hz) PVR_AUDIO_RATE=48000 # MPEG audio layer encoding (1, 2, 3) PVR_AUDIO_LAYER=2 # Audio encoding bitrate in kbps PVR_AUDIO_BITRATE=384 # Audio encoding mode (stereo, joint_stereo, dual and mono) PVR_AUDIO_MODE=stereo # Average video bitrate encoding in Mbps PVR_VIDEO_BITRATE=6 # Peak video bitrate encoding in Mbps PVR_VIDEO_PEAK_BITRATE=9 # Video encoding mode (vbr, cbr) PVR_VIDEO_MODE=vbr # MPEG encoding format # ps: MPEG-2 Program Stream (default) # ts: MPEG-2 Transport Stream # mpeg1: MPEG-1 System Stream # vcd: Video CD compatible stream # svcd: Super Video CD compatible stream # dvd: DVD compatible stream PVR_VIDEO_FORMAT=ps geexbox-1.1/packages/ivtv/init.d/0000755000175000017500000000000010641745505015050 5ustar benbengeexbox-1.1/packages/ivtv/init.d/37_ivtv0000755000175000017500000000040710641745505016300 0ustar benben#!/bin/sh # # setup IVTV cards # # runlevels: geexbox, debug, install if grep -q -e '4444:0016' -e '4444:0803' /tmp/pci; then echo "### Setting up IVTV card ###" # Drivers for IVTV cards modprobe ivtv 2>&1 >/dev/null echo '' > /var/use_pvr fi exit 0 geexbox-1.1/packages/ivtv/install0000755000175000017500000000037110641745505015260 0ustar benben#!/bin/sh . config/options IVTV_DIR="`ls -d $INSTALL/lib/modules/*`/kernel/drivers/media/video/ivtv" mkdir -p $IVTV_DIR cp $BUILD/$1*/driver/ivtv.ko $IVTV_DIR cp $PACKAGES/$1/config/pvr $INSTALL/etc cp $BUILD/$1*/i2c-drivers/saa717x.ko $IVTV_DIR geexbox-1.1/packages/ivtv/need_unpack0000755000175000017500000000025710641745505016071 0ustar benben#!/bin/sh . config/options STAMP=$STAMPS/$1/unpack test $PACKAGES/linux/config/linux.$TARGET_ARCH.conf -nt $STAMP -o $PACKAGES/linux/url -nt $STAMP && rm -f $STAMP exit 0 geexbox-1.1/packages/ivtv/url0000644000175000017500000000007010641745505014405 0ustar benbenhttp://dl.ivtvdriver.org/ivtv/stable/ivtv-0.10.3.tar.gz geexbox-1.1/packages/jpeg/0000755000175000017500000000000010641745505013620 5ustar benbengeexbox-1.1/packages/jpeg/build0000755000175000017500000000031110641745505014640 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain cd $BUILD/$1* ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=$LIB_PREFIX make libjpeg.a make install-lib geexbox-1.1/packages/jpeg/url0000644000175000017500000000006210641745505014343 0ustar benbenftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz geexbox-1.1/packages/kaa/0000755000175000017500000000000010641745505013427 5ustar benbengeexbox-1.1/packages/kaa/build0000755000175000017500000000127110641745505014455 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain $SCRIPTS/build pygame $SCRIPTS/build imlib2 $SCRIPTS/build GLib $SCRIPTS/build libxml2 HOST_PYTHON="`ls -d $ROOT/$BUILD/Python*/objdir/buildpython`/python" PYTHON_DIR=`ls -d $ROOT/$BUILD/Python*` PYGAME_INC=`ls -d $LIB_PREFIX/include/python*/pygame` export PYTHONPATH="`ls -d $LIB_PREFIX/lib/python*/site-packages`" export CFLAGS="$CFLAGS -I$PYGAME_INC -I$PYTHON_DIR/Include -I$PYTHON_DIR/objdir" export PATH="$LIB_PREFIX/bin:$PATH" export LDSHARED="$CC -shared" cd $BUILD/$1* $HOST_PYTHON setup.py install --prefix=$LIB_PREFIX for P in `find "$PYTHONPATH/kaa" -name '*.pyc' -o -name '*.so' -o -print`; do [ -f "$P" ] && rm -f "$P" done geexbox-1.1/packages/kaa/install0000755000175000017500000000034710641745505015027 0ustar benben#!/bin/sh . config/options $SCRIPTS/install GLib $SCRIPTS/install libxml2 mkdir -p `ls -d $INSTALL/usr/lib/python*`/site-packages/kaa cp -rf $LIB_PREFIX/lib/python*/site-packages/kaa/* $INSTALL/usr/lib/python*/site-packages/kaa geexbox-1.1/packages/kaa/patches/0000755000175000017500000000000010641745505015056 5ustar benbengeexbox-1.1/packages/kaa/patches/10_wip_modules.diff0000644000175000017500000000072510641745505020543 0ustar benbendiff -Naur kaa-20061116.orig/setup.py kaa-20061116/setup.py --- kaa-20061116.orig/setup.py 2006-11-25 20:49:37.000000000 +0100 +++ kaa-20061116/setup.py 2006-11-25 20:50:27.000000000 +0100 @@ -32,7 +32,7 @@ import distutils.core submodules = [ 'base', 'imlib2', 'display', 'mevas', 'epg', 'record', - 'metadata', 'evas', 'canvas', 'xine', 'cherrypy', + 'metadata', 'cherrypy', 'beacon', 'popcorn' ] for a in sys.argv: geexbox-1.1/packages/kaa/patches/30_display_no_x_build.diff0000644000175000017500000000176310641745505022070 0ustar benbendiff -Naur kaa-r2231.orig/display/setup.py kaa-r2231/display/setup.py --- kaa-r2231.orig/display/setup.py 2006-12-11 03:44:28.000000000 +0100 +++ kaa-r2231/display/setup.py 2006-12-14 22:44:39.000000000 +0100 @@ -45,13 +45,7 @@ # config file config = ConfigFile('src/config.h') -check_library('X11', [''], '') check_library('imlib2', '1.1.1') -evas = check_library('evas', '0.9.9.010') -check_library('directfb', '0.9.20') - -print 'checking for pygame', '...', -sys.__stdout__.flush() try: import pygame @@ -119,12 +113,7 @@ fb = Extension('kaa.display._FBmodule', [ 'src/fb.c', 'src/common.c']) fb.add_library('imlib2') - if evas and evas.compile(['', '']): - fb.add_library('evas') - config.define('ENABLE_ENGINE_FB') - print "+ Framebuffer (imlib2, evas)" - else: - print "+ Framebuffer (imlib2)" + print "+ Framebuffer (imlib2)" modules.append(fb) else: print "- Framebuffer" geexbox-1.1/packages/kaa/patches/40_player_no_x11.diff0000644000175000017500000000145410641745505020700 0ustar benbendiff -Naur kaa-r2231.orig/popcorn/src/backends/mplayer/player.py kaa-r2231/popcorn/src/backends/mplayer/player.py --- kaa-r2231.orig/popcorn/src/backends/mplayer/player.py 2006-12-08 16:12:01.000000000 +0100 +++ kaa-r2231/popcorn/src/backends/mplayer/player.py 2006-12-29 15:11:51.000000000 +0100 @@ -507,14 +507,6 @@ if filters: args.extend(("-vf", ",".join(filters))) - if isinstance(self._window, kaa.display.X11Window): - args.extend(( - "-wid", hex(self._window.get_id()), - "-display", self._window.get_display().get_string())) - else: - # no window == no video out - args.extend(('-vo', 'null')) - if self._config.audio.passthrough: args += [ '-ac', 'hwac3,hwdts,' ] else: geexbox-1.1/packages/kaa/patches/40_pygame.diff0000644000175000017500000000100710641745505017473 0ustar benben--- a/display/setup.py 2006-12-08 16:44:11.000000000 +0100 +++ b/display/setup.py 2006-12-08 16:44:17.000000000 +0100 @@ -51,11 +51,10 @@ sys.__stdout__.flush() try: - import pygame + #import pygame print 'ok' print 'checking for pygame header files', '...', - inc = re.sub("/(lib|lib64)/", "/include/", - pygame.__path__[0]).replace("site-packages/", "") + inc = os.environ['PYTHONPATH'].replace("site-packages/", "") if not os.path.isdir(inc): raise ImportError geexbox-1.1/packages/kaa/patches/42_mplayer_no_param_force.diff0000644000175000017500000000512610641745505022724 0ustar benbendiff -Naur kaa-r2286.orig/popcorn/src/backends/mplayer/player.py kaa-r2286/popcorn/src/backends/mplayer/player.py --- kaa-r2286.orig/popcorn/src/backends/mplayer/player.py 2006-12-29 15:44:03.000000000 +0100 +++ kaa-r2286/popcorn/src/backends/mplayer/player.py 2006-12-29 15:47:08.000000000 +0100 @@ -369,7 +369,7 @@ # open the stream and provide information about it. After that, the # caller can still change stuff before calling play. Mplayer doesn't # work that way so we have to run mplayer with -identify first. - args = "-nolirc -nojoystick -nomouseinput -identify " +\ + args = "-nolirc -nojoystick -identify " +\ "-vo null -ao null -frames 0" ident = kaa.notifier.Process(self._mp_cmd) ident.start(args.split(' ') + [ self._file ]) @@ -500,8 +500,8 @@ if 'overlay' in self._mp_info['video_filters']: filters += ["overlay=%s" % self._osd_shmkey] - args = [ "-v", "-slave", "-osdlevel", "0", "-nolirc", "-nojoystick", \ - "-nomouseinput", "-nodouble", "-fixed-vo", "-identify", \ + args = [ "-v", "-slave", "-nolirc", "-nojoystick", \ + "-nodouble", "-fixed-vo", "-identify", \ "-framedrop" ] if filters: @@ -515,28 +515,6 @@ # no window == no video out args.extend(('-vo', 'null')) - if self._config.audio.passthrough: - args += [ '-ac', 'hwac3,hwdts,' ] - else: - args += [ '-channels', str(self._config.audio.channels) ] - - args += [ '-ao', self._config.audio.driver ] - if self._config.audio.driver == 'alsa': - args[-1] += ":noblock" - n_channels = self._streaminfo.get('channels') - if self._streaminfo.get('acodec') in ('a52', 'hwac3', 'ffdts', 'hwdts'): - device = self._config.audio.device.passthrough - elif n_channels == 1: - device = self._config.audio.device.mono - elif n_channels <= 4: - device = self._config.audio.device.surround40 - elif n_channels <= 6: - device = self._config.audio.device.surround51 - else: - device = self._config.audio.device.stereo - if device != '': - args[-1] += ':device=' + device.replace(':', '=') - # There is no way to make MPlayer ignore keys from the X11 window. So # this hack makes a temp input file that maps all keys to a dummy (and # non-existent) command which causes MPlayer not to react to any key geexbox-1.1/packages/kaa/patches/43_videothumb-opts.diff0000644000175000017500000000135710641745505021355 0ustar benben--- kaa-r2307/beacon/src/server/videothumb.py.orig 2007-01-01 19:42:38.000000000 +0100 +++ kaa-r2307/beacon/src/server/videothumb.py 2007-01-01 19:42:44.000000000 +0100 @@ -65,8 +65,8 @@ self.notify_client = thumbnailer.notify_client self.create_failed = thumbnailer.create_failed - self.child = kaa.notifier.Process(['mplayer', '-nosound', '-vo', - 'png:z=2', '-frames', '10', + self.child = kaa.notifier.Process(['mplayer', '-nosound', '-nocache', '-osdlevel', '0', + '-vo', 'png:z=2', '-frames', '1', '-zoom', '-ss' ]) self.child.signals['completed'].connect(self._completed) geexbox-1.1/packages/kaa/patches/50_test_pyo_pyc.diff0000644000175000017500000001005310641745505020734 0ustar benbenIndex: popcorn/src/backends/xine/player.py =================================================================== --- a/popcorn/src/backends/xine/player.py (révision 2340) +++ b/popcorn/src/backends/xine/player.py (copie de travail) @@ -67,6 +67,10 @@ def _child_spawn(self): # Launch self (-u is unbuffered stdout) script = os.path.join(os.path.dirname(__file__), 'main.py') + if os.path.isfile(script + 'o'): + script = script + 'o' + elif os.path.isfile(script + 'c'): + script = script + 'c' self._xine = ChildProcess(self, script) self._xine.signals["completed"].connect_weak(self._child_exited) self._xine.set_stop_command(kaa.notifier.WeakCallback(self._xine.die)) Index: popcorn/src/backends/gstreamer/player.py =================================================================== --- a/popcorn/src/backends/gstreamer/player.py (révision 2340) +++ b/popcorn/src/backends/gstreamer/player.py (copie de travail) @@ -61,6 +61,10 @@ self._mrl = media.url if not self._gst: script = os.path.join(os.path.dirname(__file__), 'main.py') + if os.path.isfile(script + 'o'): + script = script + 'o' + elif os.path.isfile(script + 'c'): + script = script + 'c' self._gst = ChildProcess(self, script) self._gst.signals["completed"].connect_weak(self._child_exited) self._gst.set_stop_command(WeakCallback(self._gst.die)) Index: metadata/src/disc/CDDB.py =================================================================== --- a/metadata/src/disc/CDDB.py (révision 2340) +++ b/metadata/src/disc/CDDB.py (copie de travail) @@ -13,7 +13,7 @@ import urllib, string, socket, os, struct, re -name = 'CDDB.py' +name = 'CDDB.pyc' version = 1.3 if os.environ.has_key('EMAIL'): Index: beacon/src/server/parser.py =================================================================== --- a/beacon/src/server/parser.py (révision 2340) +++ b/beacon/src/server/parser.py (copie de travail) @@ -68,7 +68,10 @@ """ plugindir = os.path.join(os.path.dirname(__file__), 'plugins') for plugin in os.listdir(plugindir): - if not plugin.endswith('.py') or plugin == '__init__.py': + if (not plugin.endswith('.pyo') and not plugin.endswith('.pyc') and not plugin.endswith('.py')) \ + or plugin == '__init__.pyo' \ + or plugin == '__init__.pyc' \ + or plugin == '__init__.py': continue exec('import plugin.%s' % plugin) plugin.create(db, register) Index: cherrypy/src/controller.py =================================================================== --- a/cherrypy/src/controller.py (révision 2340) +++ b/cherrypy/src/controller.py (copie de travail) @@ -44,7 +44,7 @@ # load template engines for f in os.listdir(os.path.dirname(__file__)): - if not f.startswith('templ_') or not f.endswith('.py'): + if not f.startswith('templ_') or (not f.endswith('.pyo') and not f.endswith('.pyc') and not f.endswith('.py')): # this is no template engine continue try: Index: epg/src/sources/__init__.py =================================================================== --- a/epg/src/sources/__init__.py (révision 2340) +++ b/epg/src/sources/__init__.py (copie de travail) @@ -35,10 +35,19 @@ sources = {} for f in os.listdir(os.path.dirname(__file__)): - if f.startswith('_') or f.startswith('config_') or not f.endswith('.py'): + if f.startswith('_') or f.startswith('config_') \ + or (not f.endswith('.pyo') and not f.endswith('.pyc') and not f.endswith('.py')): continue try: - exec('import %s as s' % f[:-3]) + if f.endswith('.pyo') \ + or f.endswith('.pyc'): + exec('import %s as s' % f[:-4]) + elif f.endswith('.py'): + exec('import %s as s' % f[:-3]) except ImportError: continue - sources[f[:-3]] = s + if f.endswith('.pyo') \ + or f.endswith('.pyc'): + sources[f[:-4]] = s + elif f.endswith('.py'): + sources[f[:-3]] = s geexbox-1.1/packages/kaa/url0000644000175000017500000000003710641745505014154 0ustar benbenGEEXBOX_SRCS/kaa-r2307.tar.bz2 geexbox-1.1/packages/lcd4linux/0000755000175000017500000000000010641745505014601 5ustar benbengeexbox-1.1/packages/lcd4linux/arch0000644000175000017500000000000510641745505015434 0ustar benbeni386 geexbox-1.1/packages/lcd4linux/build0000755000175000017500000000035310641745505015627 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain cd $BUILD/$1* ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=$LIB_PREFIX \ --without-x \ --without-ncurses \ make geexbox-1.1/packages/lcd4linux/config/0000755000175000017500000000000010641745505016046 5ustar benbengeexbox-1.1/packages/lcd4linux/config/lcd4linux.conf0000644000175000017500000001071110641745505020623 0ustar benbenDisplay BWCT { Driver 'BWCT' Size 'LCD_WIDTHxLCD_HEIGHT' Contrast 30 asc255bug 1 Icons 1 } Display CF631 { Driver 'Crystalfontz' Model '631' Port '/dev/tts/USB0' Speed 115200 Contrast 95 Backlight 255 Icons 1 } Display CF632 { Driver 'Crystalfontz' Model '632' Port '/dev/tts/0' Speed 19200 Icons 1 } Display CF633 { Icons 4 Driver 'Crystalfontz' Model '633' Port '/dev/tts/0' Speed 19200 Contrast 16 Backlight 50 } Display CT20x4 { Driver 'Beckmann+Egle' Model 'CT20x4' Port '/dev/tts/0' Size 'LCD_WIDTHxLCD_HEIGHT' # Contrast 7 # Backlight 1 Icons 1 } Display CW12232 { Driver 'Cwlinux' Model 'CW12232' Port '/dev/usb/tts/0' Speed 19200 Brightness 2 Icons 1 } # generic HD44780 display (LCD4Linux wiring) Display HD44780-generic { Driver 'HD44780' Model 'generic' Port '/dev/parport0' Size 'LCD_WIDTHxLCD_HEIGHT' asc255bug 0 Wire { RW 'GND' RS 'AUTOFD' ENABLE 'STROBE' ENABLE2 'GND' GPO 'INIT' } } Display HD44780-I2C { Driver 'HD44780' Model 'generic' Bus 'i2c' Port '/dev/i2c-0' Device '70' Bits '4' Size 'LCD_WIDTHxLCD_HEIGHT' asc255bug 0 Icons 1 Wire { RW 'DB5' RS 'DB4' ENABLE 'DB6' GPO 'GND' } } # HD44780 display from www.kernelconcepts.de Display HD44780-kernelconcepts { Driver 'HD44780' Model 'HD66712' Port '/dev/parport0' Size 'LCD_WIDTHxLCD_HEIGHT' Wire { RW 'AUTOFD' RS 'INIT' ENABLE 'STROBE' ENABLE2 'GND' GPO 'GND' } } # generic HD44780 display (WinAmp wiring) Display HD44780-winamp { Driver 'HD44780' Model 'generic' Port '/dev/parport0' Size 'LCD_WIDTHxLCD_HEIGHT' Wire { RW 'AUTOFD' RS 'INIT' ENABLE 'STROBE' ENABLE2 'GND' GPO 'GND' } } Display LCDTerm { Driver 'LCDTerm Port '/dev/tts/0' Speed 19200 Size 'LCD_WIDTHxLCD_HEIGHT' Icons 1 } Display LCM-162 { Driver 'HD44780' Model 'LCM-162' # Bus 'parport' Port '/dev/parport0' Size 'LCD_WIDTHxLCD_HEIGHT' asc255bug 0 Icons 1 } Display LK204 { Driver 'MatrixOrbital' Model 'LK204-24-USB' Port '/dev/usb/tts/0' # Port '/dev/tts/0' Speed 19200 Contrast 256/2 } Display M50530-24x8 { Driver 'M50530' Port '/dev/parport0' # Port '0x378' Size 'LCD_WIDTHxLCD_HEIGHT' Font '5x7' Duty 2 Wire.EX 'STROBE' Wire.IOC1 'SLCTIN' Wire.IOC2 'AUTOFD' Wire.GPO 'INIT' } Display MI240 { Driver 'MilfordInstruments' Model 'MI240' Port '/dev/tts/0' Speed 19200 } Display SC1602D { Driver 'HD44780' Port '/dev/parport0' Bits '8' Size 'LCD_WIDTHxLCD_HEIGHT' asc255bug 0 Icons 1 Wire { RW 'GND' RS 'AUTOFD' ENABLE 'STROBE' GPO 'INIT' } } Display SerDispLib { Driver 'serdisplib' Port 'PAR:/dev/parport0' #Port '/dev/tts/0' Model 'OPTREX323' Options '' } Display SimpleLCD { Driver 'SimpleLCD' Port '/dev/tts/0' Speed 1200 Options 0 Size 'LCD_WIDTHxLCD_HEIGHT' } Display T6963-240x64 { Driver 'T6963' Port '/dev/parports/0' Size '240x64' Wire.CE 'STROBE' Wire.CD 'SLCTIN' Wire.RD 'AUTOFD' Wire.WR 'INIT' } Display Trefon { Driver 'TREFON' Size 'LCD_WIDTHxLCD_HEIGHT' Backlight 1 Icons 1 } Display USBLCD { Driver 'USBLCD' # Port '/dev/lcd0' Port 'libusb' Size 'LCD_WIDTHxLCD_HEIGHT' asc255bug 1 Icons 1 } Variables { tick 500 } Widget MPlayerFileName { class 'Text' expression mplayer('ID_FILENAME') width LCD_WIDTH align 'M' speed 400 update tick } Widget MPlayerTimeBar { class 'Bar' expression mplayer('ID_VIDEO_PERCENT') length LCD_WIDTH max 100 direction 'E' update 100 } Widget MPlayerTimeElapsed { class 'Text' expression mplayer('ID_TIME_ELAPSED') width LCD_WIDTH align 'R' update tick } Widget MPlayerTimeTotal { class 'Text' expression mplayer('ID_LENGTH') width LCD_WIDTH align 'R' update tick } Layout MPlayer { Row1 { Col1 'MPlayerFileName' } Row2 { Col1 'MPlayerTimeBar' } } Layout MPlayerTime { Row1 { Col1 'MPlayerTimeElapsed' } Row2 { Col1 'MPlayerTimeTotal' } } Layout 'MPlayer' geexbox-1.1/packages/lcd4linux/init.d/0000755000175000017500000000000010641745505015766 5ustar benbengeexbox-1.1/packages/lcd4linux/init.d/11_lcddisplay0000755000175000017500000000061310641745505020345 0ustar benben#!/bin/sh # # start lcd display # # runlevels: geexbox, debug # get options test -f /etc/lcddisplay || exit 1 . /etc/lcddisplay CONFIG=/etc/lcd4linux.conf if test "$LCD_ENABLED" = "yes" -a -f $CONFIG; then echo "### Starting LCD Display ###" sed -i -e "s/LCD_WIDTH/$LCD_WIDTH/g" -e "s/LCD_HEIGHT/$LCD_HEIGHT/g" $CONFIG /usr/bin/lcd4linux -c "Display='$LCD_MODEL'" -f $CONFIG fi exit 0 geexbox-1.1/packages/lcd4linux/install0000755000175000017500000000043610641745505016200 0ustar benben#!/bin/sh . config/options mkdir -p $INSTALL/etc mkdir -p $INSTALL/usr/bin cp $BUILD/$1*/$1 $INSTALL/usr/bin cp $PACKAGES/$1/config/$1.conf $INSTALL/etc/ cat <$INSTALL/etc/lcddisplay LCD_ENABLED=$LCD_ENABLED LCD_MODEL=$LCD_MODEL LCD_WIDTH=$LCD_WIDTH LCD_HEIGHT=$LCD_HEIGHT EOF geexbox-1.1/packages/lcd4linux/patches/0000755000175000017500000000000010641745505016230 5ustar benbengeexbox-1.1/packages/lcd4linux/patches/10_access_error.diff0000644000175000017500000000100710641745505022032 0ustar benbendiff -Naur lcd4linux-0.10.1-RC1.orig/cfg.c lcd4linux-0.10.1-RC1/cfg.c --- lcd4linux-0.10.1-RC1.orig/cfg.c 2007-03-23 11:16:58.000000000 +0100 +++ lcd4linux-0.10.1-RC1/cfg.c 2007-03-23 11:18:07.000000000 +0100 @@ -453,6 +453,7 @@ return 0; error = 0; +#if 0 if (!S_ISREG(stbuf.st_mode)) { error("security error: '%s' is not a regular file", file); error = -1; @@ -465,6 +466,7 @@ error("security error: group or other have access to '%s'", file); error = -1; } +#endif return error; } geexbox-1.1/packages/lcd4linux/patches/30_plugin.diff0000644000175000017500000000545010641745505020666 0ustar benbendiff -Naur lcd4linux-0.10.1-RC1.orig/config.h.in lcd4linux-0.10.1-RC1/config.h.in --- lcd4linux-0.10.1-RC1.orig/config.h.in 2007-03-23 11:25:01.000000000 +0100 +++ lcd4linux-0.10.1-RC1/config.h.in 2007-03-23 11:45:59.000000000 +0100 @@ -314,6 +314,9 @@ /* mpd plugin */ #undef PLUGIN_MPD +/* mplayer plugin */ +#undef PLUGIN_MPLAYER + /* mysql plugin */ #undef PLUGIN_MYSQL diff -Naur lcd4linux-0.10.1-RC1.orig/configure lcd4linux-0.10.1-RC1/configure --- lcd4linux-0.10.1-RC1.orig/configure 2007-03-23 11:25:01.000000000 +0100 +++ lcd4linux-0.10.1-RC1/configure 2007-03-23 11:31:18.000000000 +0100 @@ -7964,6 +7964,7 @@ PLUGIN_LOADAVG="yes" PLUGIN_MEMINFO="yes" PLUGIN_MPD="yes" + PLUGIN_MPLAYER="yes" PLUGIN_MYSQL="yes" PLUGIN_NETDEV="yes" PLUGIN_POP3="yes" @@ -8020,6 +8021,9 @@ mpd) PLUGIN_MPD=$val ;; + mplayer) + PLUGIN_MPLAYER=$val + ;; mysql) PLUGIN_MYSQL=$val ;; @@ -9614,6 +9618,14 @@ echo "$as_me: WARNING: libmpd/libmpd.h header not found: mpd plugin disabled" >&2;} fi fi +if test "$PLUGIN_MPLAYER" = "yes"; then + PLUGINS="$PLUGINS plugin_mplayer.o" + +cat >>confdefs.h <<\_ACEOF +#define PLUGIN_MPLAYER 1 +_ACEOF + +fi if test "$PLUGIN_MYSQL" = "yes"; then for ac_header in mysql/mysql.h diff -Naur lcd4linux-0.10.1-RC1.orig/Makefile.am lcd4linux-0.10.1-RC1/Makefile.am --- lcd4linux-0.10.1-RC1.orig/Makefile.am 2007-03-23 11:25:01.000000000 +0100 +++ lcd4linux-0.10.1-RC1/Makefile.am 2007-03-23 11:47:52.000000000 +0100 @@ -116,6 +116,7 @@ plugin_loadavg.c \ plugin_meminfo.c \ plugin_mpd.c \ +plugin_mplayer.c \ plugin_mysql.c \ plugin_netdev.c \ plugin_pop3.c \ @@ -147,6 +148,7 @@ NEWS \ TODO \ README \ +plugin_mplayer.c \ plugin_sample.c diff -Naur lcd4linux-0.10.1-RC1.orig/plugin.c lcd4linux-0.10.1-RC1/plugin.c --- lcd4linux-0.10.1-RC1.orig/plugin.c 2007-03-23 11:25:01.000000000 +0100 +++ lcd4linux-0.10.1-RC1/plugin.c 2007-03-23 11:32:47.000000000 +0100 @@ -84,6 +84,8 @@ void plugin_exit_meminfo(void); int plugin_init_mpd(void); void plugin_exit_mpd(void); +int plugin_init_mplayer(void); +void plugin_exit_mplayer(void); int plugin_init_mysql(void); void plugin_exit_mysql(void); int plugin_init_netdev(void); @@ -162,6 +164,9 @@ #ifdef PLUGIN_MPD plugin_init_mpd(); #endif +#ifdef PLUGIN_MPLAYER + plugin_init_mplayer(); +#endif #ifdef PLUGIN_MYSQL plugin_init_mysql(); @@ -251,6 +256,9 @@ #ifdef PLUGIN_MPD plugin_exit_mpd(); #endif +#ifdef PLUGIN_MPLAYER + plugin_exit_mplayer(); +#endif #ifdef PLUGIN_MYSQL plugin_exit_mysql(); #endif geexbox-1.1/packages/lcd4linux/patches/40_greetz.diff0000644000175000017500000000132610641745505020667 0ustar benbendiff -Naur lcd4linux-0.10.1-RC1.orig/drv_generic_text.c lcd4linux-0.10.1-RC1/drv_generic_text.c --- lcd4linux-0.10.1-RC1.orig/drv_generic_text.c 2007-03-23 11:51:24.000000000 +0100 +++ lcd4linux-0.10.1-RC1/drv_generic_text.c 2007-03-23 11:51:57.000000000 +0100 @@ -320,16 +320,16 @@ int i; int flag = 0; - char *line1[] = { "* LCD4Linux " VERSION " *", - "LCD4Linux " VERSION, - "* LCD4Linux *", - "LCD4Linux", - "L4Linux", + char *line1[] = { "GeeXboX OMC Welcome", + "GeeXboX Welcome", + "GeeXboX OMC", + "GeeXboX", + "GB", NULL }; - char *line2[] = { "http://lcd4linux.bulix.org", - "lcd4linux.bulix.org", + char *line2[] = { "http://www.geexbox.org", + "www.geexbox.org", NULL }; geexbox-1.1/packages/lcd4linux/sources/0000755000175000017500000000000010641745505016264 5ustar benbengeexbox-1.1/packages/lcd4linux/sources/plugin_mplayer.c0000644000175000017500000000556610641745505021473 0ustar benben/* * MPlayer-Plugin for LCD4Linux, based on XMMS-Plugin by Markus Keil * Copyright (C) 2006-2007 Guillaume LECERF * Copyright (C) 2003 Markus Keil */ /* * exported functions: * * int plugin_init_mplayer (void) * adds parser for /tmp/mp_streaminfo * */ /* * The Argument 'arg1' must be one of these Things (without quotes): * * 'ID_FILENAME' * 'ID_DEMUXER' * 'ID_LENGTH' * * For video stream : * 'ID_VIDEO_FORMAT' * 'ID_VIDEO_BITRATE' * 'ID_VIDEO_WIDTH' * 'ID_VIDEO_HEIGHT' * 'ID_VIDEO_FPS' * 'ID_VIDEO_ASPECT' * * For audio stream * 'ID_AUDIO_FORMAT' * 'ID_AUDIO_BITRATE' * 'ID_AUDIO_RATE' * 'ID_AUDIO_NCH' * 'ID_AUDIO_CODEC' * * MP3 Tags if available * 'ID_AUDIO_TITLE' * 'ID_AUDIO_ARTIST' * 'ID_AUDIO_ALBUM' * 'ID_AUDIO_YEAR' * 'ID_AUDIO_COMMENT' * 'ID_AUDIO_TRACK' * 'ID_AUDIO_GENRE' * * These arguments are case-sensitive */ #include "config.h" #include #include #include #include #include #include "hash.h" #include "debug.h" #include "plugin.h" const char STREAMINFO_FIFO[] = "/tmp/mp_streaminfo"; static HASH mplayer; static int parse_mplayer_info(const char *tmpfile) { int age; FILE *streaminfo_fifo; char line[200]; /* reread every 100msec only */ age = hash_age(&mplayer, NULL); if (age >= 0 && age <= 100) return 0; /* Open Filestream for tmpfile */ streaminfo_fifo = fopen(tmpfile, "r"); /* Check for File */ if (!streaminfo_fifo) return 0; /* Read lines from the fifo */ while (fgets(line, sizeof(line), streaminfo_fifo)) { char *c, *key, *val; c = strchr(line, '='); if (c == NULL) continue; key = line; val = c + 1; /* strip leading blanks from key */ while (isspace(*key)) *key++ = '\0'; /* strip trailing blanks from key */ do *c = '\0'; while (isspace(*--c)); /* strip leading blanks from value */ while (isspace(*val)) *val++ = '\0'; /* strip trailing blanks from value */ for (c = val; *c != '\0'; c++); while (isspace(*--c)) *c = '\0'; hash_put(&mplayer, key, val); } fclose(streaminfo_fifo); return 0; } static void my_mplayer(RESULT * result, RESULT * arg1) { char *key, *val; if (parse_mplayer_info(STREAMINFO_FIFO) < 0) { SetResult(&result, R_STRING, ""); return; } key = R2S(arg1); val = hash_get(&mplayer, key, NULL); if (val == NULL) val = ""; SetResult(&result, R_STRING, val); } int plugin_init_mplayer(void) { hash_create(&mplayer); /* register mplayer info */ AddFunction("mplayer", 1, my_mplayer); return 0; } void plugin_exit_mplayer(void) { hash_destroy(&mplayer); } geexbox-1.1/packages/lcd4linux/url0000644000175000017500000000005110641745505015322 0ustar benbenGEEXBOX_SRCS/lcd4linux-0.10.1-RC2.tar.gz geexbox-1.1/packages/libdvdnav/0000755000175000017500000000000010641745505014644 5ustar benbengeexbox-1.1/packages/libdvdnav/build0000755000175000017500000000037310641745505015674 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain cd $BUILD/$1* ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=$LIB_PREFIX \ --enable-static \ --disable-shared \ make make install geexbox-1.1/packages/libdvdnav/url0000644000175000017500000000004410641745505015367 0ustar benbenGEEXBOX_SRCS/libdvdnav-r938.tar.bz2 geexbox-1.1/packages/libexif/0000755000175000017500000000000010641745505014315 5ustar benbengeexbox-1.1/packages/libexif/build0000755000175000017500000000035510641745505015345 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain cd $BUILD/$1* ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=$LIB_PREFIX \ --disable-nls make -C libexif make -C libexif install geexbox-1.1/packages/libexif/url0000644000175000017500000000010110641745505015032 0ustar benbenhttp://prdownloads.sourceforge.net/libexif/libexif-0.5.12.tar.gz geexbox-1.1/packages/libiconv/0000755000175000017500000000000010641745505014500 5ustar benbengeexbox-1.1/packages/libiconv/build0000755000175000017500000000054610641745505015532 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain $SCRIPTS/build gettext cd $BUILD/$1* ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=`ls -d $ROOT/$BUILD/$1*`/objdir \ --enable-static \ --disable-shared \ --disable-nls \ --enable-extra-encodings make make install geexbox-1.1/packages/libiconv/url0000644000175000017500000000010210641745505015216 0ustar benbenhttp://mirrors.ircam.fr/pub/gnu/gnu/libiconv/libiconv-1.11.tar.gz geexbox-1.1/packages/libirman/0000755000175000017500000000000010641745505014470 5ustar benbengeexbox-1.1/packages/libirman/build0000755000175000017500000000050110641745505015511 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain cd $BUILD/$1* ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=$LIB_PREFIX \ --sysconfdir=/etc make libirman mkdir -p $LIB_PREFIX/lib $LIB_PREFIX/include cp irman.h $LIB_PREFIX/include cp libirman.a $LIB_PREFIX/lib geexbox-1.1/packages/libirman/url0000644000175000017500000000010510641745505015211 0ustar benbenhttp://lirc.sourceforge.net/software/snapshots/libirman-0.4.4.tar.gz geexbox-1.1/packages/libpcd/0000755000175000017500000000000010641745505014130 5ustar benbengeexbox-1.1/packages/libpcd/build0000755000175000017500000000041010641745505015150 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain make -C $BUILD/$1* \ CC=$CC \ AR=$AR \ RANLIB=$RANLIB \ libpcd.a mkdir -p $LIB_PREFIX/lib $LIB_PREFIX/include cp $BUILD/$1*/pcd.h $LIB_PREFIX/include cp $BUILD/$1*/libpcd.a $LIB_PREFIX/lib geexbox-1.1/packages/libpcd/patches/0000755000175000017500000000000010641745505015557 5ustar benbengeexbox-1.1/packages/libpcd/patches/10_crosscompile.diff0000644000175000017500000000077010641745505021417 0ustar benben--- libpcd-1.0.1.orig/GNUmakefile 2003-07-22 12:52:46.000000000 +0300 +++ libpcd-1.0.1/GNUmakefile 2004-12-03 12:17:32.000000000 +0200 @@ -6,6 +6,8 @@ libdir := $(DESTDIR)$(prefix)/lib CC := gcc +AR := ar +RANLIB := ranlib WARN := -Wall -Wmissing-prototypes -Wstrict-prototypes -Wpointer-arith CFLAGS ?= -g -O2 CFLAGS += $(WARN) @@ -30,8 +32,8 @@ libpcd.a: $(STATIC) rm -f $@ - ar rc $@ $(STATIC) - ranlib $@ + $(AR) rc $@ $(STATIC) + $(RANLIB) $@ libpcd.so.$(MINOR): $(SHARED) rm -f $@ geexbox-1.1/packages/libpcd/url0000644000175000017500000000007210641745505014654 0ustar benbenhttp://dl.bytesex.org/releases/libpcd/libpcd_1.0.1.tar.gz geexbox-1.1/packages/libpng/0000755000175000017500000000000010641745505014146 5ustar benbengeexbox-1.1/packages/libpng/build0000755000175000017500000000044610641745505015177 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain $SCRIPTS/build zlib cd $BUILD/$1* ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=$LIB_PREFIX \ --disable-static \ --enable-shared \ --without-x make make install geexbox-1.1/packages/libpng/install0000755000175000017500000000015510641745505015543 0ustar benben#!/bin/sh . config/options mkdir -p $INSTALL/usr/lib cp -PR $BUILD/$1*/.libs/libpng12.so* $INSTALL/usr/lib geexbox-1.1/packages/libpng/url0000644000175000017500000000007710641745505014677 0ustar benbenhttp://prdownloads.sourceforge.net/libpng/libpng-1.2.14.tar.gz geexbox-1.1/packages/libungif/0000755000175000017500000000000010641745505014472 5ustar benbengeexbox-1.1/packages/libungif/build0000755000175000017500000000040210641745505015513 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain cd $BUILD/$1* ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=$LIB_PREFIX \ --disable-shared \ --without-x make -C lib make -C lib install geexbox-1.1/packages/libungif/url0000644000175000017500000000010310641745505015211 0ustar benbenhttp://prdownloads.sourceforge.net/libungif/libungif-4.1.4.tar.bz2 geexbox-1.1/packages/libupnp/0000755000175000017500000000000010641745505014344 5ustar benbengeexbox-1.1/packages/libupnp/build0000755000175000017500000000062510641745505015374 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain cd $BUILD/$1* ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=$LIB_PREFIX \ --disable-shared \ --enable-client \ --disable-device \ --disable-webserver \ --disable-samples \ --without-docdir \ --enable-tools make make install geexbox-1.1/packages/libupnp/patches/0000755000175000017500000000000010641745505015773 5ustar benbengeexbox-1.1/packages/libupnp/patches/01_ContentTypeHeader.diff0000644000175000017500000000131010641745505022505 0ustar benben--- libupnp-1.4.1.old/upnp/src/soap/soap_device.c +++ libupnp-1.4.1/upnp/src/soap/soap_device.c @@ -69,9 +69,6 @@ static const char *Soap_Action_Failed = "Action Failed"; static const char *Soap_Invalid_Var = "Invalid Var"; -const char *ContentTypeHeader = - "CONTENT-TYPE: text/xml; charset=\"utf-8\"\r\n"; - /**************************************************************************** * Function : get_request_type * @@ -1074,3 +1071,8 @@ #endif // EXCLUDE_SOAP #endif // INCLUDE_DEVICE_APIS + +#if (!defined INCLUDE_DEVICE_APIS && defined INCLUDE_CLIENT_APIS) || defined INCLUDE_DEVICE_APIS + const char *ContentTypeHeader = + "CONTENT-TYPE: text/xml; charset=\"utf-8\"\r\n"; +#endif geexbox-1.1/packages/libupnp/url0000644000175000017500000000007710641745505015075 0ustar benbenhttp://prdownloads.sourceforge.net/pupnp/libupnp-1.4.6.tar.bz2 geexbox-1.1/packages/libxml2/0000755000175000017500000000000010641745505014244 5ustar benbengeexbox-1.1/packages/libxml2/build0000755000175000017500000000147610641745505015301 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain $SCRIPTS/build zlib $SCRIPTS/build Python HOST_PYTHON="`ls -d $ROOT/$BUILD/Python*/objdir/buildpython`/python" PYTHON_DIR=`ls -d $ROOT/$BUILD/Python*` export CFLAGS="$CFLAGS -I$PYTHON_DIR/Include -I$PYTHON_DIR/objdir" export LDSHARED="$CC -shared" export SYSROOT_PREFIX export PYTHON_INCLUDES="$PYTHON_DIR/Include" export PYTHON_SITE_PACKAGES="`ls -d $LIB_PREFIX/lib/python*/site-packages`/libxml2" cd $BUILD/$1* ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=$LIB_PREFIX \ --enable-shared \ --disable-static \ --enable-ipv6=no \ --with-python=$HOST_PYTHON \ --with-zlib make make install rm -rf python/tests/*.py $HOST_PYTHON -Wi -t $PYTHON_DIR/Lib/compileall.py python geexbox-1.1/packages/libxml2/install0000755000175000017500000000057010641745505015642 0ustar benben#!/bin/sh . config/options mkdir -p $INSTALL/usr/lib cp -PR $BUILD/$1*/.libs/libxml2*.so* $INSTALL/usr/lib SITE_PACKAGES="`ls -d $INSTALL/usr/lib/python*`/site-packages" mkdir -p $SITE_PACKAGES cp $BUILD/$1*/python/libxml2.pyc $SITE_PACKAGES cp $BUILD/$1*/python/drv_libxml2.pyc $SITE_PACKAGES cp $LIB_PREFIX/lib/python*/site-packages/libxml2/libxml2mod.so $SITE_PACKAGES geexbox-1.1/packages/libxml2/patches/0000755000175000017500000000000010641745505015673 5ustar benbengeexbox-1.1/packages/libxml2/patches/10_python_crosscompile.diff0000644000175000017500000000062310641745505023131 0ustar benben--- a.orig/python/setup.py.in 2006-12-02 14:32:06.000000000 +0100 +++ a/python/setup.py.in 2006-12-02 14:32:09.000000000 +0100 @@ -56,9 +56,8 @@ # - iconv.h # - libxslt/xsltconfig.h includes_dir = [ -"/usr/include", -"/usr/local/include", -"/opt/include", +os.environ['SYSROOT_PREFIX'] + "/usr/include", +os.environ['SYSROOT_PREFIX'] + "/usr/local/include", os.path.join(ROOT,'include'), HOME ]; geexbox-1.1/packages/libxml2/patches/20_python-bindings.diff0000644000175000017500000000307010641745505022142 0ustar benben--- libxml2-2.6.26/configure.orig 2006-12-13 20:30:45.000000000 +0100 +++ libxml2-2.6.26/configure 2006-12-13 20:31:26.000000000 +0100 @@ -26862,8 +26862,8 @@ PYTHON_VERSION= -PYTHON_INCLUDES= -PYTHON_SITE_PACKAGES= +#PYTHON_INCLUDES= +#PYTHON_SITE_PACKAGES= PYTHON_TESTS= pythondir= if test "$with_python" != "no" ; then @@ -26929,33 +26929,6 @@ PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[0:3]"` echo Found Python version $PYTHON_VERSION fi - if test "$PYTHON_VERSION" != "" - then - if test -r $with_python/include/python$PYTHON_VERSION/Python.h -a \ - -d $with_python/lib/python$PYTHON_VERSION/site-packages - then - PYTHON_INCLUDES=$with_python/include/python$PYTHON_VERSION - PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages - else - if test -r $prefix/include/python$PYTHON_VERSION/Python.h - then - PYTHON_INCLUDES=$prefix/include/python$PYTHON_VERSION - PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages - else - if test -r /usr/include/python$PYTHON_VERSION/Python.h - then - PYTHON_INCLUDES=/usr/include/python$PYTHON_VERSION - PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages - else - echo could not find python$PYTHON_VERSION/Python.h - fi - fi - if test ! -d "$PYTHON_SITE_PACKAGES" - then - PYTHON_SITE_PACKAGES=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib()"` - fi - fi - fi if test "$with_python" != "" then pythondir='$(PYTHON_SITE_PACKAGES)' geexbox-1.1/packages/libxml2/url0000644000175000017500000000011210641745505014763 0ustar benbenhttp://ftp.gnome.org/pub/GNOME/sources/libxml2/2.6/libxml2-2.6.26.tar.bz2 geexbox-1.1/packages/linux-headers/0000755000175000017500000000000010641745505015443 5ustar benbengeexbox-1.1/packages/linux-headers/install0000755000175000017500000000053610641745505017043 0ustar benben#!/bin/sh . config/options $SCRIPTS/unpack linux HEADERS=$SYSROOT_PREFIX/usr/include mkdir -p $HEADERS case $TARGET_ARCH in i386) EXTRA_DIRECTORIES="asm-i386" ;; powerpc) EXTRA_DIRECTORIES="asm-powerpc asm-ppc" ;; esac for d in linux asm-generic asm $EXTRA_DIRECTORIES; do cp -pPR $(kernel_path)/include/$d $HEADERS/ done geexbox-1.1/packages/linux/0000755000175000017500000000000010641745505014032 5ustar benbengeexbox-1.1/packages/linux/build0000755000175000017500000000101010641745505015047 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain $SCRIPTS/build module-init-tools DEPMOD=`ls -d $ROOT/$BUILD/module-init-tool*/depmod` LINUX=$(kernel_path) MODDIR=$LINUX/modules rm -rf $MODDIR mkdir -p $MODDIR case $TARGET_ARCH in i386) make bzImage -C "$LINUX" ;; powerpc) unset LDFLAGS make vmlinux -C "$LINUX" ;; esac make modules -C "$LINUX" make INSTALL_MOD_PATH=$MODDIR DEPMOD=$DEPMOD modules_install -C "$LINUX" rm -f $MODDIR/lib/modules/*/build rm -f $MODDIR/lib/modules/*/source geexbox-1.1/packages/linux/config/0000755000175000017500000000000010641745505015277 5ustar benbengeexbox-1.1/packages/linux/config/linux.i386.conf0000644000175000017500000014223010641745505017777 0ustar benben# # Automatically generated make config: don't edit # Linux kernel version: 2.6.21.1 # CONFIG_X86_32=y CONFIG_GENERIC_TIME=y CONFIG_CLOCKSOURCE_WATCHDOG=y CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y CONFIG_LOCKDEP_SUPPORT=y CONFIG_STACKTRACE_SUPPORT=y CONFIG_SEMAPHORE_SLEEPERS=y CONFIG_X86=y CONFIG_MMU=y CONFIG_ZONE_DMA=y CONFIG_GENERIC_ISA_DMA=y CONFIG_GENERIC_IOMAP=y CONFIG_GENERIC_BUG=y CONFIG_GENERIC_HWEIGHT=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y CONFIG_DMI=y CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" # # Code maturity level options # CONFIG_EXPERIMENTAL=y CONFIG_BROKEN_ON_SMP=y CONFIG_INIT_ENV_ARG_LIMIT=32 # # General setup # CONFIG_LOCALVERSION="" # CONFIG_LOCALVERSION_AUTO is not set # CONFIG_SWAP is not set # CONFIG_SYSVIPC is not set # CONFIG_POSIX_MQUEUE is not set # CONFIG_BSD_PROCESS_ACCT is not set # CONFIG_TASKSTATS is not set # CONFIG_UTS_NS is not set # CONFIG_AUDIT is not set # CONFIG_IKCONFIG is not set # CONFIG_SYSFS_DEPRECATED is not set # CONFIG_RELAY is not set CONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE="" CONFIG_CC_OPTIMIZE_FOR_SIZE=y CONFIG_SYSCTL=y CONFIG_EMBEDDED=y # CONFIG_UID16 is not set # CONFIG_SYSCTL_SYSCALL is not set # CONFIG_KALLSYMS is not set CONFIG_HOTPLUG=y CONFIG_PRINTK=y CONFIG_BUG=y # CONFIG_ELF_CORE is not set CONFIG_BASE_FULL=y # CONFIG_FUTEX is not set # CONFIG_EPOLL is not set CONFIG_SHMEM=y CONFIG_SLAB=y # CONFIG_VM_EVENT_COUNTERS is not set # CONFIG_TINY_SHMEM is not set CONFIG_BASE_SMALL=0 # CONFIG_SLOB is not set # # Loadable module support # CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y # CONFIG_MODULE_FORCE_UNLOAD is not set # CONFIG_MODVERSIONS is not set # CONFIG_MODULE_SRCVERSION_ALL is not set # CONFIG_KMOD is not set # # Block layer # CONFIG_BLOCK=y # CONFIG_LBD is not set # CONFIG_BLK_DEV_IO_TRACE is not set # CONFIG_LSF is not set # # IO Schedulers # CONFIG_IOSCHED_NOOP=y # CONFIG_IOSCHED_AS is not set CONFIG_IOSCHED_DEADLINE=y # CONFIG_IOSCHED_CFQ is not set # CONFIG_DEFAULT_AS is not set CONFIG_DEFAULT_DEADLINE=y # CONFIG_DEFAULT_CFQ is not set # CONFIG_DEFAULT_NOOP is not set CONFIG_DEFAULT_IOSCHED="deadline" # # Processor type and features # # CONFIG_TICK_ONESHOT is not set # CONFIG_NO_HZ is not set # CONFIG_HIGH_RES_TIMERS is not set # CONFIG_SMP is not set CONFIG_X86_PC=y # CONFIG_X86_ELAN is not set # CONFIG_X86_VOYAGER is not set # CONFIG_X86_NUMAQ is not set # CONFIG_X86_SUMMIT is not set # CONFIG_X86_BIGSMP is not set # CONFIG_X86_VISWS is not set # CONFIG_X86_GENERICARCH is not set # CONFIG_X86_ES7000 is not set # CONFIG_PARAVIRT is not set # CONFIG_M386 is not set # CONFIG_M486 is not set CONFIG_M586=y # CONFIG_M586TSC is not set # CONFIG_M586MMX is not set # CONFIG_M686 is not set # CONFIG_MPENTIUMII is not set # CONFIG_MPENTIUMIII is not set # CONFIG_MPENTIUMM is not set # CONFIG_MCORE2 is not set # CONFIG_MPENTIUM4 is not set # CONFIG_MK6 is not set # CONFIG_MK7 is not set # CONFIG_MK8 is not set # CONFIG_MCRUSOE is not set # CONFIG_MEFFICEON is not set # CONFIG_MWINCHIPC6 is not set # CONFIG_MWINCHIP2 is not set # CONFIG_MWINCHIP3D is not set # CONFIG_MGEODEGX1 is not set # CONFIG_MGEODE_LX is not set # CONFIG_MCYRIXIII is not set # CONFIG_MVIAC3_2 is not set CONFIG_X86_GENERIC=y CONFIG_X86_CMPXCHG=y CONFIG_X86_L1_CACHE_SHIFT=7 CONFIG_RWSEM_XCHGADD_ALGORITHM=y # CONFIG_ARCH_HAS_ILOG2_U32 is not set # CONFIG_ARCH_HAS_ILOG2_U64 is not set CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_X86_PPRO_FENCE=y CONFIG_X86_F00F_BUG=y CONFIG_X86_WP_WORKS_OK=y CONFIG_X86_INVLPG=y CONFIG_X86_BSWAP=y CONFIG_X86_POPAD_OK=y CONFIG_X86_CMPXCHG64=y CONFIG_X86_ALIGNMENT_16=y CONFIG_X86_INTEL_USERCOPY=y # CONFIG_HPET_TIMER is not set CONFIG_PREEMPT_NONE=y # CONFIG_PREEMPT_VOLUNTARY is not set # CONFIG_PREEMPT is not set CONFIG_X86_UP_APIC=y CONFIG_X86_UP_IOAPIC=y CONFIG_X86_LOCAL_APIC=y CONFIG_X86_IO_APIC=y # CONFIG_X86_MCE is not set CONFIG_VM86=y # CONFIG_TOSHIBA is not set # CONFIG_I8K is not set # CONFIG_X86_REBOOTFIXUPS is not set # CONFIG_MICROCODE is not set # CONFIG_X86_MSR is not set # CONFIG_X86_CPUID is not set # # Firmware Drivers # # CONFIG_EDD is not set # CONFIG_DELL_RBU is not set # CONFIG_DCDBAS is not set CONFIG_NOHIGHMEM=y # CONFIG_HIGHMEM4G is not set # CONFIG_HIGHMEM64G is not set CONFIG_VMSPLIT_3G=y # CONFIG_VMSPLIT_3G_OPT is not set # CONFIG_VMSPLIT_2G is not set # CONFIG_VMSPLIT_1G is not set CONFIG_PAGE_OFFSET=0xC0000000 CONFIG_ARCH_FLATMEM_ENABLE=y CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_ARCH_SELECT_MEMORY_MODEL=y CONFIG_ARCH_POPULATES_NODE_MAP=y CONFIG_SELECT_MEMORY_MODEL=y CONFIG_FLATMEM_MANUAL=y # CONFIG_DISCONTIGMEM_MANUAL is not set # CONFIG_SPARSEMEM_MANUAL is not set CONFIG_FLATMEM=y CONFIG_FLAT_NODE_MEM_MAP=y CONFIG_SPARSEMEM_STATIC=y CONFIG_SPLIT_PTLOCK_CPUS=4 # CONFIG_RESOURCES_64BIT is not set CONFIG_ZONE_DMA_FLAG=1 # CONFIG_MATH_EMULATION is not set CONFIG_MTRR=y # CONFIG_EFI is not set # CONFIG_SECCOMP is not set # CONFIG_HZ_100 is not set # CONFIG_HZ_250 is not set CONFIG_HZ_300=y # CONFIG_HZ_1000 is not set CONFIG_HZ=300 # CONFIG_KEXEC is not set CONFIG_PHYSICAL_START=0x100000 # CONFIG_RELOCATABLE is not set CONFIG_PHYSICAL_ALIGN=0x100000 # CONFIG_COMPAT_VDSO is not set # # Power management options (ACPI, APM) # CONFIG_PM=y CONFIG_PM_LEGACY=y # CONFIG_PM_DEBUG is not set # CONFIG_PM_SYSFS_DEPRECATED is not set # # ACPI (Advanced Configuration and Power Interface) Support # CONFIG_ACPI=y CONFIG_ACPI_SLEEP=y CONFIG_ACPI_SLEEP_PROC_FS=y # CONFIG_ACPI_SLEEP_PROC_SLEEP is not set CONFIG_ACPI_PROCFS=y CONFIG_ACPI_AC=y CONFIG_ACPI_BATTERY=y CONFIG_ACPI_BUTTON=y CONFIG_ACPI_FAN=y # CONFIG_ACPI_DOCK is not set CONFIG_ACPI_PROCESSOR=y CONFIG_ACPI_THERMAL=y # CONFIG_ACPI_ASUS is not set # CONFIG_ACPI_IBM is not set # CONFIG_ACPI_TOSHIBA is not set CONFIG_ACPI_BLACKLIST_YEAR=0 # CONFIG_ACPI_DEBUG is not set CONFIG_ACPI_EC=y CONFIG_ACPI_POWER=y CONFIG_ACPI_SYSTEM=y # CONFIG_X86_PM_TIMER is not set # CONFIG_ACPI_CONTAINER is not set # CONFIG_ACPI_SBS is not set # # APM (Advanced Power Management) BIOS Support # CONFIG_APM=y # CONFIG_APM_IGNORE_USER_SUSPEND is not set CONFIG_APM_DO_ENABLE=y CONFIG_APM_CPU_IDLE=y # CONFIG_APM_DISPLAY_BLANK is not set # CONFIG_APM_RTC_IS_GMT is not set # CONFIG_APM_ALLOW_INTS is not set # CONFIG_APM_REAL_MODE_POWER_OFF is not set # # CPU Frequency scaling # CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_TABLE=y # CONFIG_CPU_FREQ_DEBUG is not set # CONFIG_CPU_FREQ_STAT is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y # CONFIG_CPU_FREQ_GOV_PERFORMANCE is not set # CONFIG_CPU_FREQ_GOV_POWERSAVE is not set CONFIG_CPU_FREQ_GOV_USERSPACE=y # CONFIG_CPU_FREQ_GOV_ONDEMAND is not set # CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set # # CPUFreq processor drivers # CONFIG_X86_ACPI_CPUFREQ=y CONFIG_X86_POWERNOW_K6=y CONFIG_X86_POWERNOW_K7=y CONFIG_X86_POWERNOW_K7_ACPI=y CONFIG_X86_POWERNOW_K8=y CONFIG_X86_POWERNOW_K8_ACPI=y CONFIG_X86_GX_SUSPMOD=y CONFIG_X86_SPEEDSTEP_CENTRINO=y CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI=y CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y CONFIG_X86_SPEEDSTEP_ICH=y CONFIG_X86_SPEEDSTEP_SMI=y CONFIG_X86_P4_CLOCKMOD=y # CONFIG_X86_CPUFREQ_NFORCE2 is not set CONFIG_X86_LONGRUN=y CONFIG_X86_LONGHAUL=y # CONFIG_X86_E_POWERSAVER is not set # # shared options # # CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set CONFIG_X86_SPEEDSTEP_LIB=y # CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK is not set # # Bus options (PCI, PCMCIA, EISA, MCA, ISA) # CONFIG_PCI=y # CONFIG_PCI_GOBIOS is not set # CONFIG_PCI_GOMMCONFIG is not set # CONFIG_PCI_GODIRECT is not set CONFIG_PCI_GOANY=y CONFIG_PCI_BIOS=y CONFIG_PCI_DIRECT=y CONFIG_PCI_MMCONFIG=y # CONFIG_PCIEPORTBUS is not set # CONFIG_PCI_MSI is not set CONFIG_HT_IRQ=y CONFIG_ISA_DMA_API=y CONFIG_ISA=y # CONFIG_EISA is not set # CONFIG_MCA is not set # CONFIG_SCx200 is not set # # PCCARD (PCMCIA/CardBus) support # CONFIG_PCCARD=y # CONFIG_PCMCIA_DEBUG is not set # CONFIG_PCMCIA is not set CONFIG_CARDBUS=y # # PC-card bridges # CONFIG_YENTA=y CONFIG_YENTA_O2=y CONFIG_YENTA_RICOH=y CONFIG_YENTA_TI=y # CONFIG_YENTA_ENE_TUNE is not set CONFIG_YENTA_TOSHIBA=y CONFIG_PCMCIA_PROBE=y CONFIG_PCCARD_NONSTATIC=y # # PCI Hotplug Support # # CONFIG_HOTPLUG_PCI is not set # # Executable file formats # CONFIG_BINFMT_ELF=y # CONFIG_BINFMT_AOUT is not set # CONFIG_BINFMT_MISC is not set # # Networking # CONFIG_NET=y # # Networking options # # CONFIG_NETDEBUG is not set CONFIG_PACKET=y # CONFIG_PACKET_MMAP is not set CONFIG_UNIX=y # CONFIG_NET_KEY is not set CONFIG_INET=y CONFIG_IP_MULTICAST=y # CONFIG_IP_ADVANCED_ROUTER is not set CONFIG_IP_FIB_HASH=y # CONFIG_IP_PNP is not set # CONFIG_NET_IPIP is not set # CONFIG_NET_IPGRE is not set # CONFIG_IP_MROUTE is not set # CONFIG_ARPD is not set # CONFIG_SYN_COOKIES is not set # CONFIG_INET_AH is not set # CONFIG_INET_ESP is not set # CONFIG_INET_IPCOMP is not set # CONFIG_INET_XFRM_TUNNEL is not set # CONFIG_INET_TUNNEL is not set # CONFIG_INET_XFRM_MODE_TRANSPORT is not set # CONFIG_INET_XFRM_MODE_TUNNEL is not set # CONFIG_INET_XFRM_MODE_BEET is not set # CONFIG_INET_DIAG is not set # CONFIG_TCP_CONG_ADVANCED is not set CONFIG_TCP_CONG_CUBIC=y CONFIG_DEFAULT_TCP_CONG="cubic" # CONFIG_TCP_MD5SIG is not set # CONFIG_IPV6 is not set # CONFIG_INET6_XFRM_TUNNEL is not set # CONFIG_INET6_TUNNEL is not set # CONFIG_NETWORK_SECMARK is not set # CONFIG_NETFILTER is not set # # DCCP Configuration (EXPERIMENTAL) # # CONFIG_IP_DCCP is not set # # SCTP Configuration (EXPERIMENTAL) # # CONFIG_IP_SCTP is not set # # TIPC Configuration (EXPERIMENTAL) # # CONFIG_TIPC is not set # CONFIG_ATM is not set # CONFIG_BRIDGE is not set # CONFIG_VLAN_8021Q is not set # CONFIG_DECNET is not set # CONFIG_LLC2 is not set # CONFIG_IPX is not set # CONFIG_ATALK is not set # CONFIG_X25 is not set # CONFIG_LAPB is not set # CONFIG_ECONET is not set # CONFIG_WAN_ROUTER is not set # # QoS and/or fair queueing # # CONFIG_NET_SCHED is not set # # Network testing # # CONFIG_NET_PKTGEN is not set # CONFIG_HAMRADIO is not set # CONFIG_IRDA is not set # CONFIG_BT is not set CONFIG_IEEE80211=y # CONFIG_IEEE80211_DEBUG is not set CONFIG_IEEE80211_CRYPT_WEP=y CONFIG_IEEE80211_CRYPT_CCMP=y CONFIG_IEEE80211_CRYPT_TKIP=y CONFIG_IEEE80211_SOFTMAC=m # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set CONFIG_WIRELESS_EXT=y # # Device Drivers # # # Generic Driver Options # CONFIG_STANDALONE=y CONFIG_PREVENT_FIRMWARE_BUILD=y CONFIG_FW_LOADER=y # CONFIG_SYS_HYPERVISOR is not set # # Connector - unified userspace <-> kernelspace linker # # CONFIG_CONNECTOR is not set # # Memory Technology Devices (MTD) # # CONFIG_MTD is not set # # Parallel port support # CONFIG_PARPORT=y CONFIG_PARPORT_PC=y # CONFIG_PARPORT_SERIAL is not set # CONFIG_PARPORT_PC_FIFO is not set # CONFIG_PARPORT_PC_SUPERIO is not set # CONFIG_PARPORT_GSC is not set # CONFIG_PARPORT_AX88796 is not set # CONFIG_PARPORT_1284 is not set # # Plug and Play support # CONFIG_PNP=y # CONFIG_PNP_DEBUG is not set # # Protocols # CONFIG_ISAPNP=y CONFIG_PNPBIOS=y # CONFIG_PNPBIOS_PROC_FS is not set CONFIG_PNPACPI=y # # Block devices # # CONFIG_BLK_DEV_FD is not set # CONFIG_BLK_DEV_XD is not set # CONFIG_PARIDE is not set # CONFIG_BLK_CPQ_DA is not set # CONFIG_BLK_CPQ_CISS_DA is not set # CONFIG_BLK_DEV_DAC960 is not set # CONFIG_BLK_DEV_UMEM is not set # CONFIG_BLK_DEV_COW_COMMON is not set # CONFIG_BLK_DEV_LOOP is not set # CONFIG_BLK_DEV_NBD is not set CONFIG_BLK_DEV_SX8=y # CONFIG_BLK_DEV_UB is not set CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_SIZE=2048 CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 # CONFIG_CDROM_PKTCDVD is not set # CONFIG_ATA_OVER_ETH is not set # # Misc devices # # CONFIG_IBM_ASM is not set # CONFIG_SGI_IOC4 is not set # CONFIG_TIFM_CORE is not set # CONFIG_SONY_LAPTOP is not set # # ATA/ATAPI/MFM/RLL support # CONFIG_IDE=y CONFIG_IDE_MAX_HWIFS=4 CONFIG_BLK_DEV_IDE=y # # Please see Documentation/ide.txt for help/info on IDE drives # # CONFIG_BLK_DEV_IDE_SATA is not set # CONFIG_BLK_DEV_HD_IDE is not set CONFIG_BLK_DEV_IDEDISK=y # CONFIG_IDEDISK_MULTI_MODE is not set # CONFIG_BLK_DEV_DELKIN is not set CONFIG_BLK_DEV_IDECD=y # CONFIG_BLK_DEV_IDETAPE is not set CONFIG_BLK_DEV_IDEFLOPPY=y # CONFIG_BLK_DEV_IDESCSI is not set # CONFIG_BLK_DEV_IDEACPI is not set # CONFIG_IDE_TASK_IOCTL is not set # # IDE chipset support/bugfixes # CONFIG_IDE_GENERIC=y CONFIG_BLK_DEV_CMD640=y CONFIG_BLK_DEV_CMD640_ENHANCED=y CONFIG_BLK_DEV_IDEPNP=y CONFIG_BLK_DEV_IDEPCI=y CONFIG_IDEPCI_SHARE_IRQ=y # CONFIG_BLK_DEV_OFFBOARD is not set CONFIG_BLK_DEV_GENERIC=y CONFIG_BLK_DEV_OPTI621=y CONFIG_BLK_DEV_RZ1000=y CONFIG_BLK_DEV_IDEDMA_PCI=y # CONFIG_BLK_DEV_IDEDMA_FORCED is not set # CONFIG_IDEDMA_ONLYDISK is not set CONFIG_BLK_DEV_AEC62XX=y CONFIG_BLK_DEV_ALI15X3=y # CONFIG_WDC_ALI15X3 is not set CONFIG_BLK_DEV_AMD74XX=y CONFIG_BLK_DEV_ATIIXP=y CONFIG_BLK_DEV_CMD64X=y CONFIG_BLK_DEV_TRIFLEX=y CONFIG_BLK_DEV_CY82C693=y # CONFIG_BLK_DEV_CS5520 is not set CONFIG_BLK_DEV_CS5530=y CONFIG_BLK_DEV_CS5535=y CONFIG_BLK_DEV_HPT34X=y # CONFIG_HPT34X_AUTODMA is not set CONFIG_BLK_DEV_HPT366=y CONFIG_BLK_DEV_JMICRON=y # CONFIG_BLK_DEV_SC1200 is not set CONFIG_BLK_DEV_PIIX=y # CONFIG_BLK_DEV_IT8213 is not set CONFIG_BLK_DEV_IT821X=y CONFIG_BLK_DEV_NS87415=y CONFIG_BLK_DEV_PDC202XX_OLD=y # CONFIG_PDC202XX_BURST is not set CONFIG_BLK_DEV_PDC202XX_NEW=y # CONFIG_BLK_DEV_SVWKS is not set CONFIG_BLK_DEV_SIIMAGE=y CONFIG_BLK_DEV_SIS5513=y CONFIG_BLK_DEV_SLC90E66=y # CONFIG_BLK_DEV_TRM290 is not set CONFIG_BLK_DEV_VIA82CXXX=y # CONFIG_BLK_DEV_TC86C001 is not set # CONFIG_IDE_ARM is not set # CONFIG_IDE_CHIPSETS is not set CONFIG_BLK_DEV_IDEDMA=y # CONFIG_IDEDMA_IVB is not set # CONFIG_BLK_DEV_HD is not set # # SCSI device support # # CONFIG_RAID_ATTRS is not set CONFIG_SCSI=y # CONFIG_SCSI_TGT is not set # CONFIG_SCSI_NETLINK is not set CONFIG_SCSI_PROC_FS=y # # SCSI support type (disk, tape, CD-ROM) # CONFIG_BLK_DEV_SD=y # CONFIG_CHR_DEV_ST is not set # CONFIG_CHR_DEV_OSST is not set CONFIG_BLK_DEV_SR=y # CONFIG_BLK_DEV_SR_VENDOR is not set CONFIG_CHR_DEV_SG=y # CONFIG_CHR_DEV_SCH is not set # # Some SCSI devices (e.g. CD jukebox) support multiple LUNs # CONFIG_SCSI_MULTI_LUN=y # CONFIG_SCSI_CONSTANTS is not set # CONFIG_SCSI_LOGGING is not set # CONFIG_SCSI_SCAN_ASYNC is not set # # SCSI Transports # CONFIG_SCSI_SPI_ATTRS=y # CONFIG_SCSI_FC_ATTRS is not set # CONFIG_SCSI_ISCSI_ATTRS is not set # CONFIG_SCSI_SAS_ATTRS is not set # CONFIG_SCSI_SAS_LIBSAS is not set # # SCSI low-level drivers # # CONFIG_ISCSI_TCP is not set # CONFIG_BLK_DEV_3W_XXXX_RAID is not set # CONFIG_SCSI_3W_9XXX is not set # CONFIG_SCSI_7000FASST is not set # CONFIG_SCSI_ACARD is not set # CONFIG_SCSI_AHA152X is not set # CONFIG_SCSI_AHA1542 is not set # CONFIG_SCSI_AACRAID is not set CONFIG_SCSI_AIC7XXX=y CONFIG_AIC7XXX_CMDS_PER_DEVICE=253 CONFIG_AIC7XXX_RESET_DELAY_MS=15000 # CONFIG_AIC7XXX_DEBUG_ENABLE is not set CONFIG_AIC7XXX_DEBUG_MASK=0 # CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set # CONFIG_SCSI_AIC7XXX_OLD is not set # CONFIG_SCSI_AIC79XX is not set # CONFIG_SCSI_AIC94XX is not set # CONFIG_SCSI_DPT_I2O is not set # CONFIG_SCSI_ADVANSYS is not set # CONFIG_SCSI_IN2000 is not set # CONFIG_SCSI_ARCMSR is not set # CONFIG_MEGARAID_NEWGEN is not set # CONFIG_MEGARAID_LEGACY is not set # CONFIG_MEGARAID_SAS is not set # CONFIG_SCSI_HPTIOP is not set CONFIG_SCSI_BUSLOGIC=y CONFIG_SCSI_OMIT_FLASHPOINT=y # CONFIG_SCSI_DMX3191D is not set # CONFIG_SCSI_DTC3280 is not set # CONFIG_SCSI_EATA is not set # CONFIG_SCSI_FUTURE_DOMAIN is not set # CONFIG_SCSI_GDTH is not set # CONFIG_SCSI_GENERIC_NCR5380 is not set # CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set # CONFIG_SCSI_IPS is not set # CONFIG_SCSI_INITIO is not set # CONFIG_SCSI_INIA100 is not set # CONFIG_SCSI_PPA is not set # CONFIG_SCSI_IMM is not set # CONFIG_SCSI_NCR53C406A is not set # CONFIG_SCSI_STEX is not set CONFIG_SCSI_SYM53C8XX_2=y CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 # CONFIG_SCSI_SYM53C8XX_MMIO is not set # CONFIG_SCSI_IPR is not set # CONFIG_SCSI_PAS16 is not set # CONFIG_SCSI_PSI240I is not set # CONFIG_SCSI_QLOGIC_FAS is not set # CONFIG_SCSI_QLOGIC_1280 is not set # CONFIG_SCSI_QLA_FC is not set # CONFIG_SCSI_QLA_ISCSI is not set # CONFIG_SCSI_LPFC is not set # CONFIG_SCSI_SEAGATE is not set # CONFIG_SCSI_SYM53C416 is not set # CONFIG_SCSI_DC395x is not set CONFIG_SCSI_DC390T=y # CONFIG_SCSI_T128 is not set # CONFIG_SCSI_U14_34F is not set # CONFIG_SCSI_ULTRASTOR is not set # CONFIG_SCSI_NSP32 is not set # CONFIG_SCSI_DEBUG is not set # CONFIG_SCSI_SRP is not set # # Serial ATA (prod) and Parallel ATA (experimental) drivers # CONFIG_ATA=y # CONFIG_ATA_NONSTANDARD is not set CONFIG_SATA_AHCI=y CONFIG_SATA_SVW=y CONFIG_ATA_PIIX=y CONFIG_SATA_MV=y CONFIG_SATA_NV=y CONFIG_PDC_ADMA=y CONFIG_SATA_QSTOR=y CONFIG_SATA_PROMISE=y CONFIG_SATA_SX4=y CONFIG_SATA_SIL=y CONFIG_SATA_SIL24=y CONFIG_SATA_SIS=y CONFIG_SATA_ULI=y CONFIG_SATA_VIA=y CONFIG_SATA_VITESSE=y # CONFIG_SATA_INIC162X is not set CONFIG_SATA_INTEL_COMBINED=y CONFIG_SATA_ACPI=y # CONFIG_PATA_ALI is not set # CONFIG_PATA_AMD is not set # CONFIG_PATA_ARTOP is not set # CONFIG_PATA_ATIIXP is not set # CONFIG_PATA_CMD64X is not set # CONFIG_PATA_CS5520 is not set # CONFIG_PATA_CS5530 is not set # CONFIG_PATA_CS5535 is not set # CONFIG_PATA_CYPRESS is not set # CONFIG_PATA_EFAR is not set # CONFIG_ATA_GENERIC is not set # CONFIG_PATA_HPT366 is not set # CONFIG_PATA_HPT37X is not set # CONFIG_PATA_HPT3X2N is not set # CONFIG_PATA_HPT3X3 is not set # CONFIG_PATA_ISAPNP is not set # CONFIG_PATA_IT821X is not set # CONFIG_PATA_IT8213 is not set # CONFIG_PATA_JMICRON is not set # CONFIG_PATA_LEGACY is not set # CONFIG_PATA_TRIFLEX is not set # CONFIG_PATA_MARVELL is not set # CONFIG_PATA_MPIIX is not set # CONFIG_PATA_OLDPIIX is not set # CONFIG_PATA_NETCELL is not set # CONFIG_PATA_NS87410 is not set # CONFIG_PATA_OPTI is not set # CONFIG_PATA_OPTIDMA is not set # CONFIG_PATA_PDC_OLD is not set # CONFIG_PATA_QDI is not set # CONFIG_PATA_RADISYS is not set # CONFIG_PATA_RZ1000 is not set # CONFIG_PATA_SC1200 is not set # CONFIG_PATA_SERVERWORKS is not set # CONFIG_PATA_PDC2027X is not set # CONFIG_PATA_SIL680 is not set CONFIG_PATA_SIS=y # CONFIG_PATA_VIA is not set # CONFIG_PATA_WINBOND is not set # CONFIG_PATA_WINBOND_VLB is not set # CONFIG_PATA_PLATFORM is not set # # Old CD-ROM drivers (not SCSI, not IDE) # # CONFIG_CD_NO_IDESCSI is not set # # Multi-device support (RAID and LVM) # # CONFIG_MD is not set # # Fusion MPT device support # # CONFIG_FUSION is not set # CONFIG_FUSION_SPI is not set # CONFIG_FUSION_FC is not set # CONFIG_FUSION_SAS is not set # # IEEE 1394 (FireWire) support # CONFIG_IEEE1394=y # # Subsystem Options # # CONFIG_IEEE1394_VERBOSEDEBUG is not set # CONFIG_IEEE1394_EXTRA_CONFIG_ROMS is not set # # Device Drivers # CONFIG_IEEE1394_PCILYNX=y CONFIG_IEEE1394_OHCI1394=y # # Protocol Drivers # # CONFIG_IEEE1394_VIDEO1394 is not set CONFIG_IEEE1394_SBP2=y # CONFIG_IEEE1394_SBP2_PHYS_DMA is not set # CONFIG_IEEE1394_ETH1394 is not set # CONFIG_IEEE1394_DV1394 is not set # CONFIG_IEEE1394_RAWIO is not set # # I2O device support # # CONFIG_I2O is not set # # Macintosh device drivers # # CONFIG_MAC_EMUMOUSEBTN is not set # # Network device support # CONFIG_NETDEVICES=y # CONFIG_DUMMY is not set # CONFIG_BONDING is not set # CONFIG_EQUALIZER is not set # CONFIG_TUN is not set # CONFIG_NET_SB1000 is not set # # ARCnet devices # # CONFIG_ARCNET is not set # # PHY device support # # CONFIG_PHYLIB is not set # # Ethernet (10 or 100Mbit) # CONFIG_NET_ETHERNET=y CONFIG_MII=y # CONFIG_HAPPYMEAL is not set # CONFIG_SUNGEM is not set # CONFIG_CASSINI is not set CONFIG_NET_VENDOR_3COM=y CONFIG_EL1=y CONFIG_EL2=y CONFIG_ELPLUS=y CONFIG_EL16=y CONFIG_EL3=y # CONFIG_3C515 is not set CONFIG_VORTEX=y CONFIG_TYPHOON=y # CONFIG_LANCE is not set CONFIG_NET_VENDOR_SMC=y CONFIG_WD80x3=m CONFIG_ULTRA=m # CONFIG_SMC9194 is not set # CONFIG_NET_VENDOR_RACAL is not set # # Tulip family network device support # CONFIG_NET_TULIP=y # CONFIG_DE2104X is not set CONFIG_TULIP=y # CONFIG_TULIP_MWI is not set # CONFIG_TULIP_MMIO is not set # CONFIG_TULIP_NAPI is not set CONFIG_DE4X5=y # CONFIG_WINBOND_840 is not set CONFIG_DM9102=y CONFIG_ULI526X=y # CONFIG_PCMCIA_XIRCOM is not set # CONFIG_PCMCIA_XIRTULIP is not set # CONFIG_AT1700 is not set # CONFIG_DEPCA is not set # CONFIG_HP100 is not set # CONFIG_NET_ISA is not set CONFIG_NET_PCI=y CONFIG_PCNET32=y # CONFIG_PCNET32_NAPI is not set CONFIG_AMD8111_ETH=y # CONFIG_AMD8111E_NAPI is not set CONFIG_ADAPTEC_STARFIRE=y # CONFIG_ADAPTEC_STARFIRE_NAPI is not set # CONFIG_AC3200 is not set # CONFIG_APRICOT is not set CONFIG_B44=y CONFIG_FORCEDETH=y # CONFIG_FORCEDETH_NAPI is not set # CONFIG_CS89x0 is not set # CONFIG_DGRS is not set CONFIG_EEPRO100=y # CONFIG_E100 is not set # CONFIG_FEALNX is not set CONFIG_NATSEMI=y CONFIG_NE2K_PCI=y CONFIG_8139CP=y CONFIG_8139TOO=y # CONFIG_8139TOO_PIO is not set CONFIG_8139TOO_TUNE_TWISTER=y CONFIG_8139TOO_8129=y # CONFIG_8139_OLD_RX_RESET is not set CONFIG_SIS900=y CONFIG_EPIC100=y # CONFIG_SUNDANCE is not set # CONFIG_TLAN is not set CONFIG_VIA_RHINE=y # CONFIG_VIA_RHINE_MMIO is not set # CONFIG_VIA_RHINE_NAPI is not set # CONFIG_SC92031 is not set # CONFIG_NET_POCKET is not set # # Ethernet (1000 Mbit) # CONFIG_ACENIC=y CONFIG_ACENIC_OMIT_TIGON_I=y CONFIG_DL2K=y CONFIG_E1000=y # CONFIG_E1000_NAPI is not set # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set CONFIG_NS83820=y CONFIG_HAMACHI=y CONFIG_YELLOWFIN=y CONFIG_R8169=y # CONFIG_R8169_NAPI is not set CONFIG_SIS190=y CONFIG_SKGE=y CONFIG_SKY2=y # CONFIG_SK98LIN is not set CONFIG_VIA_VELOCITY=y CONFIG_TIGON3=y CONFIG_BNX2=y CONFIG_QLA3XXX=y # CONFIG_ATL1 is not set # # Ethernet (10000 Mbit) # # CONFIG_CHELSIO_T1 is not set # CONFIG_CHELSIO_T3 is not set # CONFIG_IXGB is not set # CONFIG_S2IO is not set # CONFIG_MYRI10GE is not set # CONFIG_NETXEN_NIC is not set # # Token Ring devices # # CONFIG_TR is not set # # Wireless LAN (non-hamradio) # CONFIG_NET_RADIO=y # CONFIG_NET_WIRELESS_RTNETLINK is not set # # Obsolete Wireless cards support (pre-802.11) # # CONFIG_STRIP is not set # CONFIG_ARLAN is not set # CONFIG_WAVELAN is not set # # Wireless 802.11b ISA/PCI cards support # CONFIG_IPW2100=m # CONFIG_IPW2100_MONITOR is not set # CONFIG_IPW2100_DEBUG is not set CONFIG_IPW2200=m # CONFIG_IPW2200_MONITOR is not set # CONFIG_IPW2200_QOS is not set # CONFIG_IPW2200_DEBUG is not set CONFIG_AIRO=y CONFIG_HERMES=y CONFIG_PLX_HERMES=y CONFIG_TMD_HERMES=y CONFIG_NORTEL_HERMES=y CONFIG_PCI_HERMES=y CONFIG_ATMEL=m CONFIG_PCI_ATMEL=m # # Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support # CONFIG_PRISM54=y CONFIG_USB_ZD1201=m # CONFIG_HOSTAP is not set CONFIG_BCM43XX=m # CONFIG_BCM43XX_DEBUG is not set CONFIG_BCM43XX_DMA=y CONFIG_BCM43XX_PIO=y CONFIG_BCM43XX_DMA_AND_PIO_MODE=y # CONFIG_BCM43XX_DMA_MODE is not set # CONFIG_BCM43XX_PIO_MODE is not set CONFIG_ZD1211RW=m # CONFIG_ZD1211RW_DEBUG is not set CONFIG_NET_WIRELESS=y # # Wan interfaces # # CONFIG_WAN is not set # CONFIG_FDDI is not set # CONFIG_HIPPI is not set # CONFIG_PLIP is not set # CONFIG_PPP is not set # CONFIG_SLIP is not set # CONFIG_NET_FC is not set # CONFIG_SHAPER is not set # CONFIG_NETCONSOLE is not set # CONFIG_NETPOLL is not set # CONFIG_NET_POLL_CONTROLLER is not set # # ISDN subsystem # # CONFIG_ISDN is not set # # Telephony Support # # CONFIG_PHONE is not set # # Input device support # CONFIG_INPUT=y # CONFIG_INPUT_FF_MEMLESS is not set # # Userland interfaces # CONFIG_INPUT_MOUSEDEV=y CONFIG_INPUT_MOUSEDEV_PSAUX=y CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 CONFIG_INPUT_JOYDEV=y # CONFIG_INPUT_TSDEV is not set CONFIG_INPUT_EVDEV=m # CONFIG_INPUT_EVBUG is not set # # Input Device Drivers # CONFIG_INPUT_KEYBOARD=y CONFIG_KEYBOARD_ATKBD=y # CONFIG_KEYBOARD_SUNKBD is not set # CONFIG_KEYBOARD_LKKBD is not set # CONFIG_KEYBOARD_XTKBD is not set # CONFIG_KEYBOARD_NEWTON is not set # CONFIG_KEYBOARD_STOWAWAY is not set CONFIG_INPUT_MOUSE=y CONFIG_MOUSE_PS2=y # CONFIG_MOUSE_SERIAL is not set # CONFIG_MOUSE_INPORT is not set # CONFIG_MOUSE_LOGIBM is not set # CONFIG_MOUSE_PC110PAD is not set # CONFIG_MOUSE_VSXXXAA is not set CONFIG_INPUT_JOYSTICK=y # CONFIG_JOYSTICK_ANALOG is not set # CONFIG_JOYSTICK_A3D is not set # CONFIG_JOYSTICK_ADI is not set # CONFIG_JOYSTICK_COBRA is not set # CONFIG_JOYSTICK_GF2K is not set CONFIG_JOYSTICK_GRIP=y # CONFIG_JOYSTICK_GRIP_MP is not set # CONFIG_JOYSTICK_GUILLEMOT is not set # CONFIG_JOYSTICK_INTERACT is not set CONFIG_JOYSTICK_SIDEWINDER=y # CONFIG_JOYSTICK_TMDC is not set # CONFIG_JOYSTICK_IFORCE is not set # CONFIG_JOYSTICK_WARRIOR is not set # CONFIG_JOYSTICK_MAGELLAN is not set # CONFIG_JOYSTICK_SPACEORB is not set # CONFIG_JOYSTICK_SPACEBALL is not set # CONFIG_JOYSTICK_STINGER is not set # CONFIG_JOYSTICK_TWIDJOY is not set # CONFIG_JOYSTICK_DB9 is not set # CONFIG_JOYSTICK_GAMECON is not set # CONFIG_JOYSTICK_TURBOGRAFX is not set # CONFIG_JOYSTICK_JOYDUMP is not set # CONFIG_INPUT_TOUCHSCREEN is not set # CONFIG_INPUT_MISC is not set # # Hardware I/O ports # CONFIG_SERIO=y CONFIG_SERIO_I8042=y # CONFIG_SERIO_SERPORT is not set # CONFIG_SERIO_CT82C710 is not set # CONFIG_SERIO_PARKBD is not set # CONFIG_SERIO_PCIPS2 is not set CONFIG_SERIO_LIBPS2=y # CONFIG_SERIO_RAW is not set CONFIG_GAMEPORT=y CONFIG_GAMEPORT_NS558=y # CONFIG_GAMEPORT_L4 is not set CONFIG_GAMEPORT_EMU10K1=y # CONFIG_GAMEPORT_FM801 is not set # # Character devices # CONFIG_VT=y CONFIG_VT_CONSOLE=y CONFIG_HW_CONSOLE=y # CONFIG_VT_HW_CONSOLE_BINDING is not set # CONFIG_SERIAL_NONSTANDARD is not set # # Serial drivers # CONFIG_SERIAL_8250=m CONFIG_SERIAL_8250_PCI=m CONFIG_SERIAL_8250_PNP=m CONFIG_SERIAL_8250_NR_UARTS=4 CONFIG_SERIAL_8250_RUNTIME_UARTS=4 # CONFIG_SERIAL_8250_EXTENDED is not set # # Non-8250 serial port support # CONFIG_SERIAL_CORE=m # CONFIG_SERIAL_JSM is not set # CONFIG_UNIX98_PTYS is not set CONFIG_LEGACY_PTYS=y CONFIG_LEGACY_PTY_COUNT=256 # CONFIG_PRINTER is not set CONFIG_PPDEV=y # CONFIG_TIPAR is not set # # IPMI # # CONFIG_IPMI_HANDLER is not set # # Watchdog Cards # # CONFIG_WATCHDOG is not set CONFIG_HW_RANDOM=y # CONFIG_HW_RANDOM_INTEL is not set # CONFIG_HW_RANDOM_AMD is not set # CONFIG_HW_RANDOM_GEODE is not set # CONFIG_HW_RANDOM_VIA is not set # CONFIG_NVRAM is not set CONFIG_RTC=y # CONFIG_DTLK is not set # CONFIG_R3964 is not set # CONFIG_APPLICOM is not set # CONFIG_SONYPI is not set # CONFIG_AGP is not set # CONFIG_DRM is not set # CONFIG_MWAVE is not set # CONFIG_PC8736x_GPIO is not set # CONFIG_NSC_GPIO is not set # CONFIG_CS5535_GPIO is not set # CONFIG_RAW_DRIVER is not set # CONFIG_HPET is not set # CONFIG_HANGCHECK_TIMER is not set # # TPM devices # # CONFIG_TCG_TPM is not set # CONFIG_TELCLOCK is not set # # I2C support # CONFIG_I2C=y CONFIG_I2C_CHARDEV=y # # I2C Algorithms # CONFIG_I2C_ALGOBIT=y # CONFIG_I2C_ALGOPCF is not set # CONFIG_I2C_ALGOPCA is not set # # I2C Hardware Bus support # # CONFIG_I2C_ALI1535 is not set # CONFIG_I2C_ALI1563 is not set # CONFIG_I2C_ALI15X3 is not set # CONFIG_I2C_AMD756 is not set # CONFIG_I2C_AMD8111 is not set # CONFIG_I2C_ELEKTOR is not set # CONFIG_I2C_I801 is not set # CONFIG_I2C_I810 is not set # CONFIG_I2C_PIIX4 is not set # CONFIG_I2C_NFORCE2 is not set # CONFIG_I2C_OCORES is not set # CONFIG_I2C_PARPORT is not set # CONFIG_I2C_PARPORT_LIGHT is not set # CONFIG_I2C_PROSAVAGE is not set # CONFIG_I2C_SAVAGE4 is not set # CONFIG_SCx200_ACB is not set # CONFIG_I2C_SIS5595 is not set # CONFIG_I2C_SIS630 is not set CONFIG_I2C_SIS96X=y # CONFIG_I2C_STUB is not set # CONFIG_I2C_VIA is not set # CONFIG_I2C_VIAPRO is not set # CONFIG_I2C_VOODOO3 is not set # CONFIG_I2C_PCA_ISA is not set # # Miscellaneous I2C Chip support # # CONFIG_SENSORS_DS1337 is not set # CONFIG_SENSORS_DS1374 is not set # CONFIG_SENSORS_EEPROM is not set # CONFIG_SENSORS_PCF8574 is not set # CONFIG_SENSORS_PCA9539 is not set # CONFIG_SENSORS_PCF8591 is not set # CONFIG_SENSORS_MAX6875 is not set # CONFIG_I2C_DEBUG_CORE is not set # CONFIG_I2C_DEBUG_ALGO is not set # CONFIG_I2C_DEBUG_BUS is not set # CONFIG_I2C_DEBUG_CHIP is not set # # SPI support # # CONFIG_SPI is not set # CONFIG_SPI_MASTER is not set # # Dallas's 1-wire bus # # CONFIG_W1 is not set # # Hardware Monitoring support # # CONFIG_HWMON is not set # CONFIG_HWMON_VID is not set # # Multifunction device drivers # # CONFIG_MFD_SM501 is not set # # Multimedia devices # CONFIG_VIDEO_DEV=y CONFIG_VIDEO_V4L1=y CONFIG_VIDEO_V4L1_COMPAT=y CONFIG_VIDEO_V4L2=y # # Video Capture Adapters # # # Video Capture Adapters # # CONFIG_VIDEO_ADV_DEBUG is not set CONFIG_VIDEO_HELPER_CHIPS_AUTO=y CONFIG_VIDEO_TVAUDIO=m CONFIG_VIDEO_TDA7432=m CONFIG_VIDEO_TDA9875=m CONFIG_VIDEO_MSP3400=m CONFIG_VIDEO_WM8775=m CONFIG_VIDEO_SAA711X=m CONFIG_VIDEO_CX25840=m CONFIG_VIDEO_CX2341X=m # CONFIG_VIDEO_VIVI is not set CONFIG_VIDEO_BT848=m CONFIG_VIDEO_BT848_DVB=y # CONFIG_VIDEO_SAA6588 is not set # CONFIG_VIDEO_PMS is not set # CONFIG_VIDEO_BWQCAM is not set # CONFIG_VIDEO_CQCAM is not set # CONFIG_VIDEO_CPIA is not set # CONFIG_VIDEO_CPIA2 is not set # CONFIG_VIDEO_SAA5246A is not set # CONFIG_VIDEO_SAA5249 is not set # CONFIG_TUNER_3036 is not set # CONFIG_VIDEO_STRADIS is not set # CONFIG_VIDEO_ZORAN is not set CONFIG_VIDEO_SAA7134=m # CONFIG_VIDEO_SAA7134_ALSA is not set CONFIG_VIDEO_SAA7134_DVB=m # CONFIG_VIDEO_MXB is not set # CONFIG_VIDEO_DPC is not set # CONFIG_VIDEO_HEXIUM_ORION is not set # CONFIG_VIDEO_HEXIUM_GEMINI is not set CONFIG_VIDEO_CX88=m # CONFIG_VIDEO_CX88_ALSA is not set CONFIG_VIDEO_CX88_BLACKBIRD=m CONFIG_VIDEO_CX88_DVB=m CONFIG_VIDEO_CX88_VP3054=m # CONFIG_VIDEO_CAFE_CCIC is not set # # V4L USB devices # CONFIG_VIDEO_PVRUSB2=m CONFIG_VIDEO_PVRUSB2_29XXX=y CONFIG_VIDEO_PVRUSB2_24XXX=y CONFIG_VIDEO_PVRUSB2_SYSFS=y # CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set # CONFIG_VIDEO_EM28XX is not set # CONFIG_VIDEO_USBVISION is not set # CONFIG_USB_VICAM is not set # CONFIG_USB_IBMCAM is not set # CONFIG_USB_KONICAWC is not set # CONFIG_USB_QUICKCAM_MESSENGER is not set # CONFIG_USB_ET61X251 is not set # CONFIG_VIDEO_OVCAMCHIP is not set # CONFIG_USB_W9968CF is not set # CONFIG_USB_OV511 is not set # CONFIG_USB_SE401 is not set # CONFIG_USB_SN9C102 is not set # CONFIG_USB_STV680 is not set # CONFIG_USB_ZC0301 is not set # CONFIG_USB_PWC is not set # # Radio Adapters # CONFIG_RADIO_CADET=y CONFIG_RADIO_RTRACK=m CONFIG_RADIO_RTRACK2=m CONFIG_RADIO_AZTECH=m CONFIG_RADIO_GEMTEK=m CONFIG_RADIO_GEMTEK_PCI=y CONFIG_RADIO_MAXIRADIO=y CONFIG_RADIO_MAESTRO=y CONFIG_RADIO_SF16FMI=m CONFIG_RADIO_SF16FMR2=y CONFIG_RADIO_TERRATEC=m CONFIG_RADIO_TRUST=m CONFIG_RADIO_TYPHOON=m # CONFIG_RADIO_TYPHOON_PROC_FS is not set CONFIG_RADIO_ZOLTRIX=m CONFIG_USB_DSBR=y # # Digital Video Broadcasting Devices # CONFIG_DVB=y CONFIG_DVB_CORE=y # CONFIG_DVB_CORE_ATTACH is not set # # Supported SAA7146 based PCI Adapters # CONFIG_DVB_AV7110=m CONFIG_DVB_AV7110_OSD=y CONFIG_DVB_BUDGET=m CONFIG_DVB_BUDGET_CI=m CONFIG_DVB_BUDGET_AV=m CONFIG_DVB_BUDGET_PATCH=m # # Supported USB Adapters # CONFIG_DVB_USB=m # CONFIG_DVB_USB_DEBUG is not set CONFIG_DVB_USB_A800=m CONFIG_DVB_USB_DIBUSB_MB=m CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y CONFIG_DVB_USB_DIBUSB_MC=m CONFIG_DVB_USB_DIB0700=m CONFIG_DVB_USB_UMT_010=m CONFIG_DVB_USB_CXUSB=m # CONFIG_DVB_USB_M920X is not set # CONFIG_DVB_USB_GL861 is not set # CONFIG_DVB_USB_AU6610 is not set CONFIG_DVB_USB_DIGITV=m CONFIG_DVB_USB_VP7045=m CONFIG_DVB_USB_VP702X=m # CONFIG_DVB_USB_GP8PSK is not set CONFIG_DVB_USB_NOVA_T_USB2=m CONFIG_DVB_USB_TTUSB2=m CONFIG_DVB_USB_DTT200U=m CONFIG_DVB_TTUSB_BUDGET=m CONFIG_DVB_TTUSB_DEC=m CONFIG_DVB_CINERGYT2=m # CONFIG_DVB_CINERGYT2_TUNING is not set # # Supported FlexCopII (B2C2) Adapters # CONFIG_DVB_B2C2_FLEXCOP=m CONFIG_DVB_B2C2_FLEXCOP_PCI=m CONFIG_DVB_B2C2_FLEXCOP_USB=m # CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set # # Supported BT878 Adapters # CONFIG_DVB_BT8XX=m # # Supported Pluto2 Adapters # CONFIG_DVB_PLUTO2=m # # Supported DVB Frontends # # # Customise DVB Frontends # # CONFIG_DVB_FE_CUSTOMISE is not set # # DVB-S (satellite) frontends # CONFIG_DVB_STV0299=m CONFIG_DVB_CX24110=m CONFIG_DVB_CX24123=m CONFIG_DVB_TDA8083=m CONFIG_DVB_MT312=m CONFIG_DVB_VES1X93=m CONFIG_DVB_S5H1420=m CONFIG_DVB_TDA10086=m # # DVB-T (terrestrial) frontends # CONFIG_DVB_SP8870=m CONFIG_DVB_SP887X=m CONFIG_DVB_CX22700=m CONFIG_DVB_CX22702=m CONFIG_DVB_L64781=m CONFIG_DVB_TDA1004X=m CONFIG_DVB_NXT6000=m CONFIG_DVB_MT352=m CONFIG_DVB_ZL10353=m CONFIG_DVB_DIB3000MB=m CONFIG_DVB_DIB3000MC=m CONFIG_DVB_DIB7000M=m CONFIG_DVB_DIB7000P=m # # DVB-C (cable) frontends # CONFIG_DVB_VES1820=m CONFIG_DVB_TDA10021=m CONFIG_DVB_STV0297=m # # ATSC (North American/Korean Terrestrial/Cable DTV) frontends # CONFIG_DVB_NXT200X=m CONFIG_DVB_OR51211=m CONFIG_DVB_OR51132=m CONFIG_DVB_BCM3510=m CONFIG_DVB_LGDT330X=m # # Tuners/PLL support # CONFIG_DVB_PLL=m CONFIG_DVB_TDA826X=m # CONFIG_DVB_TUNER_QT1010 is not set CONFIG_DVB_TUNER_MT2060=m CONFIG_DVB_TUNER_LGH06XF=m # # Miscellaneous devices # CONFIG_DVB_LNBP21=y CONFIG_DVB_ISL6421=y CONFIG_DVB_TUA6100=y CONFIG_VIDEO_SAA7146=m CONFIG_VIDEO_SAA7146_VV=m CONFIG_VIDEO_TUNER=m CONFIG_VIDEO_BUF=m CONFIG_VIDEO_BUF_DVB=m CONFIG_VIDEO_BTCX=m CONFIG_VIDEO_IR=m CONFIG_VIDEO_TVEEPROM=m # CONFIG_USB_DABUSB is not set # # Graphics support # # CONFIG_BACKLIGHT_LCD_SUPPORT is not set CONFIG_FB=y # CONFIG_FIRMWARE_EDID is not set # CONFIG_FB_DDC is not set CONFIG_FB_CFB_FILLRECT=y CONFIG_FB_CFB_COPYAREA=y CONFIG_FB_CFB_IMAGEBLIT=y # CONFIG_FB_SVGALIB is not set # CONFIG_FB_MACMODES is not set # CONFIG_FB_BACKLIGHT is not set # CONFIG_FB_MODE_HELPERS is not set # CONFIG_FB_TILEBLITTING is not set # # Frame buffer hardware drivers # # CONFIG_FB_CIRRUS is not set # CONFIG_FB_PM2 is not set # CONFIG_FB_CYBER2000 is not set # CONFIG_FB_ARC is not set # CONFIG_FB_ASILIANT is not set # CONFIG_FB_IMSTT is not set # CONFIG_FB_VGA16 is not set CONFIG_FB_VESA=y # CONFIG_FB_HGA is not set # CONFIG_FB_S1D13XXX is not set # CONFIG_FB_NVIDIA is not set # CONFIG_FB_RIVA is not set # CONFIG_FB_I810 is not set # CONFIG_FB_INTEL is not set # CONFIG_FB_MATROX is not set # CONFIG_FB_RADEON is not set # CONFIG_FB_ATY128 is not set # CONFIG_FB_ATY is not set # CONFIG_FB_S3 is not set # CONFIG_FB_SAVAGE is not set # CONFIG_FB_SIS is not set # CONFIG_FB_NEOMAGIC is not set # CONFIG_FB_KYRO is not set # CONFIG_FB_3DFX is not set # CONFIG_FB_VOODOO1 is not set # CONFIG_FB_CYBLA is not set # CONFIG_FB_TRIDENT is not set # CONFIG_FB_GEODE is not set # CONFIG_FB_VIRTUAL is not set # # Console display driver support # CONFIG_VGA_CONSOLE=y # CONFIG_VGACON_SOFT_SCROLLBACK is not set CONFIG_VIDEO_SELECT=y # CONFIG_MDA_CONSOLE is not set CONFIG_DUMMY_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE=y # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set # CONFIG_FONTS is not set CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y # # Logo configuration # # CONFIG_LOGO is not set # # Bootsplash configuration # CONFIG_BOOTSPLASH=y # # Sound # CONFIG_SOUND=y # # Advanced Linux Sound Architecture # CONFIG_SND=y CONFIG_SND_TIMER=y CONFIG_SND_PCM=y CONFIG_SND_HWDEP=y CONFIG_SND_RAWMIDI=y # CONFIG_SND_SEQUENCER is not set # CONFIG_SND_MIXER_OSS is not set # CONFIG_SND_PCM_OSS is not set # CONFIG_SND_RTCTIMER is not set # CONFIG_SND_DYNAMIC_MINORS is not set # CONFIG_SND_SUPPORT_OLD_API is not set # CONFIG_SND_VERBOSE_PROCFS is not set # CONFIG_SND_VERBOSE_PRINTK is not set # CONFIG_SND_DEBUG is not set # # Generic devices # CONFIG_SND_MPU401_UART=y CONFIG_SND_OPL3_LIB=y CONFIG_SND_OPL4_LIB=m CONFIG_SND_VX_LIB=y CONFIG_SND_AC97_CODEC=y # CONFIG_SND_DUMMY is not set # CONFIG_SND_MTPAV is not set # CONFIG_SND_MTS64 is not set # CONFIG_SND_SERIAL_U16550 is not set # CONFIG_SND_MPU401 is not set # CONFIG_SND_PORTMAN2X4 is not set # # ISA devices # CONFIG_SND_AD1848_LIB=m CONFIG_SND_CS4231_LIB=m CONFIG_SND_ADLIB=m CONFIG_SND_AD1816A=m CONFIG_SND_AD1848=m CONFIG_SND_ALS100=m CONFIG_SND_AZT2320=m CONFIG_SND_CMI8330=m CONFIG_SND_CS4231=m CONFIG_SND_CS4232=m CONFIG_SND_CS4236=m CONFIG_SND_DT019X=m CONFIG_SND_ES968=m CONFIG_SND_ES1688=m CONFIG_SND_ES18XX=m CONFIG_SND_GUS_SYNTH=m CONFIG_SND_GUSCLASSIC=m CONFIG_SND_GUSEXTREME=m CONFIG_SND_GUSMAX=m CONFIG_SND_INTERWAVE=m CONFIG_SND_INTERWAVE_STB=m CONFIG_SND_OPL3SA2=m CONFIG_SND_OPTI92X_AD1848=m CONFIG_SND_OPTI92X_CS4231=m CONFIG_SND_OPTI93X=m CONFIG_SND_MIRO=m CONFIG_SND_SB8=m CONFIG_SND_SB16=m CONFIG_SND_SBAWE=m CONFIG_SND_SB16_CSP=y CONFIG_SND_SGALAXY=m CONFIG_SND_SSCAPE=m CONFIG_SND_WAVEFRONT=m # # PCI devices # CONFIG_SND_AD1889=y CONFIG_SND_ALS300=y CONFIG_SND_ALS4000=y CONFIG_SND_ALI5451=y CONFIG_SND_ATIIXP=y # CONFIG_SND_ATIIXP_MODEM is not set CONFIG_SND_AU8810=y CONFIG_SND_AU8820=y CONFIG_SND_AU8830=y CONFIG_SND_AZT3328=y # CONFIG_SND_BT87X is not set CONFIG_SND_CA0106=y CONFIG_SND_CMIPCI=y CONFIG_SND_CS4281=y CONFIG_SND_CS46XX=y CONFIG_SND_CS46XX_NEW_DSP=y CONFIG_SND_CS5535AUDIO=y # CONFIG_SND_DARLA20 is not set # CONFIG_SND_GINA20 is not set # CONFIG_SND_LAYLA20 is not set # CONFIG_SND_DARLA24 is not set # CONFIG_SND_GINA24 is not set # CONFIG_SND_LAYLA24 is not set # CONFIG_SND_MONA is not set # CONFIG_SND_MIA is not set # CONFIG_SND_ECHO3G is not set # CONFIG_SND_INDIGO is not set # CONFIG_SND_INDIGOIO is not set # CONFIG_SND_INDIGODJ is not set CONFIG_SND_EMU10K1=y CONFIG_SND_EMU10K1X=y CONFIG_SND_ENS1370=y CONFIG_SND_ENS1371=y CONFIG_SND_ES1938=y CONFIG_SND_ES1968=y CONFIG_SND_FM801=y # CONFIG_SND_FM801_TEA575X_BOOL is not set CONFIG_SND_HDA_INTEL=y # CONFIG_SND_HDSP is not set # CONFIG_SND_HDSPM is not set CONFIG_SND_ICE1712=y CONFIG_SND_ICE1724=y CONFIG_SND_INTEL8X0=y CONFIG_SND_INTEL8X0M=y # CONFIG_SND_KORG1212 is not set CONFIG_SND_MAESTRO3=y # CONFIG_SND_MIXART is not set CONFIG_SND_NM256=y # CONFIG_SND_PCXHR is not set CONFIG_SND_RIPTIDE=y # CONFIG_SND_RME32 is not set # CONFIG_SND_RME96 is not set # CONFIG_SND_RME9652 is not set CONFIG_SND_SONICVIBES=y CONFIG_SND_TRIDENT=y CONFIG_SND_VIA82XX=y # CONFIG_SND_VIA82XX_MODEM is not set CONFIG_SND_VX222=y CONFIG_SND_YMFPCI=y # CONFIG_SND_AC97_POWER_SAVE is not set # # USB devices # CONFIG_SND_USB_AUDIO=y # CONFIG_SND_USB_USX2Y is not set # # SoC audio support # # CONFIG_SND_SOC is not set # # Open Sound System # # CONFIG_SOUND_PRIME is not set CONFIG_AC97_BUS=y # # HID Devices # CONFIG_HID=y # CONFIG_HID_DEBUG is not set # # USB support # CONFIG_USB_ARCH_HAS_HCD=y CONFIG_USB_ARCH_HAS_OHCI=y CONFIG_USB_ARCH_HAS_EHCI=y CONFIG_USB=y # CONFIG_USB_DEBUG is not set # # Miscellaneous USB options # CONFIG_USB_DEVICEFS=y # CONFIG_USB_DYNAMIC_MINORS is not set # CONFIG_USB_SUSPEND is not set # CONFIG_USB_OTG is not set # # USB Host Controller Drivers # CONFIG_USB_EHCI_HCD=y # CONFIG_USB_EHCI_SPLIT_ISO is not set # CONFIG_USB_EHCI_ROOT_HUB_TT is not set # CONFIG_USB_EHCI_TT_NEWSCHED is not set # CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set # CONFIG_USB_ISP116X_HCD is not set CONFIG_USB_OHCI_HCD=y # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set CONFIG_USB_OHCI_LITTLE_ENDIAN=y CONFIG_USB_UHCI_HCD=y # CONFIG_USB_SL811_HCD is not set # # USB Device Class drivers # # CONFIG_USB_ACM is not set # CONFIG_USB_PRINTER is not set # # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' # # # may also be needed; see USB_STORAGE Help for more information # CONFIG_USB_STORAGE=y # CONFIG_USB_STORAGE_DEBUG is not set CONFIG_USB_STORAGE_DATAFAB=y CONFIG_USB_STORAGE_FREECOM=y CONFIG_USB_STORAGE_ISD200=y CONFIG_USB_STORAGE_DPCM=y CONFIG_USB_STORAGE_USBAT=y CONFIG_USB_STORAGE_SDDR09=y CONFIG_USB_STORAGE_SDDR55=y CONFIG_USB_STORAGE_JUMPSHOT=y CONFIG_USB_STORAGE_ALAUDA=y CONFIG_USB_STORAGE_KARMA=y # CONFIG_USB_LIBUSUAL is not set # # USB Input Devices # CONFIG_USB_HID=y # CONFIG_USB_HIDINPUT_POWERBOOK is not set # CONFIG_HID_FF is not set # CONFIG_USB_HIDDEV is not set # CONFIG_USB_AIPTEK is not set # CONFIG_USB_WACOM is not set # CONFIG_USB_ACECAD is not set # CONFIG_USB_KBTAB is not set # CONFIG_USB_POWERMATE is not set # CONFIG_USB_TOUCHSCREEN is not set # CONFIG_USB_YEALINK is not set CONFIG_USB_XPAD=y # CONFIG_USB_ATI_REMOTE is not set # CONFIG_USB_ATI_REMOTE2 is not set # CONFIG_USB_KEYSPAN_REMOTE is not set # CONFIG_USB_APPLETOUCH is not set # CONFIG_USB_GTCO is not set # # USB Imaging devices # # CONFIG_USB_MDC800 is not set # CONFIG_USB_MICROTEK is not set # # USB Network Adapters # # CONFIG_USB_CATC is not set # CONFIG_USB_KAWETH is not set CONFIG_USB_PEGASUS=y CONFIG_USB_RTL8150=y # CONFIG_USB_USBNET_MII is not set # CONFIG_USB_USBNET is not set # CONFIG_USB_MON is not set # # USB port drivers # # CONFIG_USB_USS720 is not set # # USB Serial Converter support # CONFIG_USB_SERIAL=y # CONFIG_USB_SERIAL_CONSOLE is not set # CONFIG_USB_SERIAL_GENERIC is not set # CONFIG_USB_SERIAL_AIRCABLE is not set # CONFIG_USB_SERIAL_AIRPRIME is not set CONFIG_USB_SERIAL_ARK3116=y CONFIG_USB_SERIAL_BELKIN=y # CONFIG_USB_SERIAL_WHITEHEAT is not set CONFIG_USB_SERIAL_DIGI_ACCELEPORT=y CONFIG_USB_SERIAL_CP2101=y # CONFIG_USB_SERIAL_CYPRESS_M8 is not set # CONFIG_USB_SERIAL_EMPEG is not set CONFIG_USB_SERIAL_FTDI_SIO=y CONFIG_USB_SERIAL_FUNSOFT=y # CONFIG_USB_SERIAL_VISOR is not set # CONFIG_USB_SERIAL_IPAQ is not set # CONFIG_USB_SERIAL_IR is not set # CONFIG_USB_SERIAL_EDGEPORT is not set # CONFIG_USB_SERIAL_EDGEPORT_TI is not set # CONFIG_USB_SERIAL_GARMIN is not set # CONFIG_USB_SERIAL_IPW is not set # CONFIG_USB_SERIAL_KEYSPAN_PDA is not set # CONFIG_USB_SERIAL_KEYSPAN is not set # CONFIG_USB_SERIAL_KLSI is not set # CONFIG_USB_SERIAL_KOBIL_SCT is not set # CONFIG_USB_SERIAL_MCT_U232 is not set # CONFIG_USB_SERIAL_MOS7720 is not set # CONFIG_USB_SERIAL_MOS7840 is not set # CONFIG_USB_SERIAL_NAVMAN is not set # CONFIG_USB_SERIAL_PL2303 is not set # CONFIG_USB_SERIAL_HP4X is not set # CONFIG_USB_SERIAL_SAFE is not set # CONFIG_USB_SERIAL_SIERRAWIRELESS is not set # CONFIG_USB_SERIAL_TI is not set # CONFIG_USB_SERIAL_CYBERJACK is not set # CONFIG_USB_SERIAL_XIRCOM is not set # CONFIG_USB_SERIAL_OPTION is not set # CONFIG_USB_SERIAL_OMNINET is not set # CONFIG_USB_SERIAL_DEBUG is not set # # USB Miscellaneous drivers # # CONFIG_USB_EMI62 is not set # CONFIG_USB_EMI26 is not set # CONFIG_USB_ADUTUX is not set # CONFIG_USB_AUERSWALD is not set # CONFIG_USB_RIO500 is not set # CONFIG_USB_LEGOTOWER is not set # CONFIG_USB_LCD is not set # CONFIG_USB_BERRY_CHARGE is not set # CONFIG_USB_LED is not set # CONFIG_USB_CYPRESS_CY7C63 is not set # CONFIG_USB_CYTHERM is not set # CONFIG_USB_PHIDGET is not set # CONFIG_USB_IDMOUSE is not set # CONFIG_USB_FTDI_ELAN is not set # CONFIG_USB_APPLEDISPLAY is not set # CONFIG_USB_SISUSBVGA is not set # CONFIG_USB_LD is not set # CONFIG_USB_TRANCEVIBRATOR is not set # CONFIG_USB_IOWARRIOR is not set # CONFIG_USB_TEST is not set # # USB DSL modem support # # # USB Gadget Support # # CONFIG_USB_GADGET is not set # # MMC/SD Card support # # CONFIG_MMC is not set # # LED devices # # CONFIG_NEW_LEDS is not set # # LED drivers # # # LED Triggers # # # InfiniBand support # # CONFIG_INFINIBAND is not set # # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) # # CONFIG_EDAC is not set # # Real Time Clock # # CONFIG_RTC_CLASS is not set # # DMA Engine support # CONFIG_DMA_ENGINE=y # # DMA Clients # CONFIG_NET_DMA=y # # DMA Devices # # CONFIG_INTEL_IOATDMA is not set # # Auxiliary Display support # # CONFIG_KS0108 is not set # # Virtualization # # CONFIG_KVM is not set # # File systems # CONFIG_EXT2_FS=y # CONFIG_EXT2_FS_XATTR is not set # CONFIG_EXT2_FS_XIP is not set CONFIG_EXT3_FS=y # CONFIG_EXT3_FS_XATTR is not set # CONFIG_EXT4DEV_FS is not set CONFIG_JBD=y # CONFIG_JBD_DEBUG is not set CONFIG_REISERFS_FS=y # CONFIG_REISERFS_CHECK is not set # CONFIG_REISERFS_PROC_INFO is not set # CONFIG_REISERFS_FS_XATTR is not set CONFIG_JFS_FS=y # CONFIG_JFS_POSIX_ACL is not set # CONFIG_JFS_SECURITY is not set # CONFIG_JFS_DEBUG is not set # CONFIG_JFS_STATISTICS is not set # CONFIG_FS_POSIX_ACL is not set # CONFIG_XFS_FS is not set # CONFIG_GFS2_FS is not set # CONFIG_OCFS2_FS is not set # CONFIG_MINIX_FS is not set # CONFIG_ROMFS_FS is not set CONFIG_INOTIFY=y CONFIG_INOTIFY_USER=y # CONFIG_QUOTA is not set # CONFIG_DNOTIFY is not set # CONFIG_AUTOFS_FS is not set # CONFIG_AUTOFS4_FS is not set CONFIG_FUSE_FS=y # # CD-ROM/DVD Filesystems # CONFIG_ISO9660_FS=y CONFIG_JOLIET=y CONFIG_ZISOFS=y CONFIG_UDF_FS=y CONFIG_UDF_NLS=y # # DOS/FAT/NT Filesystems # CONFIG_FAT_FS=y # CONFIG_MSDOS_FS is not set CONFIG_VFAT_FS=y CONFIG_FAT_DEFAULT_CODEPAGE=850 CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" CONFIG_NTFS_FS=y # CONFIG_NTFS_DEBUG is not set # CONFIG_NTFS_RW is not set # # Pseudo filesystems # CONFIG_PROC_FS=y CONFIG_PROC_KCORE=y CONFIG_PROC_SYSCTL=y CONFIG_SYSFS=y # CONFIG_TMPFS is not set # CONFIG_HUGETLBFS is not set # CONFIG_HUGETLB_PAGE is not set CONFIG_RAMFS=y # CONFIG_CONFIGFS_FS is not set # # Miscellaneous filesystems # # CONFIG_ADFS_FS is not set # CONFIG_AFFS_FS is not set CONFIG_HFS_FS=y CONFIG_HFSPLUS_FS=y # CONFIG_BEFS_FS is not set # CONFIG_BFS_FS is not set # CONFIG_EFS_FS is not set # CONFIG_CRAMFS is not set # CONFIG_VXFS_FS is not set # CONFIG_HPFS_FS is not set # CONFIG_QNX4FS_FS is not set # CONFIG_SYSV_FS is not set CONFIG_UFS_FS=y # CONFIG_UFS_FS_WRITE is not set # CONFIG_UFS_DEBUG is not set # # Network File Systems # CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set # CONFIG_NFS_V4 is not set # CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set CONFIG_LOCKD=y CONFIG_NFS_COMMON=y CONFIG_SUNRPC=y # CONFIG_RPCSEC_GSS_KRB5 is not set # CONFIG_RPCSEC_GSS_SPKM3 is not set CONFIG_SMB_FS=y # CONFIG_SMB_NLS_DEFAULT is not set CONFIG_CIFS=y # CONFIG_CIFS_STATS is not set # CONFIG_CIFS_WEAK_PW_HASH is not set # CONFIG_CIFS_XATTR is not set # CONFIG_CIFS_DEBUG2 is not set # CONFIG_CIFS_EXPERIMENTAL is not set # CONFIG_NCP_FS is not set # CONFIG_CODA_FS is not set # CONFIG_AFS_FS is not set # CONFIG_9P_FS is not set # # Partition Types # CONFIG_PARTITION_ADVANCED=y # CONFIG_ACORN_PARTITION is not set # CONFIG_OSF_PARTITION is not set # CONFIG_AMIGA_PARTITION is not set # CONFIG_ATARI_PARTITION is not set CONFIG_MAC_PARTITION=y CONFIG_MSDOS_PARTITION=y # CONFIG_BSD_DISKLABEL is not set # CONFIG_MINIX_SUBPARTITION is not set # CONFIG_SOLARIS_X86_PARTITION is not set # CONFIG_UNIXWARE_DISKLABEL is not set # CONFIG_LDM_PARTITION is not set # CONFIG_SGI_PARTITION is not set # CONFIG_ULTRIX_PARTITION is not set # CONFIG_SUN_PARTITION is not set # CONFIG_KARMA_PARTITION is not set # CONFIG_EFI_PARTITION is not set # # Native Language Support # CONFIG_NLS=y CONFIG_NLS_DEFAULT="utf8" # CONFIG_NLS_CODEPAGE_437 is not set # CONFIG_NLS_CODEPAGE_737 is not set # CONFIG_NLS_CODEPAGE_775 is not set CONFIG_NLS_CODEPAGE_850=y # CONFIG_NLS_CODEPAGE_852 is not set # CONFIG_NLS_CODEPAGE_855 is not set # CONFIG_NLS_CODEPAGE_857 is not set # CONFIG_NLS_CODEPAGE_860 is not set # CONFIG_NLS_CODEPAGE_861 is not set # CONFIG_NLS_CODEPAGE_862 is not set # CONFIG_NLS_CODEPAGE_863 is not set # CONFIG_NLS_CODEPAGE_864 is not set # CONFIG_NLS_CODEPAGE_865 is not set # CONFIG_NLS_CODEPAGE_866 is not set # CONFIG_NLS_CODEPAGE_869 is not set # CONFIG_NLS_CODEPAGE_936 is not set # CONFIG_NLS_CODEPAGE_950 is not set # CONFIG_NLS_CODEPAGE_932 is not set # CONFIG_NLS_CODEPAGE_949 is not set # CONFIG_NLS_CODEPAGE_874 is not set # CONFIG_NLS_ISO8859_8 is not set # CONFIG_NLS_CODEPAGE_1250 is not set # CONFIG_NLS_CODEPAGE_1251 is not set # CONFIG_NLS_ASCII is not set CONFIG_NLS_ISO8859_1=y # CONFIG_NLS_ISO8859_2 is not set # CONFIG_NLS_ISO8859_3 is not set # CONFIG_NLS_ISO8859_4 is not set # CONFIG_NLS_ISO8859_5 is not set # CONFIG_NLS_ISO8859_6 is not set # CONFIG_NLS_ISO8859_7 is not set # CONFIG_NLS_ISO8859_9 is not set # CONFIG_NLS_ISO8859_13 is not set # CONFIG_NLS_ISO8859_14 is not set # CONFIG_NLS_ISO8859_15 is not set # CONFIG_NLS_KOI8_R is not set # CONFIG_NLS_KOI8_U is not set CONFIG_NLS_UTF8=y # # Distributed Lock Manager # # CONFIG_DLM is not set # # Instrumentation Support # # CONFIG_PROFILING is not set # # Kernel hacking # CONFIG_TRACE_IRQFLAGS_SUPPORT=y # CONFIG_PRINTK_TIME is not set # CONFIG_ENABLE_MUST_CHECK is not set # CONFIG_MAGIC_SYSRQ is not set # CONFIG_UNUSED_SYMBOLS is not set # CONFIG_DEBUG_FS is not set # CONFIG_HEADERS_CHECK is not set # CONFIG_DEBUG_KERNEL is not set CONFIG_LOG_BUF_SHIFT=14 # CONFIG_DEBUG_BUGVERBOSE is not set CONFIG_EARLY_PRINTK=y CONFIG_X86_FIND_SMP_CONFIG=y CONFIG_X86_MPPARSE=y # CONFIG_DOUBLEFAULT is not set # # Security options # # CONFIG_KEYS is not set # CONFIG_SECURITY is not set # # Cryptographic options # CONFIG_CRYPTO=y CONFIG_CRYPTO_ALGAPI=y CONFIG_CRYPTO_BLKCIPHER=y CONFIG_CRYPTO_HASH=y CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_HMAC=y # CONFIG_CRYPTO_XCBC is not set # CONFIG_CRYPTO_NULL is not set # CONFIG_CRYPTO_MD4 is not set # CONFIG_CRYPTO_MD5 is not set # CONFIG_CRYPTO_SHA1 is not set # CONFIG_CRYPTO_SHA256 is not set # CONFIG_CRYPTO_SHA512 is not set # CONFIG_CRYPTO_WP512 is not set # CONFIG_CRYPTO_TGR192 is not set # CONFIG_CRYPTO_GF128MUL is not set CONFIG_CRYPTO_ECB=y # CONFIG_CRYPTO_CBC is not set # CONFIG_CRYPTO_PCBC is not set # CONFIG_CRYPTO_LRW is not set # CONFIG_CRYPTO_DES is not set # CONFIG_CRYPTO_FCRYPT is not set # CONFIG_CRYPTO_BLOWFISH is not set # CONFIG_CRYPTO_TWOFISH is not set # CONFIG_CRYPTO_TWOFISH_586 is not set # CONFIG_CRYPTO_SERPENT is not set CONFIG_CRYPTO_AES=y # CONFIG_CRYPTO_AES_586 is not set # CONFIG_CRYPTO_CAST5 is not set # CONFIG_CRYPTO_CAST6 is not set # CONFIG_CRYPTO_TEA is not set CONFIG_CRYPTO_ARC4=y # CONFIG_CRYPTO_KHAZAD is not set # CONFIG_CRYPTO_ANUBIS is not set # CONFIG_CRYPTO_DEFLATE is not set CONFIG_CRYPTO_MICHAEL_MIC=y # CONFIG_CRYPTO_CRC32C is not set # CONFIG_CRYPTO_CAMELLIA is not set # CONFIG_CRYPTO_TEST is not set # # Hardware crypto devices # # CONFIG_CRYPTO_DEV_PADLOCK is not set CONFIG_CRYPTO_DEV_GEODE=m # # Library routines # CONFIG_BITREVERSE=y CONFIG_CRC_CCITT=y # CONFIG_CRC16 is not set CONFIG_CRC32=y # CONFIG_LIBCRC32C is not set CONFIG_ZLIB_INFLATE=y CONFIG_HAS_IOMEM=y CONFIG_HAS_IOPORT=y CONFIG_GENERIC_HARDIRQS=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_X86_BIOS_REBOOT=y CONFIG_KTIME_SCALAR=y geexbox-1.1/packages/linux/config/linux.powerpc.conf0000644000175000017500000012625610641745505020777 0ustar benben# # Automatically generated make config: don't edit # Linux kernel version: 2.6.21.1 # # CONFIG_PPC64 is not set CONFIG_PPC32=y CONFIG_PPC_MERGE=y CONFIG_MMU=y CONFIG_GENERIC_HARDIRQS=y CONFIG_IRQ_PER_CPU=y CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_ARCH_HAS_ILOG2_U32=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_PPC=y CONFIG_EARLY_PRINTK=y CONFIG_GENERIC_NVRAM=y CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y CONFIG_PPC_OF=y CONFIG_PPC_UDBG_16550=y # CONFIG_GENERIC_TBSYNC is not set CONFIG_AUDIT_ARCH=y CONFIG_GENERIC_BUG=y # CONFIG_DEFAULT_UIMAGE is not set # # Processor support # CONFIG_CLASSIC32=y # CONFIG_PPC_82xx is not set # CONFIG_PPC_83xx is not set # CONFIG_PPC_85xx is not set # CONFIG_PPC_86xx is not set # CONFIG_PPC_8xx is not set # CONFIG_40x is not set # CONFIG_44x is not set # CONFIG_E200 is not set CONFIG_6xx=y CONFIG_PPC_FPU=y # CONFIG_PPC_DCR_NATIVE is not set # CONFIG_PPC_DCR_MMIO is not set CONFIG_ALTIVEC=y CONFIG_PPC_STD_MMU=y CONFIG_PPC_STD_MMU_32=y # CONFIG_SMP is not set CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" # # Code maturity level options # CONFIG_EXPERIMENTAL=y CONFIG_BROKEN_ON_SMP=y CONFIG_INIT_ENV_ARG_LIMIT=32 # # General setup # CONFIG_LOCALVERSION="" # CONFIG_LOCALVERSION_AUTO is not set # CONFIG_SWAP is not set # CONFIG_SYSVIPC is not set # CONFIG_POSIX_MQUEUE is not set # CONFIG_BSD_PROCESS_ACCT is not set # CONFIG_TASKSTATS is not set # CONFIG_UTS_NS is not set # CONFIG_AUDIT is not set # CONFIG_IKCONFIG is not set # CONFIG_SYSFS_DEPRECATED is not set # CONFIG_RELAY is not set CONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE="" CONFIG_CC_OPTIMIZE_FOR_SIZE=y CONFIG_SYSCTL=y CONFIG_EMBEDDED=y # CONFIG_SYSCTL_SYSCALL is not set # CONFIG_KALLSYMS is not set CONFIG_HOTPLUG=y CONFIG_PRINTK=y CONFIG_BUG=y # CONFIG_ELF_CORE is not set CONFIG_BASE_FULL=y # CONFIG_FUTEX is not set # CONFIG_EPOLL is not set CONFIG_SHMEM=y CONFIG_SLAB=y # CONFIG_VM_EVENT_COUNTERS is not set # CONFIG_TINY_SHMEM is not set CONFIG_BASE_SMALL=0 # CONFIG_SLOB is not set # # Loadable module support # CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y # CONFIG_MODULE_FORCE_UNLOAD is not set # CONFIG_MODVERSIONS is not set # CONFIG_MODULE_SRCVERSION_ALL is not set # CONFIG_KMOD is not set # # Block layer # CONFIG_BLOCK=y # CONFIG_LBD is not set # CONFIG_BLK_DEV_IO_TRACE is not set # CONFIG_LSF is not set # # IO Schedulers # CONFIG_IOSCHED_NOOP=y # CONFIG_IOSCHED_AS is not set CONFIG_IOSCHED_DEADLINE=y # CONFIG_IOSCHED_CFQ is not set # CONFIG_DEFAULT_AS is not set CONFIG_DEFAULT_DEADLINE=y # CONFIG_DEFAULT_CFQ is not set # CONFIG_DEFAULT_NOOP is not set CONFIG_DEFAULT_IOSCHED="deadline" # # Platform support # CONFIG_PPC_MULTIPLATFORM=y # CONFIG_EMBEDDED6xx is not set # CONFIG_APUS is not set CONFIG_PPC_CHRP=y # CONFIG_PPC_MPC52xx is not set # CONFIG_PPC_MPC5200 is not set # CONFIG_PPC_EFIKA is not set # CONFIG_PPC_LITE5200 is not set CONFIG_PPC_PMAC=y # CONFIG_PPC_CELL is not set # CONFIG_PPC_CELL_NATIVE is not set CONFIG_PPC_NATIVE=y # CONFIG_UDBG_RTAS_CONSOLE is not set CONFIG_PPC_RTAS=y # CONFIG_RTAS_ERROR_LOGGING is not set # CONFIG_RTAS_PROC is not set # CONFIG_MMIO_NVRAM is not set CONFIG_PPC_MPC106=y # CONFIG_PPC_970_NAP is not set # CONFIG_PPC_INDIRECT_IO is not set # CONFIG_GENERIC_IOMAP is not set CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_TABLE=y # CONFIG_CPU_FREQ_DEBUG is not set # CONFIG_CPU_FREQ_STAT is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y # CONFIG_CPU_FREQ_GOV_PERFORMANCE is not set # CONFIG_CPU_FREQ_GOV_POWERSAVE is not set CONFIG_CPU_FREQ_GOV_USERSPACE=y # CONFIG_CPU_FREQ_GOV_ONDEMAND is not set # CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set CONFIG_CPU_FREQ_PMAC=y # CONFIG_PPC601_SYNC_FIX is not set # CONFIG_TAU is not set # CONFIG_WANT_EARLY_SERIAL is not set CONFIG_MPIC=y # # Kernel options # # CONFIG_HIGHMEM is not set # CONFIG_HZ_100 is not set # CONFIG_HZ_250 is not set CONFIG_HZ_300=y # CONFIG_HZ_1000 is not set CONFIG_HZ=300 CONFIG_PREEMPT_NONE=y # CONFIG_PREEMPT_VOLUNTARY is not set # CONFIG_PREEMPT is not set CONFIG_BINFMT_ELF=y # CONFIG_BINFMT_MISC is not set CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y # CONFIG_KEXEC is not set CONFIG_ARCH_FLATMEM_ENABLE=y CONFIG_ARCH_POPULATES_NODE_MAP=y CONFIG_SELECT_MEMORY_MODEL=y CONFIG_FLATMEM_MANUAL=y # CONFIG_DISCONTIGMEM_MANUAL is not set # CONFIG_SPARSEMEM_MANUAL is not set CONFIG_FLATMEM=y CONFIG_FLAT_NODE_MEM_MAP=y # CONFIG_SPARSEMEM_STATIC is not set CONFIG_SPLIT_PTLOCK_CPUS=4 # CONFIG_RESOURCES_64BIT is not set CONFIG_ZONE_DMA_FLAG=1 # CONFIG_PROC_DEVICETREE is not set # CONFIG_CMDLINE_BOOL is not set CONFIG_PM=y CONFIG_PM_LEGACY=y # CONFIG_PM_DEBUG is not set # CONFIG_PM_SYSFS_DEPRECATED is not set # CONFIG_SECCOMP is not set CONFIG_ISA_DMA_API=y # # Bus options # # CONFIG_ISA is not set CONFIG_ZONE_DMA=y CONFIG_GENERIC_ISA_DMA=y # CONFIG_MPIC_WEIRD is not set CONFIG_PPC_I8259=y CONFIG_PPC_INDIRECT_PCI=y CONFIG_PCI=y CONFIG_PCI_DOMAINS=y # CONFIG_PCIEPORTBUS is not set # # PCCARD (PCMCIA/CardBus) support # CONFIG_PCCARD=y # CONFIG_PCMCIA_DEBUG is not set # CONFIG_PCMCIA is not set CONFIG_CARDBUS=y # # PC-card bridges # CONFIG_YENTA=y CONFIG_YENTA_O2=y CONFIG_YENTA_RICOH=y CONFIG_YENTA_TI=y # CONFIG_YENTA_ENE_TUNE is not set CONFIG_YENTA_TOSHIBA=y CONFIG_PCCARD_NONSTATIC=y # # PCI Hotplug Support # # CONFIG_HOTPLUG_PCI is not set # # Advanced setup # # CONFIG_ADVANCED_OPTIONS is not set # # Default settings for advanced configuration options are used # CONFIG_HIGHMEM_START=0xfe000000 CONFIG_LOWMEM_SIZE=0x30000000 CONFIG_KERNEL_START=0xc0000000 CONFIG_TASK_SIZE=0x80000000 CONFIG_BOOT_LOAD=0x00800000 # # Networking # CONFIG_NET=y # # Networking options # # CONFIG_NETDEBUG is not set CONFIG_PACKET=y # CONFIG_PACKET_MMAP is not set CONFIG_UNIX=y # CONFIG_NET_KEY is not set CONFIG_INET=y CONFIG_IP_MULTICAST=y # CONFIG_IP_ADVANCED_ROUTER is not set CONFIG_IP_FIB_HASH=y # CONFIG_IP_PNP is not set # CONFIG_NET_IPIP is not set # CONFIG_NET_IPGRE is not set # CONFIG_IP_MROUTE is not set # CONFIG_ARPD is not set # CONFIG_SYN_COOKIES is not set # CONFIG_INET_AH is not set # CONFIG_INET_ESP is not set # CONFIG_INET_IPCOMP is not set # CONFIG_INET_XFRM_TUNNEL is not set # CONFIG_INET_TUNNEL is not set # CONFIG_INET_XFRM_MODE_TRANSPORT is not set # CONFIG_INET_XFRM_MODE_TUNNEL is not set # CONFIG_INET_XFRM_MODE_BEET is not set # CONFIG_INET_DIAG is not set # CONFIG_TCP_CONG_ADVANCED is not set CONFIG_TCP_CONG_CUBIC=y CONFIG_DEFAULT_TCP_CONG="cubic" # CONFIG_TCP_MD5SIG is not set # CONFIG_IPV6 is not set # CONFIG_INET6_XFRM_TUNNEL is not set # CONFIG_INET6_TUNNEL is not set # CONFIG_NETWORK_SECMARK is not set # CONFIG_NETFILTER is not set # # DCCP Configuration (EXPERIMENTAL) # # CONFIG_IP_DCCP is not set # # SCTP Configuration (EXPERIMENTAL) # # CONFIG_IP_SCTP is not set # # TIPC Configuration (EXPERIMENTAL) # # CONFIG_TIPC is not set # CONFIG_ATM is not set # CONFIG_BRIDGE is not set # CONFIG_VLAN_8021Q is not set # CONFIG_DECNET is not set # CONFIG_LLC2 is not set # CONFIG_IPX is not set # CONFIG_ATALK is not set # CONFIG_X25 is not set # CONFIG_LAPB is not set # CONFIG_ECONET is not set # CONFIG_WAN_ROUTER is not set # # QoS and/or fair queueing # # CONFIG_NET_SCHED is not set # # Network testing # # CONFIG_NET_PKTGEN is not set # CONFIG_HAMRADIO is not set # CONFIG_IRDA is not set # CONFIG_BT is not set CONFIG_IEEE80211=y # CONFIG_IEEE80211_DEBUG is not set CONFIG_IEEE80211_CRYPT_WEP=y CONFIG_IEEE80211_CRYPT_CCMP=y CONFIG_IEEE80211_CRYPT_TKIP=y CONFIG_IEEE80211_SOFTMAC=y # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set CONFIG_WIRELESS_EXT=y # # Device Drivers # # # Generic Driver Options # CONFIG_STANDALONE=y CONFIG_PREVENT_FIRMWARE_BUILD=y CONFIG_FW_LOADER=y # CONFIG_SYS_HYPERVISOR is not set # # Connector - unified userspace <-> kernelspace linker # # CONFIG_CONNECTOR is not set # # Memory Technology Devices (MTD) # # CONFIG_MTD is not set # # Parallel port support # # CONFIG_PARPORT is not set # # Plug and Play support # # CONFIG_PNPACPI is not set # # Block devices # # CONFIG_BLK_DEV_FD is not set # CONFIG_MAC_FLOPPY is not set # CONFIG_BLK_CPQ_DA is not set # CONFIG_BLK_CPQ_CISS_DA is not set # CONFIG_BLK_DEV_DAC960 is not set # CONFIG_BLK_DEV_UMEM is not set # CONFIG_BLK_DEV_COW_COMMON is not set # CONFIG_BLK_DEV_LOOP is not set # CONFIG_BLK_DEV_NBD is not set CONFIG_BLK_DEV_SX8=y # CONFIG_BLK_DEV_UB is not set CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_SIZE=2048 CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 # CONFIG_CDROM_PKTCDVD is not set # CONFIG_ATA_OVER_ETH is not set # # Misc devices # # CONFIG_SGI_IOC4 is not set # CONFIG_TIFM_CORE is not set # # ATA/ATAPI/MFM/RLL support # CONFIG_IDE=y CONFIG_IDE_MAX_HWIFS=4 CONFIG_BLK_DEV_IDE=y # # Please see Documentation/ide.txt for help/info on IDE drives # # CONFIG_BLK_DEV_IDE_SATA is not set CONFIG_BLK_DEV_IDEDISK=y # CONFIG_IDEDISK_MULTI_MODE is not set # CONFIG_BLK_DEV_DELKIN is not set CONFIG_BLK_DEV_IDECD=y # CONFIG_BLK_DEV_IDETAPE is not set CONFIG_BLK_DEV_IDEFLOPPY=y # CONFIG_BLK_DEV_IDESCSI is not set # CONFIG_IDE_TASK_IOCTL is not set # # IDE chipset support/bugfixes # # CONFIG_IDE_GENERIC is not set # CONFIG_BLK_DEV_IDEPCI is not set CONFIG_BLK_DEV_IDEDMA_PCI=y # CONFIG_BLK_DEV_IDEDMA_FORCED is not set # CONFIG_IDEDMA_ONLYDISK is not set # CONFIG_BLK_DEV_AEC62XX is not set # CONFIG_BLK_DEV_ALI15X3 is not set # CONFIG_BLK_DEV_AMD74XX is not set # CONFIG_BLK_DEV_CMD64X is not set # CONFIG_BLK_DEV_TRIFLEX is not set # CONFIG_BLK_DEV_CY82C693 is not set # CONFIG_BLK_DEV_CS5520 is not set # CONFIG_BLK_DEV_CS5530 is not set # CONFIG_BLK_DEV_HPT34X is not set # CONFIG_BLK_DEV_HPT366 is not set # CONFIG_BLK_DEV_JMICRON is not set # CONFIG_BLK_DEV_SC1200 is not set # CONFIG_BLK_DEV_PIIX is not set # CONFIG_BLK_DEV_IT8213 is not set # CONFIG_BLK_DEV_IT821X is not set # CONFIG_BLK_DEV_NS87415 is not set # CONFIG_BLK_DEV_PDC202XX_OLD is not set # CONFIG_BLK_DEV_PDC202XX_NEW is not set # CONFIG_BLK_DEV_SVWKS is not set # CONFIG_BLK_DEV_SIIMAGE is not set # CONFIG_BLK_DEV_SL82C105 is not set # CONFIG_BLK_DEV_SLC90E66 is not set # CONFIG_BLK_DEV_TRM290 is not set # CONFIG_BLK_DEV_VIA82CXXX is not set # CONFIG_BLK_DEV_TC86C001 is not set CONFIG_BLK_DEV_IDE_PMAC=y CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y CONFIG_BLK_DEV_IDEDMA_PMAC=y # CONFIG_IDE_ARM is not set CONFIG_BLK_DEV_IDEDMA=y # CONFIG_IDEDMA_IVB is not set # CONFIG_BLK_DEV_HD is not set # # SCSI device support # # CONFIG_RAID_ATTRS is not set CONFIG_SCSI=y # CONFIG_SCSI_TGT is not set # CONFIG_SCSI_NETLINK is not set CONFIG_SCSI_PROC_FS=y # # SCSI support type (disk, tape, CD-ROM) # CONFIG_BLK_DEV_SD=y # CONFIG_CHR_DEV_ST is not set # CONFIG_CHR_DEV_OSST is not set CONFIG_BLK_DEV_SR=y # CONFIG_BLK_DEV_SR_VENDOR is not set CONFIG_CHR_DEV_SG=y # CONFIG_CHR_DEV_SCH is not set # # Some SCSI devices (e.g. CD jukebox) support multiple LUNs # CONFIG_SCSI_MULTI_LUN=y # CONFIG_SCSI_CONSTANTS is not set # CONFIG_SCSI_LOGGING is not set # CONFIG_SCSI_SCAN_ASYNC is not set # # SCSI Transports # CONFIG_SCSI_SPI_ATTRS=y # CONFIG_SCSI_FC_ATTRS is not set # CONFIG_SCSI_ISCSI_ATTRS is not set # CONFIG_SCSI_SAS_ATTRS is not set # CONFIG_SCSI_SAS_LIBSAS is not set # # SCSI low-level drivers # # CONFIG_ISCSI_TCP is not set # CONFIG_BLK_DEV_3W_XXXX_RAID is not set # CONFIG_SCSI_3W_9XXX is not set # CONFIG_SCSI_ACARD is not set # CONFIG_SCSI_AACRAID is not set CONFIG_SCSI_AIC7XXX=y CONFIG_AIC7XXX_CMDS_PER_DEVICE=253 CONFIG_AIC7XXX_RESET_DELAY_MS=15000 # CONFIG_AIC7XXX_DEBUG_ENABLE is not set CONFIG_AIC7XXX_DEBUG_MASK=0 # CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set # CONFIG_SCSI_AIC7XXX_OLD is not set # CONFIG_SCSI_AIC79XX is not set # CONFIG_SCSI_AIC94XX is not set # CONFIG_SCSI_DPT_I2O is not set # CONFIG_SCSI_ARCMSR is not set # CONFIG_MEGARAID_NEWGEN is not set # CONFIG_MEGARAID_LEGACY is not set # CONFIG_MEGARAID_SAS is not set # CONFIG_SCSI_HPTIOP is not set CONFIG_SCSI_BUSLOGIC=y CONFIG_SCSI_OMIT_FLASHPOINT=y # CONFIG_SCSI_DMX3191D is not set # CONFIG_SCSI_EATA is not set # CONFIG_SCSI_FUTURE_DOMAIN is not set # CONFIG_SCSI_GDTH is not set # CONFIG_SCSI_IPS is not set # CONFIG_SCSI_INITIO is not set # CONFIG_SCSI_INIA100 is not set # CONFIG_SCSI_STEX is not set CONFIG_SCSI_SYM53C8XX_2=y CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 # CONFIG_SCSI_SYM53C8XX_MMIO is not set # CONFIG_SCSI_IPR is not set # CONFIG_SCSI_QLOGIC_1280 is not set # CONFIG_SCSI_QLA_FC is not set # CONFIG_SCSI_QLA_ISCSI is not set # CONFIG_SCSI_LPFC is not set # CONFIG_SCSI_DC395x is not set CONFIG_SCSI_DC390T=y # CONFIG_SCSI_NSP32 is not set # CONFIG_SCSI_DEBUG is not set # CONFIG_SCSI_MESH is not set # CONFIG_SCSI_MAC53C94 is not set # CONFIG_SCSI_SRP is not set # # Serial ATA (prod) and Parallel ATA (experimental) drivers # CONFIG_ATA=y # CONFIG_ATA_NONSTANDARD is not set CONFIG_SATA_AHCI=y CONFIG_SATA_SVW=y CONFIG_ATA_PIIX=y CONFIG_SATA_MV=y CONFIG_SATA_NV=y CONFIG_PDC_ADMA=y CONFIG_SATA_QSTOR=y CONFIG_SATA_PROMISE=y CONFIG_SATA_SX4=y CONFIG_SATA_SIL=y CONFIG_SATA_SIL24=y CONFIG_SATA_SIS=y CONFIG_SATA_ULI=y CONFIG_SATA_VIA=y CONFIG_SATA_VITESSE=y # CONFIG_SATA_INIC162X is not set CONFIG_SATA_INTEL_COMBINED=y CONFIG_PATA_ALI=y CONFIG_PATA_AMD=y CONFIG_PATA_ARTOP=y CONFIG_PATA_ATIIXP=y CONFIG_PATA_CMD64X=y # CONFIG_PATA_CS5520 is not set CONFIG_PATA_CS5530=y CONFIG_PATA_CYPRESS=y CONFIG_PATA_EFAR=y CONFIG_ATA_GENERIC=y CONFIG_PATA_HPT366=y CONFIG_PATA_HPT37X=y CONFIG_PATA_HPT3X2N=y CONFIG_PATA_HPT3X3=y # CONFIG_PATA_IT821X is not set # CONFIG_PATA_IT8213 is not set CONFIG_PATA_JMICRON=y # CONFIG_PATA_TRIFLEX is not set CONFIG_PATA_MARVELL=y CONFIG_PATA_MPIIX=y CONFIG_PATA_OLDPIIX=y # CONFIG_PATA_NETCELL is not set CONFIG_PATA_NS87410=y # CONFIG_PATA_OPTI is not set # CONFIG_PATA_OPTIDMA is not set CONFIG_PATA_PDC_OLD=y # CONFIG_PATA_RADISYS is not set # CONFIG_PATA_RZ1000 is not set CONFIG_PATA_SC1200=y # CONFIG_PATA_SERVERWORKS is not set CONFIG_PATA_PDC2027X=y CONFIG_PATA_SIL680=y CONFIG_PATA_SIS=y CONFIG_PATA_VIA=y # CONFIG_PATA_WINBOND is not set CONFIG_PATA_PLATFORM=y # # Multi-device support (RAID and LVM) # # CONFIG_MD is not set # # Fusion MPT device support # # CONFIG_FUSION is not set # CONFIG_FUSION_SPI is not set # CONFIG_FUSION_FC is not set # CONFIG_FUSION_SAS is not set # # IEEE 1394 (FireWire) support # CONFIG_IEEE1394=y # # Subsystem Options # # CONFIG_IEEE1394_VERBOSEDEBUG is not set # CONFIG_IEEE1394_EXTRA_CONFIG_ROMS is not set # # Device Drivers # CONFIG_IEEE1394_PCILYNX=y CONFIG_IEEE1394_OHCI1394=y # # Protocol Drivers # # CONFIG_IEEE1394_VIDEO1394 is not set CONFIG_IEEE1394_SBP2=y # CONFIG_IEEE1394_ETH1394 is not set # CONFIG_IEEE1394_DV1394 is not set # CONFIG_IEEE1394_RAWIO is not set # # I2O device support # # CONFIG_I2O is not set # # Macintosh device drivers # CONFIG_ADB=y CONFIG_ADB_CUDA=y CONFIG_ADB_PMU=y # CONFIG_ADB_PMU_LED is not set # CONFIG_PMAC_APM_EMU is not set CONFIG_PMAC_MEDIABAY=y # CONFIG_PMAC_BACKLIGHT is not set # CONFIG_ADB_MACIO is not set CONFIG_INPUT_ADBHID=y # CONFIG_MAC_EMUMOUSEBTN is not set # CONFIG_THERM_WINDTUNNEL is not set # CONFIG_THERM_ADT746X is not set # CONFIG_WINDFARM is not set # CONFIG_ANSLCD is not set # CONFIG_PMAC_RACKMETER is not set # # Network device support # CONFIG_NETDEVICES=y # CONFIG_DUMMY is not set # CONFIG_BONDING is not set # CONFIG_EQUALIZER is not set # CONFIG_TUN is not set # # ARCnet devices # # CONFIG_ARCNET is not set # # PHY device support # # CONFIG_PHYLIB is not set # # Ethernet (10 or 100Mbit) # CONFIG_NET_ETHERNET=y CONFIG_MII=y CONFIG_MACE=y # CONFIG_MACE_AAUI_PORT is not set CONFIG_BMAC=y CONFIG_HAPPYMEAL=y CONFIG_SUNGEM=y CONFIG_CASSINI=y CONFIG_NET_VENDOR_3COM=y CONFIG_VORTEX=y CONFIG_TYPHOON=y # # Tulip family network device support # CONFIG_NET_TULIP=y # CONFIG_DE2104X is not set CONFIG_TULIP=y # CONFIG_TULIP_MWI is not set # CONFIG_TULIP_MMIO is not set # CONFIG_TULIP_NAPI is not set CONFIG_DE4X5=y # CONFIG_WINBOND_840 is not set CONFIG_DM9102=y CONFIG_ULI526X=y # CONFIG_PCMCIA_XIRCOM is not set # CONFIG_PCMCIA_XIRTULIP is not set # CONFIG_HP100 is not set CONFIG_NET_PCI=y CONFIG_PCNET32=y # CONFIG_PCNET32_NAPI is not set CONFIG_AMD8111_ETH=y # CONFIG_AMD8111E_NAPI is not set CONFIG_ADAPTEC_STARFIRE=y # CONFIG_ADAPTEC_STARFIRE_NAPI is not set CONFIG_B44=y CONFIG_FORCEDETH=y # CONFIG_FORCEDETH_NAPI is not set # CONFIG_DGRS is not set CONFIG_EEPRO100=y # CONFIG_E100 is not set # CONFIG_FEALNX is not set CONFIG_NATSEMI=y CONFIG_NE2K_PCI=y CONFIG_8139CP=y CONFIG_8139TOO=y # CONFIG_8139TOO_PIO is not set CONFIG_8139TOO_TUNE_TWISTER=y CONFIG_8139TOO_8129=y # CONFIG_8139_OLD_RX_RESET is not set CONFIG_SIS900=y CONFIG_EPIC100=y # CONFIG_SUNDANCE is not set # CONFIG_TLAN is not set CONFIG_VIA_RHINE=y # CONFIG_VIA_RHINE_MMIO is not set # CONFIG_VIA_RHINE_NAPI is not set # CONFIG_SC92031 is not set # # Ethernet (1000 Mbit) # CONFIG_ACENIC=y CONFIG_ACENIC_OMIT_TIGON_I=y # CONFIG_DL2K is not set CONFIG_E1000=y # CONFIG_E1000_NAPI is not set # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set # CONFIG_NS83820 is not set # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set CONFIG_R8169=y # CONFIG_R8169_NAPI is not set CONFIG_SIS190=y # CONFIG_SKGE is not set # CONFIG_SKY2 is not set CONFIG_SK98LIN=y CONFIG_VIA_VELOCITY=y CONFIG_TIGON3=y CONFIG_BNX2=y # CONFIG_MV643XX_ETH is not set # CONFIG_QLA3XXX is not set # CONFIG_ATL1 is not set # # Ethernet (10000 Mbit) # # CONFIG_CHELSIO_T1 is not set # CONFIG_CHELSIO_T3 is not set # CONFIG_IXGB is not set # CONFIG_S2IO is not set # CONFIG_MYRI10GE is not set # CONFIG_NETXEN_NIC is not set # # Token Ring devices # # CONFIG_TR is not set # # Wireless LAN (non-hamradio) # CONFIG_NET_RADIO=y # CONFIG_NET_WIRELESS_RTNETLINK is not set # # Obsolete Wireless cards support (pre-802.11) # # CONFIG_STRIP is not set # # Wireless 802.11b ISA/PCI cards support # CONFIG_IPW2100=m # CONFIG_IPW2100_MONITOR is not set # CONFIG_IPW2100_DEBUG is not set CONFIG_IPW2200=m # CONFIG_IPW2200_MONITOR is not set # CONFIG_IPW2200_QOS is not set # CONFIG_IPW2200_DEBUG is not set CONFIG_AIRO=y CONFIG_HERMES=y # CONFIG_APPLE_AIRPORT is not set CONFIG_PLX_HERMES=y CONFIG_TMD_HERMES=y CONFIG_NORTEL_HERMES=y CONFIG_PCI_HERMES=y CONFIG_ATMEL=m CONFIG_PCI_ATMEL=m # # Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support # CONFIG_PRISM54=y CONFIG_USB_ZD1201=m # CONFIG_HOSTAP is not set CONFIG_BCM43XX=m # CONFIG_BCM43XX_DEBUG is not set CONFIG_BCM43XX_DMA=y CONFIG_BCM43XX_PIO=y CONFIG_BCM43XX_DMA_AND_PIO_MODE=y # CONFIG_BCM43XX_DMA_MODE is not set # CONFIG_BCM43XX_PIO_MODE is not set CONFIG_ZD1211RW=m # CONFIG_ZD1211RW_DEBUG is not set CONFIG_NET_WIRELESS=y # # Wan interfaces # # CONFIG_WAN is not set # CONFIG_FDDI is not set # CONFIG_HIPPI is not set # CONFIG_PPP is not set # CONFIG_SLIP is not set # CONFIG_NET_FC is not set # CONFIG_SHAPER is not set # CONFIG_NETCONSOLE is not set # CONFIG_NETPOLL is not set # CONFIG_NET_POLL_CONTROLLER is not set # # ISDN subsystem # # CONFIG_ISDN is not set # # Telephony Support # # CONFIG_PHONE is not set # # Input device support # CONFIG_INPUT=y # CONFIG_INPUT_FF_MEMLESS is not set # # Userland interfaces # CONFIG_INPUT_MOUSEDEV=y CONFIG_INPUT_MOUSEDEV_PSAUX=y CONFIG_INPUT_MOUSEDEV_SCREEN_X=800 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=600 CONFIG_INPUT_JOYDEV=y # CONFIG_INPUT_TSDEV is not set # CONFIG_INPUT_EVDEV is not set # CONFIG_INPUT_EVBUG is not set # # Input Device Drivers # CONFIG_INPUT_KEYBOARD=y CONFIG_KEYBOARD_ATKBD=y # CONFIG_KEYBOARD_SUNKBD is not set # CONFIG_KEYBOARD_LKKBD is not set # CONFIG_KEYBOARD_XTKBD is not set # CONFIG_KEYBOARD_NEWTON is not set # CONFIG_KEYBOARD_STOWAWAY is not set CONFIG_INPUT_MOUSE=y CONFIG_MOUSE_PS2=y # CONFIG_MOUSE_SERIAL is not set # CONFIG_MOUSE_VSXXXAA is not set CONFIG_INPUT_JOYSTICK=y # CONFIG_JOYSTICK_ANALOG is not set # CONFIG_JOYSTICK_A3D is not set # CONFIG_JOYSTICK_ADI is not set # CONFIG_JOYSTICK_COBRA is not set # CONFIG_JOYSTICK_GF2K is not set CONFIG_JOYSTICK_GRIP=y # CONFIG_JOYSTICK_GRIP_MP is not set # CONFIG_JOYSTICK_GUILLEMOT is not set # CONFIG_JOYSTICK_INTERACT is not set CONFIG_JOYSTICK_SIDEWINDER=y # CONFIG_JOYSTICK_TMDC is not set # CONFIG_JOYSTICK_IFORCE is not set # CONFIG_JOYSTICK_WARRIOR is not set # CONFIG_JOYSTICK_MAGELLAN is not set # CONFIG_JOYSTICK_SPACEORB is not set # CONFIG_JOYSTICK_SPACEBALL is not set # CONFIG_JOYSTICK_STINGER is not set # CONFIG_JOYSTICK_TWIDJOY is not set # CONFIG_JOYSTICK_JOYDUMP is not set # CONFIG_INPUT_TOUCHSCREEN is not set # CONFIG_INPUT_MISC is not set # # Hardware I/O ports # CONFIG_SERIO=y # CONFIG_SERIO_I8042 is not set # CONFIG_SERIO_SERPORT is not set # CONFIG_SERIO_PCIPS2 is not set CONFIG_SERIO_LIBPS2=y # CONFIG_SERIO_RAW is not set CONFIG_GAMEPORT=y CONFIG_GAMEPORT_NS558=y # CONFIG_GAMEPORT_L4 is not set CONFIG_GAMEPORT_EMU10K1=y # CONFIG_GAMEPORT_FM801 is not set # # Character devices # CONFIG_VT=y CONFIG_VT_CONSOLE=y CONFIG_HW_CONSOLE=y # CONFIG_VT_HW_CONSOLE_BINDING is not set # CONFIG_SERIAL_NONSTANDARD is not set # # Serial drivers # CONFIG_SERIAL_8250=m CONFIG_SERIAL_8250_PCI=m CONFIG_SERIAL_8250_NR_UARTS=4 CONFIG_SERIAL_8250_RUNTIME_UARTS=4 # CONFIG_SERIAL_8250_EXTENDED is not set # # Non-8250 serial port support # # CONFIG_SERIAL_UARTLITE is not set CONFIG_SERIAL_CORE=m # CONFIG_SERIAL_PMACZILOG is not set # CONFIG_SERIAL_JSM is not set # CONFIG_SERIAL_OF_PLATFORM is not set # CONFIG_UNIX98_PTYS is not set CONFIG_LEGACY_PTYS=y CONFIG_LEGACY_PTY_COUNT=256 # CONFIG_BRIQ_PANEL is not set # CONFIG_HVC_RTAS is not set # # IPMI # # CONFIG_IPMI_HANDLER is not set # # Watchdog Cards # # CONFIG_WATCHDOG is not set CONFIG_HW_RANDOM=y # CONFIG_NVRAM is not set # CONFIG_GEN_RTC is not set # CONFIG_DTLK is not set # CONFIG_R3964 is not set # CONFIG_APPLICOM is not set # CONFIG_AGP is not set # CONFIG_DRM is not set # CONFIG_RAW_DRIVER is not set # # TPM devices # # CONFIG_TCG_TPM is not set # # I2C support # CONFIG_I2C=y # CONFIG_I2C_CHARDEV is not set # # I2C Algorithms # CONFIG_I2C_ALGOBIT=y # CONFIG_I2C_ALGOPCF is not set # CONFIG_I2C_ALGOPCA is not set # # I2C Hardware Bus support # # CONFIG_I2C_ALI1535 is not set # CONFIG_I2C_ALI1563 is not set # CONFIG_I2C_ALI15X3 is not set # CONFIG_I2C_AMD756 is not set # CONFIG_I2C_AMD8111 is not set # CONFIG_I2C_HYDRA is not set # CONFIG_I2C_I801 is not set # CONFIG_I2C_I810 is not set # CONFIG_I2C_PIIX4 is not set CONFIG_I2C_POWERMAC=y # CONFIG_I2C_MPC is not set # CONFIG_I2C_NFORCE2 is not set # CONFIG_I2C_OCORES is not set # CONFIG_I2C_PARPORT_LIGHT is not set # CONFIG_I2C_PROSAVAGE is not set # CONFIG_I2C_SAVAGE4 is not set # CONFIG_I2C_SIS5595 is not set # CONFIG_I2C_SIS630 is not set # CONFIG_I2C_SIS96X is not set # CONFIG_I2C_STUB is not set # CONFIG_I2C_VIA is not set # CONFIG_I2C_VIAPRO is not set # CONFIG_I2C_VOODOO3 is not set # CONFIG_I2C_PCA_ISA is not set # # Miscellaneous I2C Chip support # # CONFIG_SENSORS_DS1337 is not set # CONFIG_SENSORS_DS1374 is not set # CONFIG_SENSORS_EEPROM is not set # CONFIG_SENSORS_PCF8574 is not set # CONFIG_SENSORS_PCA9539 is not set # CONFIG_SENSORS_PCF8591 is not set # CONFIG_SENSORS_M41T00 is not set # CONFIG_SENSORS_MAX6875 is not set # CONFIG_I2C_DEBUG_CORE is not set # CONFIG_I2C_DEBUG_ALGO is not set # CONFIG_I2C_DEBUG_BUS is not set # CONFIG_I2C_DEBUG_CHIP is not set # # SPI support # # CONFIG_SPI is not set # CONFIG_SPI_MASTER is not set # # Dallas's 1-wire bus # # CONFIG_W1 is not set # # Hardware Monitoring support # # CONFIG_HWMON is not set # CONFIG_HWMON_VID is not set # # Multifunction device drivers # # CONFIG_MFD_SM501 is not set # # Multimedia devices # CONFIG_VIDEO_DEV=y CONFIG_VIDEO_V4L1=y CONFIG_VIDEO_V4L1_COMPAT=y CONFIG_VIDEO_V4L2=y # # Video Capture Adapters # # # Video Capture Adapters # # CONFIG_VIDEO_ADV_DEBUG is not set CONFIG_VIDEO_HELPER_CHIPS_AUTO=y CONFIG_VIDEO_TVAUDIO=m CONFIG_VIDEO_TDA7432=m CONFIG_VIDEO_TDA9875=m CONFIG_VIDEO_MSP3400=m CONFIG_VIDEO_WM8775=m CONFIG_VIDEO_SAA711X=m CONFIG_VIDEO_CX25840=m CONFIG_VIDEO_CX2341X=m # CONFIG_VIDEO_VIVI is not set CONFIG_VIDEO_BT848=m CONFIG_VIDEO_BT848_DVB=y # CONFIG_VIDEO_SAA6588 is not set # CONFIG_VIDEO_CPIA is not set # CONFIG_VIDEO_CPIA2 is not set # CONFIG_VIDEO_SAA5246A is not set # CONFIG_VIDEO_SAA5249 is not set # CONFIG_TUNER_3036 is not set # CONFIG_VIDEO_STRADIS is not set # CONFIG_VIDEO_ZORAN is not set CONFIG_VIDEO_SAA7134=m # CONFIG_VIDEO_SAA7134_ALSA is not set CONFIG_VIDEO_SAA7134_DVB=m # CONFIG_VIDEO_MXB is not set # CONFIG_VIDEO_DPC is not set # CONFIG_VIDEO_HEXIUM_ORION is not set # CONFIG_VIDEO_HEXIUM_GEMINI is not set CONFIG_VIDEO_CX88=m # CONFIG_VIDEO_CX88_ALSA is not set CONFIG_VIDEO_CX88_BLACKBIRD=m CONFIG_VIDEO_CX88_DVB=m CONFIG_VIDEO_CX88_VP3054=m # CONFIG_VIDEO_CAFE_CCIC is not set # # V4L USB devices # CONFIG_VIDEO_PVRUSB2=m CONFIG_VIDEO_PVRUSB2_29XXX=y CONFIG_VIDEO_PVRUSB2_24XXX=y CONFIG_VIDEO_PVRUSB2_SYSFS=y # CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set # CONFIG_VIDEO_EM28XX is not set # CONFIG_VIDEO_USBVISION is not set # CONFIG_USB_VICAM is not set # CONFIG_USB_IBMCAM is not set # CONFIG_USB_KONICAWC is not set # CONFIG_USB_QUICKCAM_MESSENGER is not set # CONFIG_USB_ET61X251 is not set # CONFIG_VIDEO_OVCAMCHIP is not set # CONFIG_USB_W9968CF is not set # CONFIG_USB_OV511 is not set # CONFIG_USB_SE401 is not set # CONFIG_USB_SN9C102 is not set # CONFIG_USB_STV680 is not set # CONFIG_USB_ZC0301 is not set # CONFIG_USB_PWC is not set # # Radio Adapters # CONFIG_RADIO_GEMTEK_PCI=y CONFIG_RADIO_MAXIRADIO=y CONFIG_RADIO_MAESTRO=y CONFIG_USB_DSBR=y # # Digital Video Broadcasting Devices # CONFIG_DVB=y CONFIG_DVB_CORE=y # CONFIG_DVB_CORE_ATTACH is not set # # Supported SAA7146 based PCI Adapters # CONFIG_DVB_AV7110=m CONFIG_DVB_AV7110_OSD=y CONFIG_DVB_BUDGET=m CONFIG_DVB_BUDGET_CI=m CONFIG_DVB_BUDGET_AV=m CONFIG_DVB_BUDGET_PATCH=m # # Supported USB Adapters # CONFIG_DVB_USB=m # CONFIG_DVB_USB_DEBUG is not set CONFIG_DVB_USB_A800=m CONFIG_DVB_USB_DIBUSB_MB=m CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y CONFIG_DVB_USB_DIBUSB_MC=m CONFIG_DVB_USB_DIB0700=m CONFIG_DVB_USB_UMT_010=m CONFIG_DVB_USB_CXUSB=m # CONFIG_DVB_USB_M920X is not set # CONFIG_DVB_USB_GL861 is not set # CONFIG_DVB_USB_AU6610 is not set CONFIG_DVB_USB_DIGITV=m CONFIG_DVB_USB_VP7045=m CONFIG_DVB_USB_VP702X=m # CONFIG_DVB_USB_GP8PSK is not set CONFIG_DVB_USB_NOVA_T_USB2=m CONFIG_DVB_USB_TTUSB2=m CONFIG_DVB_USB_DTT200U=m CONFIG_DVB_TTUSB_BUDGET=m CONFIG_DVB_TTUSB_DEC=m CONFIG_DVB_CINERGYT2=m # CONFIG_DVB_CINERGYT2_TUNING is not set # # Supported FlexCopII (B2C2) Adapters # CONFIG_DVB_B2C2_FLEXCOP=m CONFIG_DVB_B2C2_FLEXCOP_PCI=m CONFIG_DVB_B2C2_FLEXCOP_USB=m # CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set # # Supported BT878 Adapters # CONFIG_DVB_BT8XX=m # # Supported Pluto2 Adapters # CONFIG_DVB_PLUTO2=m # # Supported DVB Frontends # # # Customise DVB Frontends # # CONFIG_DVB_FE_CUSTOMISE is not set # # DVB-S (satellite) frontends # CONFIG_DVB_STV0299=m CONFIG_DVB_CX24110=m CONFIG_DVB_CX24123=m CONFIG_DVB_TDA8083=m CONFIG_DVB_MT312=m CONFIG_DVB_VES1X93=m CONFIG_DVB_S5H1420=m CONFIG_DVB_TDA10086=m # # DVB-T (terrestrial) frontends # CONFIG_DVB_SP8870=m CONFIG_DVB_SP887X=m CONFIG_DVB_CX22700=m CONFIG_DVB_CX22702=m CONFIG_DVB_L64781=m CONFIG_DVB_TDA1004X=m CONFIG_DVB_NXT6000=m CONFIG_DVB_MT352=m CONFIG_DVB_ZL10353=m CONFIG_DVB_DIB3000MB=m CONFIG_DVB_DIB3000MC=m CONFIG_DVB_DIB7000M=m CONFIG_DVB_DIB7000P=m # # DVB-C (cable) frontends # CONFIG_DVB_VES1820=m CONFIG_DVB_TDA10021=m CONFIG_DVB_STV0297=m # # ATSC (North American/Korean Terrestrial/Cable DTV) frontends # CONFIG_DVB_NXT200X=m CONFIG_DVB_OR51211=m CONFIG_DVB_OR51132=m CONFIG_DVB_BCM3510=m CONFIG_DVB_LGDT330X=m # # Tuners/PLL support # CONFIG_DVB_PLL=m CONFIG_DVB_TDA826X=m # CONFIG_DVB_TUNER_QT1010 is not set CONFIG_DVB_TUNER_MT2060=m CONFIG_DVB_TUNER_LGH06XF=m # # Miscellaneous devices # CONFIG_DVB_LNBP21=y CONFIG_DVB_ISL6421=y CONFIG_DVB_TUA6100=y CONFIG_VIDEO_SAA7146=m CONFIG_VIDEO_SAA7146_VV=m CONFIG_VIDEO_TUNER=m CONFIG_VIDEO_BUF=m CONFIG_VIDEO_BUF_DVB=m CONFIG_VIDEO_BTCX=m CONFIG_VIDEO_IR=m CONFIG_VIDEO_TVEEPROM=m # CONFIG_USB_DABUSB is not set # # Graphics support # CONFIG_BACKLIGHT_LCD_SUPPORT=y CONFIG_BACKLIGHT_CLASS_DEVICE=y CONFIG_LCD_CLASS_DEVICE=m CONFIG_FB=y # CONFIG_FIRMWARE_EDID is not set CONFIG_FB_DDC=y CONFIG_FB_CFB_FILLRECT=y CONFIG_FB_CFB_COPYAREA=y CONFIG_FB_CFB_IMAGEBLIT=y # CONFIG_FB_SVGALIB is not set CONFIG_FB_MACMODES=y CONFIG_FB_BACKLIGHT=y CONFIG_FB_MODE_HELPERS=y # CONFIG_FB_TILEBLITTING is not set # # Frame buffer hardware drivers # # CONFIG_FB_CIRRUS is not set # CONFIG_FB_PM2 is not set # CONFIG_FB_CYBER2000 is not set CONFIG_FB_OF=y # CONFIG_FB_CONTROL is not set # CONFIG_FB_PLATINUM is not set # CONFIG_FB_VALKYRIE is not set # CONFIG_FB_CT65550 is not set # CONFIG_FB_ASILIANT is not set # CONFIG_FB_IMSTT is not set # CONFIG_FB_VGA16 is not set # CONFIG_FB_S1D13XXX is not set CONFIG_FB_NVIDIA=y CONFIG_FB_NVIDIA_I2C=y CONFIG_FB_NVIDIA_BACKLIGHT=y CONFIG_FB_RIVA=y CONFIG_FB_RIVA_I2C=y # CONFIG_FB_RIVA_DEBUG is not set CONFIG_FB_RIVA_BACKLIGHT=y # CONFIG_FB_MATROX is not set # CONFIG_FB_RADEON is not set # CONFIG_FB_ATY128 is not set # CONFIG_FB_ATY is not set # CONFIG_FB_S3 is not set # CONFIG_FB_SAVAGE is not set # CONFIG_FB_SIS is not set # CONFIG_FB_NEOMAGIC is not set # CONFIG_FB_KYRO is not set # CONFIG_FB_3DFX is not set # CONFIG_FB_VOODOO1 is not set # CONFIG_FB_TRIDENT is not set # CONFIG_FB_IBM_GXT4500 is not set # CONFIG_FB_VIRTUAL is not set # # Console display driver support # CONFIG_VGA_CONSOLE=y # CONFIG_VGACON_SOFT_SCROLLBACK is not set CONFIG_DUMMY_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE=y # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set # CONFIG_FONTS is not set CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y # # Logo configuration # # CONFIG_LOGO is not set # # Bootsplash configuration # CONFIG_BOOTSPLASH=y # # Sound # CONFIG_SOUND=y # # Advanced Linux Sound Architecture # CONFIG_SND=y CONFIG_SND_TIMER=y CONFIG_SND_PCM=y CONFIG_SND_HWDEP=y CONFIG_SND_RAWMIDI=y # CONFIG_SND_SEQUENCER is not set # CONFIG_SND_MIXER_OSS is not set # CONFIG_SND_PCM_OSS is not set # CONFIG_SND_DYNAMIC_MINORS is not set # CONFIG_SND_SUPPORT_OLD_API is not set # CONFIG_SND_VERBOSE_PROCFS is not set # CONFIG_SND_VERBOSE_PRINTK is not set # CONFIG_SND_DEBUG is not set # # Generic devices # CONFIG_SND_MPU401_UART=y CONFIG_SND_OPL3_LIB=y CONFIG_SND_VX_LIB=y CONFIG_SND_AC97_CODEC=y # CONFIG_SND_DUMMY is not set # CONFIG_SND_MTPAV is not set # CONFIG_SND_SERIAL_U16550 is not set # CONFIG_SND_MPU401 is not set # # PCI devices # CONFIG_SND_AD1889=y CONFIG_SND_ALS300=y CONFIG_SND_ALS4000=y CONFIG_SND_ALI5451=y CONFIG_SND_ATIIXP=y # CONFIG_SND_ATIIXP_MODEM is not set CONFIG_SND_AU8810=y CONFIG_SND_AU8820=y CONFIG_SND_AU8830=y CONFIG_SND_AZT3328=y # CONFIG_SND_BT87X is not set CONFIG_SND_CA0106=y CONFIG_SND_CMIPCI=y CONFIG_SND_CS4281=y CONFIG_SND_CS46XX=y CONFIG_SND_CS46XX_NEW_DSP=y # CONFIG_SND_DARLA20 is not set # CONFIG_SND_GINA20 is not set # CONFIG_SND_LAYLA20 is not set # CONFIG_SND_DARLA24 is not set # CONFIG_SND_GINA24 is not set # CONFIG_SND_LAYLA24 is not set # CONFIG_SND_MONA is not set # CONFIG_SND_MIA is not set # CONFIG_SND_ECHO3G is not set # CONFIG_SND_INDIGO is not set # CONFIG_SND_INDIGOIO is not set # CONFIG_SND_INDIGODJ is not set CONFIG_SND_EMU10K1=y CONFIG_SND_EMU10K1X=y CONFIG_SND_ENS1370=y CONFIG_SND_ENS1371=y CONFIG_SND_ES1938=y CONFIG_SND_ES1968=y CONFIG_SND_FM801=y # CONFIG_SND_FM801_TEA575X_BOOL is not set CONFIG_SND_HDA_INTEL=y # CONFIG_SND_HDSP is not set # CONFIG_SND_HDSPM is not set CONFIG_SND_ICE1712=y CONFIG_SND_ICE1724=y CONFIG_SND_INTEL8X0=y CONFIG_SND_INTEL8X0M=y # CONFIG_SND_KORG1212 is not set CONFIG_SND_MAESTRO3=y # CONFIG_SND_MIXART is not set CONFIG_SND_NM256=y # CONFIG_SND_PCXHR is not set CONFIG_SND_RIPTIDE=y # CONFIG_SND_RME32 is not set # CONFIG_SND_RME96 is not set # CONFIG_SND_RME9652 is not set CONFIG_SND_SONICVIBES=y CONFIG_SND_TRIDENT=y CONFIG_SND_VIA82XX=y # CONFIG_SND_VIA82XX_MODEM is not set CONFIG_SND_VX222=y CONFIG_SND_YMFPCI=y # CONFIG_SND_AC97_POWER_SAVE is not set # # ALSA PowerMac devices # CONFIG_SND_POWERMAC=y CONFIG_SND_POWERMAC_AUTO_DRC=y # # Apple Onboard Audio driver # CONFIG_SND_AOA=y CONFIG_SND_AOA_FABRIC_LAYOUT=y CONFIG_SND_AOA_ONYX=y CONFIG_SND_AOA_TAS=y CONFIG_SND_AOA_TOONIE=y CONFIG_SND_AOA_SOUNDBUS=y CONFIG_SND_AOA_SOUNDBUS_I2S=y # # USB devices # CONFIG_SND_USB_AUDIO=y # CONFIG_SND_USB_USX2Y is not set # # SoC audio support # # CONFIG_SND_SOC is not set # # Open Sound System # # CONFIG_SOUND_PRIME is not set CONFIG_AC97_BUS=y # # HID Devices # CONFIG_HID=y # CONFIG_HID_DEBUG is not set # # USB support # CONFIG_USB_ARCH_HAS_HCD=y CONFIG_USB_ARCH_HAS_OHCI=y CONFIG_USB_ARCH_HAS_EHCI=y CONFIG_USB=y # CONFIG_USB_DEBUG is not set # # Miscellaneous USB options # CONFIG_USB_DEVICEFS=y # CONFIG_USB_DYNAMIC_MINORS is not set # CONFIG_USB_SUSPEND is not set # CONFIG_USB_OTG is not set # # USB Host Controller Drivers # CONFIG_USB_EHCI_HCD=y # CONFIG_USB_EHCI_SPLIT_ISO is not set # CONFIG_USB_EHCI_ROOT_HUB_TT is not set # CONFIG_USB_EHCI_TT_NEWSCHED is not set # CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set # CONFIG_USB_ISP116X_HCD is not set CONFIG_USB_OHCI_HCD=y CONFIG_USB_OHCI_HCD_PPC_OF=y CONFIG_USB_OHCI_HCD_PPC_OF_BE=y # CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set CONFIG_USB_OHCI_HCD_PCI=y CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y CONFIG_USB_OHCI_LITTLE_ENDIAN=y CONFIG_USB_UHCI_HCD=y # CONFIG_USB_SL811_HCD is not set # # USB Device Class drivers # # CONFIG_USB_ACM is not set # CONFIG_USB_PRINTER is not set # # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' # # # may also be needed; see USB_STORAGE Help for more information # CONFIG_USB_STORAGE=y # CONFIG_USB_STORAGE_DEBUG is not set CONFIG_USB_STORAGE_DATAFAB=y CONFIG_USB_STORAGE_FREECOM=y CONFIG_USB_STORAGE_ISD200=y CONFIG_USB_STORAGE_DPCM=y CONFIG_USB_STORAGE_USBAT=y CONFIG_USB_STORAGE_SDDR09=y CONFIG_USB_STORAGE_SDDR55=y CONFIG_USB_STORAGE_JUMPSHOT=y CONFIG_USB_STORAGE_ALAUDA=y CONFIG_USB_STORAGE_KARMA=y # CONFIG_USB_LIBUSUAL is not set # # USB Input Devices # CONFIG_USB_HID=y CONFIG_USB_HIDINPUT_POWERBOOK=y # CONFIG_HID_FF is not set # CONFIG_USB_HIDDEV is not set # CONFIG_USB_AIPTEK is not set # CONFIG_USB_WACOM is not set # CONFIG_USB_ACECAD is not set # CONFIG_USB_KBTAB is not set # CONFIG_USB_POWERMATE is not set # CONFIG_USB_TOUCHSCREEN is not set # CONFIG_USB_YEALINK is not set CONFIG_USB_XPAD=y # CONFIG_USB_ATI_REMOTE is not set # CONFIG_USB_ATI_REMOTE2 is not set # CONFIG_USB_KEYSPAN_REMOTE is not set # CONFIG_USB_APPLETOUCH is not set # CONFIG_USB_GTCO is not set # # USB Imaging devices # # CONFIG_USB_MDC800 is not set # CONFIG_USB_MICROTEK is not set # # USB Network Adapters # # CONFIG_USB_CATC is not set # CONFIG_USB_KAWETH is not set CONFIG_USB_PEGASUS=y CONFIG_USB_RTL8150=y # CONFIG_USB_USBNET_MII is not set # CONFIG_USB_USBNET is not set # CONFIG_USB_MON is not set # # USB port drivers # # # USB Serial Converter support # CONFIG_USB_SERIAL=y # CONFIG_USB_SERIAL_CONSOLE is not set # CONFIG_USB_SERIAL_GENERIC is not set # CONFIG_USB_SERIAL_AIRCABLE is not set # CONFIG_USB_SERIAL_AIRPRIME is not set CONFIG_USB_SERIAL_ARK3116=y CONFIG_USB_SERIAL_BELKIN=y # CONFIG_USB_SERIAL_WHITEHEAT is not set CONFIG_USB_SERIAL_DIGI_ACCELEPORT=y CONFIG_USB_SERIAL_CP2101=y # CONFIG_USB_SERIAL_CYPRESS_M8 is not set # CONFIG_USB_SERIAL_EMPEG is not set CONFIG_USB_SERIAL_FTDI_SIO=y CONFIG_USB_SERIAL_FUNSOFT=y # CONFIG_USB_SERIAL_VISOR is not set # CONFIG_USB_SERIAL_IPAQ is not set # CONFIG_USB_SERIAL_IR is not set # CONFIG_USB_SERIAL_EDGEPORT is not set # CONFIG_USB_SERIAL_EDGEPORT_TI is not set # CONFIG_USB_SERIAL_GARMIN is not set # CONFIG_USB_SERIAL_IPW is not set # CONFIG_USB_SERIAL_KEYSPAN_PDA is not set # CONFIG_USB_SERIAL_KEYSPAN is not set # CONFIG_USB_SERIAL_KLSI is not set # CONFIG_USB_SERIAL_KOBIL_SCT is not set # CONFIG_USB_SERIAL_MCT_U232 is not set # CONFIG_USB_SERIAL_MOS7720 is not set # CONFIG_USB_SERIAL_MOS7840 is not set # CONFIG_USB_SERIAL_NAVMAN is not set # CONFIG_USB_SERIAL_PL2303 is not set # CONFIG_USB_SERIAL_HP4X is not set # CONFIG_USB_SERIAL_SAFE is not set # CONFIG_USB_SERIAL_SIERRAWIRELESS is not set # CONFIG_USB_SERIAL_TI is not set # CONFIG_USB_SERIAL_CYBERJACK is not set # CONFIG_USB_SERIAL_XIRCOM is not set # CONFIG_USB_SERIAL_OPTION is not set # CONFIG_USB_SERIAL_OMNINET is not set # CONFIG_USB_SERIAL_DEBUG is not set # # USB Miscellaneous drivers # # CONFIG_USB_EMI62 is not set # CONFIG_USB_EMI26 is not set # CONFIG_USB_ADUTUX is not set # CONFIG_USB_AUERSWALD is not set # CONFIG_USB_RIO500 is not set # CONFIG_USB_LEGOTOWER is not set # CONFIG_USB_LCD is not set # CONFIG_USB_BERRY_CHARGE is not set # CONFIG_USB_LED is not set # CONFIG_USB_CYPRESS_CY7C63 is not set # CONFIG_USB_CYTHERM is not set # CONFIG_USB_PHIDGET is not set # CONFIG_USB_IDMOUSE is not set # CONFIG_USB_FTDI_ELAN is not set # CONFIG_USB_APPLEDISPLAY is not set # CONFIG_USB_SISUSBVGA is not set # CONFIG_USB_LD is not set # CONFIG_USB_TRANCEVIBRATOR is not set # CONFIG_USB_IOWARRIOR is not set # CONFIG_USB_TEST is not set # # USB DSL modem support # # # USB Gadget Support # # CONFIG_USB_GADGET is not set # # MMC/SD Card support # # CONFIG_MMC is not set # # LED devices # # CONFIG_NEW_LEDS is not set # # LED drivers # # # LED Triggers # # # InfiniBand support # # CONFIG_INFINIBAND is not set # # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) # # # Real Time Clock # # CONFIG_RTC_CLASS is not set # # DMA Engine support # CONFIG_DMA_ENGINE=y # # DMA Clients # CONFIG_NET_DMA=y # # DMA Devices # # CONFIG_INTEL_IOATDMA is not set # # Auxiliary Display support # # # Virtualization # # # File systems # CONFIG_EXT2_FS=y # CONFIG_EXT2_FS_XATTR is not set # CONFIG_EXT2_FS_XIP is not set CONFIG_EXT3_FS=y # CONFIG_EXT3_FS_XATTR is not set # CONFIG_EXT4DEV_FS is not set CONFIG_JBD=y # CONFIG_JBD_DEBUG is not set CONFIG_REISERFS_FS=y # CONFIG_REISERFS_CHECK is not set # CONFIG_REISERFS_PROC_INFO is not set # CONFIG_REISERFS_FS_XATTR is not set CONFIG_JFS_FS=y # CONFIG_JFS_POSIX_ACL is not set # CONFIG_JFS_SECURITY is not set # CONFIG_JFS_DEBUG is not set # CONFIG_JFS_STATISTICS is not set # CONFIG_FS_POSIX_ACL is not set # CONFIG_XFS_FS is not set # CONFIG_GFS2_FS is not set # CONFIG_OCFS2_FS is not set # CONFIG_MINIX_FS is not set # CONFIG_ROMFS_FS is not set CONFIG_INOTIFY=y CONFIG_INOTIFY_USER=y # CONFIG_QUOTA is not set # CONFIG_DNOTIFY is not set # CONFIG_AUTOFS_FS is not set # CONFIG_AUTOFS4_FS is not set CONFIG_FUSE_FS=y # # CD-ROM/DVD Filesystems # CONFIG_ISO9660_FS=y CONFIG_JOLIET=y CONFIG_ZISOFS=y CONFIG_UDF_FS=y CONFIG_UDF_NLS=y # # DOS/FAT/NT Filesystems # CONFIG_FAT_FS=y # CONFIG_MSDOS_FS is not set CONFIG_VFAT_FS=y CONFIG_FAT_DEFAULT_CODEPAGE=850 CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" CONFIG_NTFS_FS=y # CONFIG_NTFS_DEBUG is not set # CONFIG_NTFS_RW is not set # # Pseudo filesystems # CONFIG_PROC_FS=y CONFIG_PROC_KCORE=y CONFIG_PROC_SYSCTL=y CONFIG_SYSFS=y # CONFIG_TMPFS is not set # CONFIG_HUGETLB_PAGE is not set CONFIG_RAMFS=y # CONFIG_CONFIGFS_FS is not set # # Miscellaneous filesystems # # CONFIG_ADFS_FS is not set # CONFIG_AFFS_FS is not set CONFIG_HFS_FS=y CONFIG_HFSPLUS_FS=y # CONFIG_BEFS_FS is not set # CONFIG_BFS_FS is not set # CONFIG_EFS_FS is not set # CONFIG_CRAMFS is not set # CONFIG_VXFS_FS is not set # CONFIG_HPFS_FS is not set # CONFIG_QNX4FS_FS is not set # CONFIG_SYSV_FS is not set CONFIG_UFS_FS=y # CONFIG_UFS_FS_WRITE is not set # CONFIG_UFS_DEBUG is not set # # Network File Systems # CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set # CONFIG_NFS_V4 is not set # CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set CONFIG_LOCKD=y CONFIG_NFS_COMMON=y CONFIG_SUNRPC=y # CONFIG_RPCSEC_GSS_KRB5 is not set # CONFIG_RPCSEC_GSS_SPKM3 is not set CONFIG_SMB_FS=y # CONFIG_SMB_NLS_DEFAULT is not set CONFIG_CIFS=y # CONFIG_CIFS_STATS is not set # CONFIG_CIFS_WEAK_PW_HASH is not set # CONFIG_CIFS_XATTR is not set # CONFIG_CIFS_DEBUG2 is not set # CONFIG_CIFS_EXPERIMENTAL is not set # CONFIG_NCP_FS is not set # CONFIG_CODA_FS is not set # CONFIG_AFS_FS is not set # CONFIG_9P_FS is not set # # Partition Types # CONFIG_PARTITION_ADVANCED=y # CONFIG_ACORN_PARTITION is not set # CONFIG_OSF_PARTITION is not set # CONFIG_AMIGA_PARTITION is not set # CONFIG_ATARI_PARTITION is not set CONFIG_MAC_PARTITION=y CONFIG_MSDOS_PARTITION=y # CONFIG_BSD_DISKLABEL is not set # CONFIG_MINIX_SUBPARTITION is not set # CONFIG_SOLARIS_X86_PARTITION is not set # CONFIG_UNIXWARE_DISKLABEL is not set # CONFIG_LDM_PARTITION is not set # CONFIG_SGI_PARTITION is not set # CONFIG_ULTRIX_PARTITION is not set # CONFIG_SUN_PARTITION is not set # CONFIG_KARMA_PARTITION is not set # CONFIG_EFI_PARTITION is not set # # Native Language Support # CONFIG_NLS=y CONFIG_NLS_DEFAULT="utf8" # CONFIG_NLS_CODEPAGE_437 is not set # CONFIG_NLS_CODEPAGE_737 is not set # CONFIG_NLS_CODEPAGE_775 is not set CONFIG_NLS_CODEPAGE_850=y # CONFIG_NLS_CODEPAGE_852 is not set # CONFIG_NLS_CODEPAGE_855 is not set # CONFIG_NLS_CODEPAGE_857 is not set # CONFIG_NLS_CODEPAGE_860 is not set # CONFIG_NLS_CODEPAGE_861 is not set # CONFIG_NLS_CODEPAGE_862 is not set # CONFIG_NLS_CODEPAGE_863 is not set # CONFIG_NLS_CODEPAGE_864 is not set # CONFIG_NLS_CODEPAGE_865 is not set # CONFIG_NLS_CODEPAGE_866 is not set # CONFIG_NLS_CODEPAGE_869 is not set # CONFIG_NLS_CODEPAGE_936 is not set # CONFIG_NLS_CODEPAGE_950 is not set # CONFIG_NLS_CODEPAGE_932 is not set # CONFIG_NLS_CODEPAGE_949 is not set # CONFIG_NLS_CODEPAGE_874 is not set # CONFIG_NLS_ISO8859_8 is not set # CONFIG_NLS_CODEPAGE_1250 is not set # CONFIG_NLS_CODEPAGE_1251 is not set # CONFIG_NLS_ASCII is not set CONFIG_NLS_ISO8859_1=y # CONFIG_NLS_ISO8859_2 is not set # CONFIG_NLS_ISO8859_3 is not set # CONFIG_NLS_ISO8859_4 is not set # CONFIG_NLS_ISO8859_5 is not set # CONFIG_NLS_ISO8859_6 is not set # CONFIG_NLS_ISO8859_7 is not set # CONFIG_NLS_ISO8859_9 is not set # CONFIG_NLS_ISO8859_13 is not set # CONFIG_NLS_ISO8859_14 is not set # CONFIG_NLS_ISO8859_15 is not set # CONFIG_NLS_KOI8_R is not set # CONFIG_NLS_KOI8_U is not set CONFIG_NLS_UTF8=y # # Distributed Lock Manager # # CONFIG_DLM is not set # # Library routines # CONFIG_BITREVERSE=y CONFIG_CRC_CCITT=y # CONFIG_CRC16 is not set CONFIG_CRC32=y # CONFIG_LIBCRC32C is not set CONFIG_ZLIB_INFLATE=y CONFIG_HAS_IOMEM=y CONFIG_HAS_IOPORT=y # # Instrumentation Support # # CONFIG_PROFILING is not set # # Kernel hacking # # CONFIG_PRINTK_TIME is not set # CONFIG_ENABLE_MUST_CHECK is not set # CONFIG_MAGIC_SYSRQ is not set # CONFIG_UNUSED_SYMBOLS is not set # CONFIG_DEBUG_FS is not set # CONFIG_HEADERS_CHECK is not set # CONFIG_DEBUG_KERNEL is not set CONFIG_LOG_BUF_SHIFT=14 # CONFIG_DEBUG_BUGVERBOSE is not set # CONFIG_BOOTX_TEXT is not set # CONFIG_PPC_EARLY_DEBUG is not set # # Security options # # CONFIG_KEYS is not set # CONFIG_SECURITY is not set # # Cryptographic options # CONFIG_CRYPTO=y CONFIG_CRYPTO_ALGAPI=y CONFIG_CRYPTO_BLKCIPHER=y CONFIG_CRYPTO_HASH=y CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_HMAC=y # CONFIG_CRYPTO_XCBC is not set # CONFIG_CRYPTO_NULL is not set # CONFIG_CRYPTO_MD4 is not set # CONFIG_CRYPTO_MD5 is not set # CONFIG_CRYPTO_SHA1 is not set # CONFIG_CRYPTO_SHA256 is not set # CONFIG_CRYPTO_SHA512 is not set # CONFIG_CRYPTO_WP512 is not set # CONFIG_CRYPTO_TGR192 is not set # CONFIG_CRYPTO_GF128MUL is not set CONFIG_CRYPTO_ECB=y # CONFIG_CRYPTO_CBC is not set CONFIG_CRYPTO_PCBC=m # CONFIG_CRYPTO_LRW is not set # CONFIG_CRYPTO_DES is not set # CONFIG_CRYPTO_FCRYPT is not set # CONFIG_CRYPTO_BLOWFISH is not set # CONFIG_CRYPTO_TWOFISH is not set # CONFIG_CRYPTO_SERPENT is not set CONFIG_CRYPTO_AES=y # CONFIG_CRYPTO_CAST5 is not set # CONFIG_CRYPTO_CAST6 is not set # CONFIG_CRYPTO_TEA is not set CONFIG_CRYPTO_ARC4=y # CONFIG_CRYPTO_KHAZAD is not set # CONFIG_CRYPTO_ANUBIS is not set # CONFIG_CRYPTO_DEFLATE is not set CONFIG_CRYPTO_MICHAEL_MIC=y # CONFIG_CRYPTO_CRC32C is not set # CONFIG_CRYPTO_CAMELLIA is not set # CONFIG_CRYPTO_TEST is not set # # Hardware crypto devices # geexbox-1.1/packages/linux/config/modules0000644000175000017500000000331410641745505016673 0ustar benben# Drivers for Wireless cards ipw2100 ipw2200 rt2400 rt2500 rt61 rt73 ieee80211softmac bcm43xx acx ath_pci atmel atmel_pci zd1201 zd1211rw # Drivers for DVB cards ttusb_dec dvb-ttusb-budget dvb-usb-vp7045 dvb-usb-vp702x dvb-usb-umt-010 dvb-usb-nova-t-usb2 dvb-usb-ttusb2 dvb-usb-dtt200u dvb-usb-digitv dvb-usb-dibusb-mc dvb-usb-dibusb-mb dvb-usb-dib0700 dvb-usb-cxusb dvb-usb-a800 cinergyT2 b2c2-flexcop-usb pvrusb2 # Drivers for PnP ISA sound cards snd-interwave-stb snd-sb16 snd-sbawe snd-sscape # These are modules of some ISA non-PnP devices. # If some of these modules are needed uncomment the line and add correct # parameters for the module. # Drivers for ISA network adapter # wd mem_end=0xca000 mem=0xc8000 irq=5 io=0x2a0 # smc-ultra io=0x2a0 irq=7 # Drivers for ISA sound cards # Some ISA PnP cards may work fine, for other ones you need to add the # correct modules parameters. # snd-tea6330t # snd-ad1816a # snd-ad1848 # snd-cs4231 # snd-cs4232 # snd-cs4236 # snd-es1688 # snd-gusclassic # snd-gusextreme # snd-gusmax # snd-interwave # snd-opti92x-ad1848 # snd-opti92x-cs4231 # snd-opti93x # snd-es968 # snd-sb8 # snd-als100 # snd-azt2320 # snd-cmi8330 # snd-dt019x # snd-es18xx # snd-opl3sa2 # snd-sgalaxy # snd-wavefront # Drivers for ISA radio cards # Some ISA PnP cards may work fine, for other ones you need to add the # correct modules parameters. # radio-aimslab io=0x20f # or 0x30f # radio-sf16fmi io=0x284 # or 0x384 # radio-rtrack2 io=0x30c # or 0x20c # radio-aztech io=0x350 # or 0x358 # radio-gemtek io=0x34c # or 0x20c, 0x30c, 0x24c, io=0x248 # radio-terratec io=0x590 # or 0x591 # radio-trust io=0x350 # or 0x358 # radio-typhoon io=0x316 mutefreq=87000 # or io=0x336 # radio-zoltrix io=0x20c # or 0x30c geexbox-1.1/packages/linux/config/tvcard0000644000175000017500000000250110641745505016503 0ustar benben# # TV Card Options # # TV card model (AUTO for autodetection or look at the following urls) # http://linuxtv.org/hg/v4l-dvb?cmd=file;file=linux/Documentation/video4linux/CARDLIST.bttv;filenode=-1;style=raw # http://linuxtv.org/hg/v4l-dvb?cmd=file;file=linux/Documentation/video4linux/CARDLIST.cx88;filenode=-1;style=raw # http://linuxtv.org/hg/v4l-dvb?cmd=file;file=linux/Documentation/video4linux/CARDLIST.saa7134;filenode=-1;style=raw TV_CARD=AUTO # TV tuner (AUTO for autodetection or look at the following url) # http://linuxtv.org/hg/v4l-dvb?cmd=file;file=linux/Documentation/video4linux/CARDLIST.tuner;filenode=-1;style=raw TV_TUNER=AUTO # TV Input Standard (ntsc/ntsc-m/ntsc-jp/pal/pal-bg/pal-dk/pal-i/pal-m/pal-n/ # pal-nc/pal-60/secam/secam-l/secam-dk) # Some card (SAA7134) need a special way to set the sub-mode. # Example for using secam-dk #TVIN_STANDARD=secam #TVIN_SUB_STANDARD=d # TVIN_STANDARD=pal # TV Channels # Syntax : CHAN="Channel Frequency:Channel Title" # Example: #CHAN="29:France 2" #CHAN="K08:Canal +" # TV Channels List # Available : us-bcast, us-cable, us-cable-hrc, japan-bcast, japan-cable, # europe-west, europe-east, italy, newzealand, australia, # ireland, france, china-bcast, southafrica, argentina, # australia-optus, russia CHANLIST=europe-west geexbox-1.1/packages/linux/init.d/0000755000175000017500000000000010641745505015217 5ustar benbengeexbox-1.1/packages/linux/init.d/20_modules0000755000175000017500000000033310641745505017115 0ustar benben#!/bin/sh # # load modules # # runlevels: geexbox, debug, install echo "### Loading kernel modules ###" IFS=' ' for module in `cat /etc/modules|grep "^[^#]"`; do eval "modprobe $module" >/dev/null 2>&1 done exit 0 geexbox-1.1/packages/linux/init.d/32_tvcard0000755000175000017500000000444710641745505016745 0ustar benben#!/bin/sh # # setup tv cards # # runlevels: geexbox, debug, install echo "### Setting up TV card ###" if ! grep -q -e '0400: 109e:' \ -e '0480: 1131:' \ -e ': 14f1:88' \ /tmp/pci; then # No supported TV card found exit 1 fi . /etc/tvcard [ -f /etc/radio ] && . /etc/radio test "$TV_CARD" != "AUTO" && CARD="card=$TV_CARD" || CARD= test "$TV_TUNER" != "AUTO" && TUNER="tuner=$TV_TUNER" || TUNER= test "$RADIO" = yes && RADIO_OPT="radio=1" || RADIO_OPT= if grep -q '0400: 109e:' /tmp/pci; then # BT8x8 Card modprobe bttv $CARD $TUNER $RADIO_OPT >/dev/null 2>&1 if test "$TV_CARD" = "AUTO" \ -a -z "`dmesg | grep 'bttv0: detected'`"; then # Not autodetected test -z "$TUNER" && TUNER="tuner=3" rmmod bttv modprobe bttv card=1 $TUNER $RADIO_OPT >/dev/null 2>&1 fi echo "TV_WIDTH=768" > /var/tvcard echo "TV_HEIGHT=576" >> /var/tvcard elif grep -q '0480: 1131:' /tmp/pci; then # SAA7134 Card modprobe saa7134 $CARD $TUNER >/dev/null 2>&1 echo -n "" > /var/tvcard elif grep -q ': 14f1:88' /tmp/pci; then # Conexant BT881/CX88 Card modprobe tveeprom >/dev/null 2>&1 modprobe cx88xx $CARD $TUNER >/dev/null 2>&1 modprobe cx8800 >/dev/null 2>&1 # cx8800 module tries to autodetect/force tuner model according to eeprom. # It fails if eeprom is corrupted so force tuner module loading before cx8800 if test "$TV_CARD" != "AUTO" \ -a -n "`dmesg | grep 'tveeprom: Encountered bad packet header'`"; then rmmod cx8800 cx88xx tuner modprobe cx88xx $CARD $TUNER >/dev/null 2>&1 modprobe tuner >/dev/null 2>&1 modprobe cx8800 >/dev/null 2>&1 fi echo "TV_WIDTH=768" > /var/tvcard echo "TV_HEIGHT=576" >> /var/tvcard # CX88 driver reset color values to 0, so need to be forced. echo "TV_BRIGHTNESS=50" >> /var/tvcard echo "TV_CONTRAST=50" >> /var/tvcard echo "TV_HUE=100" >> /var/tvcard echo "TV_SATURATION=75" >> /var/tvcard fi TVIN_OPT= if test -n "$TVIN_STANDARD" -a -n "$TVIN_SUB_STANDARD"; then TVIN_OPT="$TVIN_STANDARD=$TVIN_SUB_STANDARD" fi modprobe tuner $TVIN_OPT >/dev/null 2>&1 modprobe tvaudio >/dev/null 2>&1 modprobe msp3400 >/dev/null 2>&1 modprobe tda7432 >/dev/null 2>&1 modprobe tda9875 >/dev/null 2>&1 modprobe tda9887 $TVIN_OPT >/dev/null 2>&1 modprobe tlv320aic23b >/dev/null 2>&1 exit 0 geexbox-1.1/packages/linux/init.d/34_dvbcard0000755000175000017500000000300010641745505017051 0ustar benben#!/bin/sh # # setup dvb cards # # runlevels: geexbox, debug, install echo "### Setting up DVB card ###" # DVB frontends drivers are auto-loaded by main device drivers # PCI DVB Devices if grep -q '0400: 109e:' /tmp/pci; then # BT8x8 Card modprobe dvb-bt8xx >/dev/null 2>&1 modprobe dst >/dev/null 2>&1 elif grep -q '0480: 1131:' /tmp/pci; then # SAA7134 Card modprobe saa7134-dvb >/dev/null 2>&1 # SAA7146 Cards modprobe saa7146 >/dev/null 2>&1 modprobe saa7146_vv >/dev/null 2>&1 modprobe dvb-ttpci >/dev/null 2>&1 modprobe budget >/dev/null 2>&1 modprobe budget-ci >/dev/null 2>&1 modprobe budget-av >/dev/null 2>&1 elif grep -q '0280: 13d0:' /tmp/pci; then # B2C2 Cards modprobe budget >/dev/null 2>&1 modprobe b2c2-flexcop-pci >/dev/null 2>&1 modprobe b2c2-flexcop >/dev/null 2>&1 elif grep -q '0480: 14f1:88' /tmp/pci; then # Conexant CX88 Card modprobe cx88-blackbird >/dev/null 2>&1 modprobe cx88-dvb >/dev/null 2>&1 elif grep -q '0480: 0432:' /tmp/pci; then # SCM Pluto2 Card modprobe pluto2 >/dev/null 2>&1 fi # allow cold USB DVB devices time to load firmware if test -n "`dmesg | grep 'dvb-usb.*cold state'`"; then for I in 1 2 3 4 5 6 7 8 9 10; do # Loaded firmware, or failed to load firmware, so exit test -n "`dmesg | grep -e 'dvb-usb.*warm state' -e 'dvb-usb.*did not find firmware'`" && break sleep 1 done fi # ensure that DVB card has been discovered if test -n "`dmesg | grep 'DVB: registering new adapter'`"; then echo -n "" > /var/dvbcard fi exit 0 geexbox-1.1/packages/linux/install0000755000175000017500000000105110641745505015423 0ustar benben#!/bin/sh . config/options case "$2" in image) test "$3" != installator && INSTALL="$INSTALL/boot" mkdir -p $INSTALL case $TARGET_ARCH in i386) cp $BUILD/$1*/arch/$TARGET_ARCH/boot/bzImage $INSTALL/vmlinuz ;; powerpc) cp $BUILD/$1*/vmlinux $INSTALL/vmlinux $STRIP $INSTALL/vmlinux ;; esac ;; modules) cp -r $BUILD/$1*/modules/* $INSTALL mkdir -p $INSTALL/etc cp $PACKAGES/$1/config/modules $INSTALL/etc cp $PACKAGES/$1/config/tvcard $INSTALL/etc ;; esac geexbox-1.1/packages/linux/need_unpack0000755000175000017500000000020710641745505016233 0ustar benben#!/bin/sh . config/options STAMP=$STAMPS/$1/unpack test $PACKAGES/$1/config/$1.$TARGET_ARCH.conf -nt $STAMP && rm -f $STAMP exit 0 geexbox-1.1/packages/linux/patches/0000755000175000017500000000000010641745505015461 5ustar benbengeexbox-1.1/packages/linux/patches/10_crosscompile.diff0000644000175000017500000000136010641745505021315 0ustar benbenIndex: linux-2.6.16/arch/i386/boot/tools/build.c =================================================================== --- linux-2.6.16.orig/arch/i386/boot/tools/build.c 2006-03-20 18:41:36.000000000 +0100 +++ linux-2.6.16/arch/i386/boot/tools/build.c 2006-03-20 18:41:38.000000000 +0100 @@ -29,7 +29,6 @@ #include #include #include -#include #include #include #include @@ -41,6 +40,11 @@ #define DEFAULT_MAJOR_ROOT 0 #define DEFAULT_MINOR_ROOT 0 +#undef major +#define major(dev) ((int)(((dev) >> 8) & 0xff)) +#undef minor +#define minor(dev) ((int)((dev) & 0xff)) + /* Minimal number of setup sectors (see also bootsect.S) */ #define SETUP_SECTS 4 geexbox-1.1/packages/linux/patches/11_file2alias-crosscompile.diff0000644000175000017500000000160510641745505023331 0ustar benben* fixes file2alias cross compiling, as it compiles at host side. (there is no asm/types.h) diff -Nur linux-2.6.18.orig/include/linux/input.h linux-2.6.18/include/linux/input.h --- linux-2.6.18.orig/include/linux/input.h 2006-09-17 16:18:59.000000000 +0200 +++ linux-2.6.18/include/linux/input.h 2006-09-17 16:19:58.000000000 +0200 @@ -16,7 +16,6 @@ #include #include #include -#include #endif /* diff -Nur linux-2.6.18.orig/scripts/mod/file2alias.c linux-2.6.18/scripts/mod/file2alias.c --- linux-2.6.18.orig/scripts/mod/file2alias.c 2006-09-17 16:19:52.000000000 +0200 +++ linux-2.6.18/scripts/mod/file2alias.c 2006-09-17 16:20:39.000000000 +0200 @@ -29,6 +29,9 @@ #include +typedef int32_t __s32; +typedef int16_t __s16; +typedef char __s8; typedef uint32_t __u32; typedef uint16_t __u16; typedef unsigned char __u8; geexbox-1.1/packages/linux/patches/12_path-max-limits.diff0000644000175000017500000000061310641745505021633 0ustar benbenrequired for PATH_MAX diff -Nur linux-2.6.17.1.orig/scripts/mod/sumversion.c linux-2.6.17.1/scripts/mod/sumversion.c --- linux-2.6.17.1.orig/scripts/mod/sumversion.c Thu Jun 22 22:22:44 2006 +++ linux-2.6.17.1/scripts/mod/sumversion.c Thu Jun 22 22:22:04 2006 @@ -4,6 +4,7 @@ #else #include #endif +#include #include #include #include geexbox-1.1/packages/linux/patches/13_ppc-asm-include.diff0000644000175000017500000000124310641745505021577 0ustar benbendefine PAGE_MASK for !KERNEL diff -Nur linux-2.6.18.orig/include/asm-powerpc/page.h linux-2.6.18/include/asm-powerpc/page.h --- linux-2.6.18.orig/include/asm-powerpc/page.h 2006-09-17 16:28:08.000000000 +0200 +++ linux-2.6.18/include/asm-powerpc/page.h 2006-09-17 16:28:01.000000000 +0200 @@ -10,7 +10,6 @@ * 2 of the License, or (at your option) any later version. */ -#ifdef __KERNEL__ #include #include @@ -37,6 +36,7 @@ */ #define PAGE_MASK (~((1 << PAGE_SHIFT) - 1)) +#ifdef __KERNEL__ /* * KERNELBASE is the virtual address of the start of the kernel, it's often * the same as PAGE_OFFSET, but _might not be_. geexbox-1.1/packages/linux/patches/14_modpost-crosscompile.diff0000644000175000017500000000153310641745505023006 0ustar benbenElf_Section does not always exists in host (FreeBSD for example) and its the same as Elf_Half (uint16) on both 32bit and 64bit. diff -Nur linux-2.6.18.orig/scripts/mod/modpost.h linux-2.6.18/scripts/mod/modpost.h --- linux-2.6.18.orig/scripts/mod/modpost.h Fri Sep 22 09:31:42 2006 +++ linux-2.6.18/scripts/mod/modpost.h Fri Sep 22 09:32:03 2006 @@ -17,7 +17,7 @@ #define Elf_Shdr Elf32_Shdr #define Elf_Sym Elf32_Sym #define Elf_Addr Elf32_Addr -#define Elf_Section Elf32_Section +#define Elf_Section Elf32_Half #define ELF_ST_BIND ELF32_ST_BIND #define ELF_ST_TYPE ELF32_ST_TYPE @@ -31,7 +31,7 @@ #define Elf_Shdr Elf64_Shdr #define Elf_Sym Elf64_Sym #define Elf_Addr Elf64_Addr -#define Elf_Section Elf64_Section +#define Elf_Section Elf64_Half #define ELF_ST_BIND ELF64_ST_BIND #define ELF_ST_TYPE ELF64_ST_TYPE geexbox-1.1/packages/linux/patches/30_bash-only-feature.diff0000644000175000017500000000105410641745505022142 0ustar benbenIndex: linux-2.6.16/scripts/gen_initramfs_list.sh =================================================================== --- linux-2.6.16.orig/scripts/gen_initramfs_list.sh 2006-03-20 18:41:34.000000000 +0100 +++ linux-2.6.16/scripts/gen_initramfs_list.sh 2006-03-20 18:42:40.000000000 +0100 @@ -56,9 +56,7 @@ parse() { local location="$1" - local name="${location/${srcdir}//}" - # change '//' into '/' - name="${name//\/\///}" + local name="$(echo "$location" | sed -e 's%$srcdir%%' -e 's%//*%/%g')" local mode="$2" local uid="$3" local gid="$4" geexbox-1.1/packages/linux/patches/40_no_dev_console.diff0000644000175000017500000000145010641745505021612 0ustar benbenIndex: linux-2.6.16/init/main.c =================================================================== --- linux-2.6.16.orig/init/main.c 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/init/main.c 2006-03-20 18:42:46.000000000 +0100 @@ -710,8 +712,13 @@ system_state = SYSTEM_RUNNING; numa_default_policy(); + char *console = "/dev_console"; - if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0) - printk(KERN_WARNING "Warning: unable to open an initial console.\n"); + if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0) { + sys_mknod(console, S_IFCHR|0600, (TTYAUX_MAJOR<<8)|1); + if (sys_open(console, O_RDWR, 0) < 0) + printk(KERN_WARNING "Warning: unable to open an initial console.\n"); + sys_unlink(console); + } (void) sys_dup(0); (void) sys_dup(0); geexbox-1.1/packages/linux/patches/50_bootsplash-3.1.6-2.6.21.diff0000644000175000017500000023700410641745505022172 0ustar benben* from ftp://ftp.openbios.org/pub/bootsplash/kernel/bootsplash-3.1.6-2.6.21.diff.gz diff -urN linux-2.6.21-orig/drivers/char/keyboard.c linux-2.6.21/drivers/char/keyboard.c --- linux-2.6.21-orig/drivers/char/keyboard.c 2007-04-26 10:58:50.000000000 +0300 +++ linux-2.6.21/drivers/char/keyboard.c 2007-04-26 11:29:26.000000000 +0300 @@ -1164,6 +1164,15 @@ if (keycode < BTN_MISC) printk(KERN_WARNING "keyboard.c: can't emulate rawmode for keycode %d\n", keycode); +#ifdef CONFIG_BOOTSPLASH + /* This code has to be redone for some non-x86 platforms */ + if (down == 1 && (keycode == 0x3c || keycode == 0x01)) { /* F2 and ESC on PC keyboard */ + extern int splash_verbose(void); + if (splash_verbose()) + return; + } +#endif + #ifdef CONFIG_MAGIC_SYSRQ /* Handle the SysRq Hack */ if (keycode == KEY_SYSRQ && (sysrq_down || (down == 1 && sysrq_alt))) { if (!sysrq_down) { diff -urN linux-2.6.21-orig/drivers/char/n_tty.c linux-2.6.21/drivers/char/n_tty.c --- linux-2.6.21-orig/drivers/char/n_tty.c 2007-04-26 10:58:50.000000000 +0300 +++ linux-2.6.21/drivers/char/n_tty.c 2007-04-26 11:29:26.000000000 +0300 @@ -1296,6 +1296,15 @@ tty->minimum_to_wake = (minimum - (b - buf)); if (!input_available_p(tty, 0)) { +#ifdef CONFIG_BOOTSPLASH + if (file->f_dentry->d_inode->i_rdev == MKDEV(TTY_MAJOR,0) || + file->f_dentry->d_inode->i_rdev == MKDEV(TTY_MAJOR,1) || + file->f_dentry->d_inode->i_rdev == MKDEV(TTYAUX_MAJOR,0) || + file->f_dentry->d_inode->i_rdev == MKDEV(TTYAUX_MAJOR,1)) { + extern int splash_verbose(void); + (void)splash_verbose(); + } +#endif if (test_bit(TTY_OTHER_CLOSED, &tty->flags)) { retval = -EIO; break; diff -urN linux-2.6.21-orig/drivers/char/vt.c linux-2.6.21/drivers/char/vt.c --- linux-2.6.21-orig/drivers/char/vt.c 2007-04-26 10:58:50.000000000 +0300 +++ linux-2.6.21/drivers/char/vt.c 2007-04-26 11:29:26.000000000 +0300 @@ -3815,6 +3815,31 @@ } } +#ifdef CONFIG_BOOTSPLASH +void con_remap_def_color(struct vc_data *vc, int new_color) +{ + unsigned short *sbuf = vc->vc_screenbuf; + unsigned c, len = vc->vc_screenbuf_size >> 1; + int old_color; + + if (sbuf) { + old_color = vc->vc_def_color << 8; + new_color <<= 8; + while(len--) { + c = *sbuf; + if (((c ^ old_color) & 0xf000) == 0) + *sbuf ^= (old_color ^ new_color) & 0xf000; + if (((c ^ old_color) & 0x0f00) == 0) + *sbuf ^= (old_color ^ new_color) & 0x0f00; + sbuf++; + } + new_color >>= 8; + } + vc->vc_def_color = vc->vc_color = new_color; + update_attr(vc); +} +#endif + /* * Visible symbols for modules */ diff -urN linux-2.6.21-orig/drivers/video/bootsplash/bootsplash.c linux-2.6.21/drivers/video/bootsplash/bootsplash.c --- linux-2.6.21-orig/drivers/video/bootsplash/bootsplash.c 1970-01-01 03:00:00.000000000 +0300 +++ linux-2.6.21/drivers/video/bootsplash/bootsplash.c 2007-04-26 11:29:26.000000000 +0300 @@ -0,0 +1,983 @@ +/* + * linux/drivers/video/bootsplash/bootsplash.c - + * splash screen handling functions. + * + * (w) 2001-2004 by Volker Poplawski, , + * Stefan Reinauer, , + * Steffen Winterfeldt, , + * Michael Schroeder + * + * Ideas & SuSE screen work by Ken Wimer, + * + * For more information on this code check http://www.bootsplash.org/ + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "../console/fbcon.h" +#include "bootsplash.h" +#include "decode-jpg.h" + +/* extern struct fb_ops vesafb_ops; */ +extern signed char con2fb_map[MAX_NR_CONSOLES]; + +#define SPLASH_VERSION "3.1.6-2004/03/31" + +/* These errors have to match fbcon-jpegdec.h */ +static unsigned char *jpg_errors[] = { + "no SOI found", + "not 8 bit", + "height mismatch", + "width mismatch", + "bad width or height", + "too many COMPPs", + "illegal HV", + "quant table selector", + "picture is not YCBCR 221111", + "unknow CID in scan", + "dct not sequential", + "wrong marker", + "no EOI", + "bad tables", + "depth mismatch" +}; + +static struct jpeg_decdata *decdata = 0; /* private decoder data */ + +static int splash_registered = 0; +static int splash_usesilent = 0; /* shall we display the silentjpeg? */ +int splash_default = 0xf01; + +static int splash_check_jpeg(unsigned char *jpeg, int width, int height, int depth); + +static int __init splash_setup(char *options) +{ + if(!strncmp("silent", options, 6)) { + printk(KERN_INFO "bootsplash: silent mode.\n"); + splash_usesilent = 1; + /* skip "silent," */ + if (strlen(options) == 6) + return 0; + options += 7; + } + if(!strncmp("verbose", options, 7)) { + printk(KERN_INFO "bootsplash: verbose mode.\n"); + splash_usesilent = 0; + return 0; + } + splash_default = simple_strtoul(options, NULL, 0); + return 0; +} + +__setup("splash=", splash_setup); + + +static int splash_hasinter(unsigned char *buf, int num) +{ + unsigned char *bufend = buf + num * 12; + while(buf < bufend) { + if (buf[1] > 127) /* inter? */ + return 1; + buf += buf[3] > 127 ? 24 : 12; /* blend? */ + } + return 0; +} + +static int boxextract(unsigned char *buf, unsigned short *dp, unsigned char *cols, int *blendp) +{ + dp[0] = buf[0] | buf[1] << 8; + dp[1] = buf[2] | buf[3] << 8; + dp[2] = buf[4] | buf[5] << 8; + dp[3] = buf[6] | buf[7] << 8; + *(unsigned int *)(cols + 0) = + *(unsigned int *)(cols + 4) = + *(unsigned int *)(cols + 8) = + *(unsigned int *)(cols + 12) = *(unsigned int *)(buf + 8); + if (dp[1] > 32767) { + dp[1] = ~dp[1]; + *(unsigned int *)(cols + 4) = *(unsigned int *)(buf + 12); + *(unsigned int *)(cols + 8) = *(unsigned int *)(buf + 16); + *(unsigned int *)(cols + 12) = *(unsigned int *)(buf + 20); + *blendp = 1; + return 24; + } + return 12; +} + +static void boxit(unsigned char *pic, int bytes, unsigned char *buf, int num, int percent, int overpaint) +{ + int x, y, i, p, doblend, r, g, b, a, add; + unsigned short data1[4]; + unsigned char cols1[16]; + unsigned short data2[4]; + unsigned char cols2[16]; + unsigned char *bufend; + unsigned short *picp; + unsigned int stipple[32], sti, stin, stinn, stixs, stixe, stiys, stiye; + int xs, xe, ys, ye, xo, yo; + + if (num == 0) + return; + bufend = buf + num * 12; + stipple[0] = 0xffffffff; + stin = 1; + stinn = 0; + stixs = stixe = 0; + stiys = stiye = 0; + while(buf < bufend) { + doblend = 0; + buf += boxextract(buf, data1, cols1, &doblend); + if (data1[0] == 32767 && data1[1] == 32767) { + /* box stipple */ + if (stinn == 32) + continue; + if (stinn == 0) { + stixs = data1[2]; + stixe = data1[3]; + stiys = stiye = 0; + } else if (stinn == 4) { + stiys = data1[2]; + stiye = data1[3]; + } + stipple[stinn++] = (cols1[ 0] << 24) | (cols1[ 1] << 16) | (cols1[ 2] << 8) | cols1[ 3] ; + stipple[stinn++] = (cols1[ 4] << 24) | (cols1[ 5] << 16) | (cols1[ 6] << 8) | cols1[ 7] ; + stipple[stinn++] = (cols1[ 8] << 24) | (cols1[ 9] << 16) | (cols1[10] << 8) | cols1[11] ; + stipple[stinn++] = (cols1[12] << 24) | (cols1[13] << 16) | (cols1[14] << 8) | cols1[15] ; + stin = stinn; + continue; + } + stinn = 0; + if (data1[0] > 32767) + buf += boxextract(buf, data2, cols2, &doblend); + if (data1[0] == 32767 && data1[1] == 32766) { + /* box copy */ + i = 12 * (short)data1[3]; + doblend = 0; + i += boxextract(buf + i, data1, cols1, &doblend); + if (data1[0] > 32767) + boxextract(buf + i, data2, cols2, &doblend); + } + if (data1[0] == 32767) + continue; + if (data1[2] > 32767) { + if (overpaint) + continue; + data1[2] = ~data1[2]; + } + if (data1[3] > 32767) { + if (percent == 65536) + continue; + data1[3] = ~data1[3]; + } + if (data1[0] > 32767) { + data1[0] = ~data1[0]; + for (i = 0; i < 4; i++) + data1[i] = (data1[i] * (65536 - percent) + data2[i] * percent) >> 16; + for (i = 0; i < 16; i++) + cols1[i] = (cols1[i] * (65536 - percent) + cols2[i] * percent) >> 16; + } + *(unsigned int *)cols2 = *(unsigned int *)cols1; + a = cols2[3]; + if (a == 0 && !doblend) + continue; + + if (stixs >= 32768) { + xo = xs = (stixs ^ 65535) + data1[0]; + xe = stixe ? stixe + data1[0] : data1[2]; + } else if (stixe >= 32768) { + xs = stixs ? data1[2] - stixs : data1[0]; + xe = data1[2] - (stixe ^ 65535); + xo = xe + 1; + } else { + xo = xs = stixs; + xe = stixe ? stixe : data1[2]; + } + if (stiys >= 32768) { + yo = ys = (stiys ^ 65535) + data1[1]; + ye = stiye ? stiye + data1[1] : data1[3]; + } else if (stiye >= 32768) { + ys = stiys ? data1[3] - stiys : data1[1]; + ye = data1[3] - (stiye ^ 65535); + yo = ye + 1; + } else { + yo = ys = stiys; + ye = stiye ? stiye : data1[3]; + } + xo = 32 - (xo & 31); + yo = stin - (yo % stin); + if (xs < data1[0]) + xs = data1[0]; + if (xe > data1[2]) + xe = data1[2]; + if (ys < data1[1]) + ys = data1[1]; + if (ye > data1[3]) + ye = data1[3]; + + for (y = ys; y <= ye; y++) { + sti = stipple[(y + yo) % stin]; + x = (xs + xo) & 31; + if (x) + sti = (sti << x) | (sti >> (32 - x)); + if (doblend) { + if ((p = data1[3] - data1[1]) != 0) + p = ((y - data1[1]) << 16) / p; + for (i = 0; i < 8; i++) + cols2[i + 8] = (cols1[i] * (65536 - p) + cols1[i + 8] * p) >> 16; + } + add = (xs & 1); + add ^= (add ^ y) & 1 ? 1 : 3; /* 2x2 ordered dithering */ + picp = (unsigned short *)(pic + xs * 2 + y * bytes); + for (x = xs; x <= xe; x++) { + if (!(sti & 0x80000000)) { + sti <<= 1; + picp++; + add ^= 3; + continue; + } + sti = (sti << 1) | 1; + if (doblend) { + if ((p = data1[2] - data1[0]) != 0) + p = ((x - data1[0]) << 16) / p; + for (i = 0; i < 4; i++) + cols2[i] = (cols2[i + 8] * (65536 - p) + cols2[i + 12] * p) >> 16; + a = cols2[3]; + } + r = cols2[0]; + g = cols2[1]; + b = cols2[2]; + if (a != 255) { + i = *picp; + r = ((i >> 8 & 0xf8) * (255 - a) + r * a) / 255; + g = ((i >> 3 & 0xfc) * (255 - a) + g * a) / 255; + b = ((i << 3 & 0xf8) * (255 - a) + b * a) / 255; + } + #define CLAMP(x) ((x) >= 256 ? 255 : (x)) + i = ((CLAMP(r + add*2+1) & 0xf8) << 8) | + ((CLAMP(g + add ) & 0xfc) << 3) | + ((CLAMP(b + add*2+1) ) >> 3); + *picp++ = i; + add ^= 3; + } + } + } +} + +static int splash_check_jpeg(unsigned char *jpeg, int width, int height, int depth) +{ + int size, err; + unsigned char *mem; + + size = ((width + 15) & ~15) * ((height + 15) & ~15) * (depth >> 3); + mem = vmalloc(size); + if (!mem) { + printk(KERN_INFO "bootsplash: no memory for decoded picture.\n"); + return -1; + } + if (!decdata) + decdata = vmalloc(sizeof(*decdata)); + if ((err = jpeg_decode(jpeg, mem, ((width + 15) & ~15), ((height + 15) & ~15), depth, decdata))) + printk(KERN_INFO "bootsplash: error while decompressing picture: %s (%d)\n",jpg_errors[err - 1], err); + vfree(mem); + return err ? -1 : 0; +} + +static void splash_free(struct vc_data *vc, struct fb_info *info) +{ + if (!vc->vc_splash_data) + return; + if (info->silent_screen_base) + info->screen_base = info->silent_screen_base; + info->silent_screen_base = 0; + if (vc->vc_splash_data->splash_silentjpeg) + vfree(vc->vc_splash_data->splash_sboxes); + vfree(vc->vc_splash_data); + vc->vc_splash_data = 0; + info->splash_data = 0; +} + +static int splash_mkpenguin(struct splash_data *data, int pxo, int pyo, int pwi, int phe, int pr, int pg, int pb) +{ + unsigned char *buf; + int i; + + if (pwi ==0 || phe == 0) + return 0; + buf = (unsigned char *)data + sizeof(*data); + pwi += pxo - 1; + phe += pyo - 1; + *buf++ = pxo; + *buf++ = pxo >> 8; + *buf++ = pyo; + *buf++ = pyo >> 8; + *buf++ = pwi; + *buf++ = pwi >> 8; + *buf++ = phe; + *buf++ = phe >> 8; + *buf++ = pr; + *buf++ = pg; + *buf++ = pb; + *buf++ = 0; + for (i = 0; i < 12; i++, buf++) + *buf = buf[-12]; + buf[-24] ^= 0xff; + buf[-23] ^= 0xff; + buf[-1] = 0xff; + return 2; +} + +static const int splash_offsets[3][16] = { + /* len, unit, size, state, fgcol, col, xo, yo, wi, he + boxcnt, ssize, sboxcnt, percent, overok, palcnt */ + /* V1 */ + { 20, -1, 16, -1, -1, -1, 8, 10, 12, 14, + -1, -1, -1, -1, -1, -1 }, + /* V2 */ + { 35, 8, 12, 9, 10, 11, 16, 18, 20, 22, + -1, -1, -1, -1, -1, -1 }, + /* V3 */ + { 38, 8, 12, 9, 10, 11, 16, 18, 20, 22, + 24, 28, 32, 34, 36, 37 }, +}; + +#define SPLASH_OFF_LEN offsets[0] +#define SPLASH_OFF_UNIT offsets[1] +#define SPLASH_OFF_SIZE offsets[2] +#define SPLASH_OFF_STATE offsets[3] +#define SPLASH_OFF_FGCOL offsets[4] +#define SPLASH_OFF_COL offsets[5] +#define SPLASH_OFF_XO offsets[6] +#define SPLASH_OFF_YO offsets[7] +#define SPLASH_OFF_WI offsets[8] +#define SPLASH_OFF_HE offsets[9] +#define SPLASH_OFF_BOXCNT offsets[10] +#define SPLASH_OFF_SSIZE offsets[11] +#define SPLASH_OFF_SBOXCNT offsets[12] +#define SPLASH_OFF_PERCENT offsets[13] +#define SPLASH_OFF_OVEROK offsets[14] +#define SPLASH_OFF_PALCNT offsets[15] + +static inline int splash_getb(unsigned char *pos, int off) +{ + return off == -1 ? 0 : pos[off]; +} + +static inline int splash_gets(unsigned char *pos, int off) +{ + return off == -1 ? 0 : pos[off] | pos[off + 1] << 8; +} + +static inline int splash_geti(unsigned char *pos, int off) +{ + return off == -1 ? 0 : + pos[off] | pos[off + 1] << 8 | pos[off + 2] << 16 | pos[off + 3] << 24; +} + +static int splash_getraw(unsigned char *start, unsigned char *end, int *update) +{ + unsigned char *ndata; + int version; + int splash_size; + int unit; + int width, height; + int silentsize; + int boxcnt; + int sboxcnt; + int palcnt; + int i, len; + const int *offsets; + struct vc_data *vc; + struct fb_info *info; + struct splash_data *sd; + + if (update) + *update = -1; + + if (!update || start[7] < '2' || start[7] > '3' || splash_geti(start, 12) != (int)0xffffffff) + printk(KERN_INFO "bootsplash %s: looking for picture...", SPLASH_VERSION); + + for (ndata = start; ndata < end; ndata++) { + if (ndata[0] != 'B' || ndata[1] != 'O' || ndata[2] != 'O' || ndata[3] != 'T') + continue; + if (ndata[4] != 'S' || ndata[5] != 'P' || ndata[6] != 'L' || ndata[7] < '1' || ndata[7] > '3') + continue; + version = ndata[7] - '0'; + offsets = splash_offsets[version - 1]; + len = SPLASH_OFF_LEN; + unit = splash_getb(ndata, SPLASH_OFF_UNIT); + if (unit >= MAX_NR_CONSOLES) + continue; + if (unit) { + vc_allocate(unit); + } + vc = vc_cons[unit].d; + info = registered_fb[(int)con2fb_map[unit]]; + width = info->var.xres; + height = info->var.yres; + splash_size = splash_geti(ndata, SPLASH_OFF_SIZE); + if (splash_size == (int)0xffffffff && version > 1) { + if ((sd = vc->vc_splash_data) != 0) { + int up = 0; + i = splash_getb(ndata, SPLASH_OFF_STATE); + if (i != 255) { + sd->splash_state = i; + up = -1; + } + i = splash_getb(ndata, SPLASH_OFF_FGCOL); + if (i != 255) { + sd->splash_fg_color = i; + up = -1; + } + i = splash_getb(ndata, SPLASH_OFF_COL); + if (i != 255) { + sd->splash_color = i; + up = -1; + } + boxcnt = sboxcnt = 0; + if (ndata + len <= end) { + boxcnt = splash_gets(ndata, SPLASH_OFF_BOXCNT); + sboxcnt = splash_gets(ndata, SPLASH_OFF_SBOXCNT); + } + if (boxcnt) { + i = splash_gets(ndata, len); + if (boxcnt + i <= sd->splash_boxcount && ndata + len + 2 + boxcnt * 12 <= end) { + + if (splash_geti(ndata, len + 2) != 0x7ffd7fff || !memcmp(ndata + len + 2, sd->splash_boxes + i * 12, 8)) { + + memcpy(sd->splash_boxes + i * 12, ndata + len + 2, boxcnt * 12); + up |= 1; + } + } + len += boxcnt * 12 + 2; + } + if (sboxcnt) { + i = splash_gets(ndata, len); + if (sboxcnt + i <= sd->splash_sboxcount && ndata + len + 2 + sboxcnt * 12 <= end) { + if (splash_geti(ndata, len + 2) != 0x7ffd7fff || !memcmp(ndata + len + 2, sd->splash_sboxes + i * 12, 8)) { + memcpy(sd->splash_sboxes + i * 12, ndata + len + 2, sboxcnt * 12); + up |= 2; + } + } + } + if (update) + *update = up; + } + return unit; + } + if (splash_size == 0) { + printk(KERN_INFO"...found, freeing memory.\n"); + if (vc->vc_splash_data) + splash_free(vc, info); + return unit; + } + boxcnt = splash_gets(ndata, SPLASH_OFF_BOXCNT); + palcnt = 3 * splash_getb(ndata, SPLASH_OFF_PALCNT); + if (ndata + len + splash_size > end) { + printk(KERN_INFO "...found, but truncated!\n"); + return -1; + } + if (!jpeg_check_size(ndata + len + boxcnt * 12 + palcnt, width, height)) { + ndata += len + splash_size - 1; + continue; + } + if (splash_check_jpeg(ndata + len + boxcnt * 12 + palcnt, width, height, info->var.bits_per_pixel)) + return -1; + silentsize = splash_geti(ndata, SPLASH_OFF_SSIZE); + if (silentsize) + printk(KERN_INFO" silentjpeg size %d bytes,", silentsize); + if (silentsize >= splash_size) { + printk(KERN_INFO " bigger than splashsize!\n"); + return -1; + } + splash_size -= silentsize; + if (!splash_usesilent) + silentsize = 0; + else if (height * 2 * info->fix.line_length > info->fix.smem_len) { + printk(KERN_INFO " does not fit into framebuffer.\n"); + silentsize = 0; + } + sboxcnt = splash_gets(ndata, SPLASH_OFF_SBOXCNT); + if (silentsize) { + unsigned char *simage = ndata + len + splash_size + 12 * sboxcnt; + if (!jpeg_check_size(simage, width, height) || + splash_check_jpeg(simage, width, height, info->var.bits_per_pixel)) { + printk(KERN_INFO " error in silent jpeg.\n"); + silentsize = 0; + } + } + if (vc->vc_splash_data) + splash_free(vc, info); + vc->vc_splash_data = sd = vmalloc(sizeof(*sd) + splash_size + (version < 3 ? 2 * 12 : 0)); + if (!sd) + break; + sd->splash_silentjpeg = 0; + sd->splash_sboxes = 0; + sd->splash_sboxcount = 0; + if (silentsize) { + sd->splash_silentjpeg = vmalloc(silentsize); + if (sd->splash_silentjpeg) { + memcpy(sd->splash_silentjpeg, ndata + len + splash_size, silentsize); + sd->splash_sboxes = vc->vc_splash_data->splash_silentjpeg; + sd->splash_silentjpeg += 12 * sboxcnt; + sd->splash_sboxcount = sboxcnt; + } + } + sd->splash_state = splash_getb(ndata, SPLASH_OFF_STATE); + sd->splash_fg_color = splash_getb(ndata, SPLASH_OFF_FGCOL); + sd->splash_color = splash_getb(ndata, SPLASH_OFF_COL); + sd->splash_overpaintok = splash_getb(ndata, SPLASH_OFF_OVEROK); + sd->splash_text_xo = splash_gets(ndata, SPLASH_OFF_XO); + sd->splash_text_yo = splash_gets(ndata, SPLASH_OFF_YO); + sd->splash_text_wi = splash_gets(ndata, SPLASH_OFF_WI); + sd->splash_text_he = splash_gets(ndata, SPLASH_OFF_HE); + sd->splash_percent = splash_gets(ndata, SPLASH_OFF_PERCENT); + if (version == 1) { + sd->splash_text_xo *= 8; + sd->splash_text_wi *= 8; + sd->splash_text_yo *= 16; + sd->splash_text_he *= 16; + sd->splash_color = (splash_default >> 8) & 0x0f; + sd->splash_fg_color = (splash_default >> 4) & 0x0f; + sd->splash_state = splash_default & 1; + } + if (sd->splash_text_xo + sd->splash_text_wi > width || sd->splash_text_yo + sd->splash_text_he > height) { + splash_free(vc, info); + printk(KERN_INFO " found, but has oversized text area!\n"); + return -1; + } +/* if (!vc_cons[unit].d || info->fbops != &vesafb_ops) { + splash_free(vc, info); + printk(KERN_INFO " found, but framebuffer can't handle it!\n"); + return -1; + } */ + printk(KERN_INFO "...found (%dx%d, %d bytes, v%d).\n", width, height, splash_size, version); + if (version == 1) { + printk(KERN_WARNING "bootsplash: Using deprecated v1 header. Updating your splash utility recommended.\n"); + printk(KERN_INFO "bootsplash: Find the latest version at http://www.bootsplash.org/\n"); + } + + /* fake penguin box for older formats */ + if (version == 1) + boxcnt = splash_mkpenguin(sd, sd->splash_text_xo + 10, sd->splash_text_yo + 10, sd->splash_text_wi - 20, sd->splash_text_he - 20, 0xf0, 0xf0, 0xf0); + else if (version == 2) + boxcnt = splash_mkpenguin(sd, splash_gets(ndata, 24), splash_gets(ndata, 26), splash_gets(ndata, 28), splash_gets(ndata, 30), splash_getb(ndata, 32), splash_getb(ndata, 33), splash_getb(ndata, 34)); + + memcpy((char *)sd + sizeof(*sd) + (version < 3 ? boxcnt * 12 : 0), ndata + len, splash_size); + sd->splash_boxcount = boxcnt; + sd->splash_boxes = (unsigned char *)sd + sizeof(*sd); + sd->splash_palette = sd->splash_boxes + boxcnt * 12; + sd->splash_jpeg = sd->splash_palette + palcnt; + sd->splash_palcnt = palcnt / 3; + sd->splash_dosilent = sd->splash_silentjpeg != 0; + return unit; + } + printk(KERN_INFO "...no good signature found.\n"); + return -1; +} + +int splash_verbose(void) +{ + struct vc_data *vc; + struct fb_info *info; + + if (!splash_usesilent) + return 0; + + vc = vc_cons[0].d; + + if (!vc || !vc->vc_splash_data || !vc->vc_splash_data->splash_state) + return 0; + if (fg_console != vc->vc_num) + return 0; + if (!vc->vc_splash_data->splash_silentjpeg || !vc->vc_splash_data->splash_dosilent) + return 0; + vc->vc_splash_data->splash_dosilent = 0; + info = registered_fb[(int)con2fb_map[0]]; + if (!info->silent_screen_base) + return 0; + splashcopy(info->silent_screen_base, info->screen_base, info->var.yres, info->var.xres, info->fix.line_length, info->fix.line_length); + info->screen_base = info->silent_screen_base; + info->silent_screen_base = 0; + return 1; +} + +static void splash_off(struct fb_info *info) +{ + if (info->silent_screen_base) + info->screen_base = info->silent_screen_base; + info->silent_screen_base = 0; + info->splash_data = 0; + if (info->splash_pic) + vfree(info->splash_pic); + info->splash_pic = 0; + info->splash_pic_size = 0; +} + +int splash_prepare(struct vc_data *vc, struct fb_info *info) +{ + int err; + int width, height, depth, size, sbytes; + + if (!vc->vc_splash_data || !vc->vc_splash_data->splash_state) { + if (decdata) + vfree(decdata); + decdata = 0; + splash_off(info); + return -1; + } + + width = info->var.xres; + height = info->var.yres; + depth = info->var.bits_per_pixel; + if (depth != 16) { /* Other targets might need fixing */ + splash_off(info); + return -2; + } + + sbytes = ((width + 15) & ~15) * (depth >> 3); + size = sbytes * ((height + 15) & ~15); + if (size != info->splash_pic_size) + splash_off(info); + if (!info->splash_pic) + info->splash_pic = vmalloc(size); + + if (!info->splash_pic) { + printk(KERN_INFO "bootsplash: not enough memory.\n"); + splash_off(info); + return -3; + } + + if (!decdata) + decdata = vmalloc(sizeof(*decdata)); + + if (vc->vc_splash_data->splash_silentjpeg && vc->vc_splash_data->splash_dosilent) { + /* fill area after framebuffer with other jpeg */ + if ((err = jpeg_decode(vc->vc_splash_data->splash_silentjpeg, info->splash_pic, + ((width + 15) & ~15), ((height + 15) & ~15), depth, decdata))) { + printk(KERN_INFO "bootsplash: error while decompressing silent picture: %s (%d)\n", jpg_errors[err - 1], err); + if (info->silent_screen_base) + info->screen_base = info->silent_screen_base; + vc->vc_splash_data->splash_dosilent = 0; + } else { + if (vc->vc_splash_data->splash_sboxcount) + boxit(info->splash_pic, sbytes, vc->vc_splash_data->splash_sboxes, + vc->vc_splash_data->splash_sboxcount, vc->vc_splash_data->splash_percent, 0); + + if (!info->silent_screen_base) + info->silent_screen_base = info->screen_base; + splashcopy(info->silent_screen_base, info->splash_pic, info->var.yres, info->var.xres, info->fix.line_length, sbytes); + info->screen_base = info->silent_screen_base + info->fix.line_length * info->var.yres; + } + } else if (info->silent_screen_base) + info->screen_base = info->silent_screen_base; + + if ((err = jpeg_decode(vc->vc_splash_data->splash_jpeg, info->splash_pic, + ((width + 15) & ~15), ((height + 15) & ~15), depth, decdata))) { + printk(KERN_INFO "bootsplash: error while decompressing picture: %s (%d) .\n", jpg_errors[err - 1], err); + splash_off(info); + return -4; + } + info->splash_pic_size = size; + info->splash_bytes = sbytes; + if (vc->vc_splash_data->splash_boxcount) + boxit(info->splash_pic, sbytes, vc->vc_splash_data->splash_boxes, vc->vc_splash_data->splash_boxcount, vc->vc_splash_data->splash_percent, 0); + if (vc->vc_splash_data->splash_state) + info->splash_data = vc->vc_splash_data; + else + splash_off(info); + return 0; +} + + +#ifdef CONFIG_PROC_FS + +#include + +static int splash_read_proc(char *buffer, char **start, off_t offset, int size, + int *eof, void *data); +static int splash_write_proc(struct file *file, const char *buffer, + unsigned long count, void *data); +static int splash_status(struct vc_data *vc); +static int splash_recolor(struct vc_data *vc); +static int splash_proc_register(void); + +static struct proc_dir_entry *proc_splash; + +static int splash_recolor(struct vc_data *vc) +{ + if (!vc->vc_splash_data) + return -1; + if (!vc->vc_splash_data->splash_state) + return 0; + con_remap_def_color(vc, vc->vc_splash_data->splash_color << 4 | vc->vc_splash_data->splash_fg_color); + if (fg_console == vc->vc_num) { + update_region(vc, vc->vc_origin + vc->vc_size_row * vc->vc_top, + vc->vc_size_row * (vc->vc_bottom - vc->vc_top) / 2); + } + return 0; +} + +static int splash_status(struct vc_data *vc) +{ + struct fb_info *info; + printk(KERN_INFO "bootsplash: status on console %d changed to %s\n", vc->vc_num, vc->vc_splash_data && vc->vc_splash_data->splash_state ? "on" : "off"); + + info = registered_fb[(int) con2fb_map[vc->vc_num]]; + if (fg_console == vc->vc_num) + splash_prepare(vc, info); + if (vc->vc_splash_data && vc->vc_splash_data->splash_state) { + con_remap_def_color(vc, vc->vc_splash_data->splash_color << 4 | vc->vc_splash_data->splash_fg_color); + /* vc_resize also calls con_switch which resets yscroll */ + vc_resize(vc, vc->vc_splash_data->splash_text_wi / vc->vc_font.width, vc->vc_splash_data->splash_text_he / vc->vc_font.height); + if (fg_console == vc->vc_num) { + update_region(vc, vc->vc_origin + vc->vc_size_row * vc->vc_top, + vc->vc_size_row * (vc->vc_bottom - vc->vc_top) / 2); + splash_clear_margins(vc->vc_splash_data, vc, info, 0); + } + } else { + /* Switch bootsplash off */ + con_remap_def_color(vc, 0x07); + vc_resize(vc, info->var.xres / vc->vc_font.width, info->var.yres / vc->vc_font.height); + } + return 0; +} + +static int splash_read_proc(char *buffer, char **start, off_t offset, int size, + int *eof, void *data) +{ + int len = 0; + off_t begin = 0; + struct vc_data *vc = vc_cons[0].d; + struct fb_info *info = registered_fb[(int)con2fb_map[0]]; + int color = vc->vc_splash_data ? vc->vc_splash_data->splash_color << 4 | + vc->vc_splash_data->splash_fg_color : splash_default >> 4; + int status = vc->vc_splash_data ? vc->vc_splash_data->splash_state & 1 : 0; + len += sprintf(buffer + len, "Splash screen v%s (0x%02x, %dx%d%s): %s\n", + SPLASH_VERSION, color, info->var.xres, info->var.yres, + (vc->vc_splash_data ? vc->vc_splash_data->splash_dosilent : 0)? ", silent" : "", + status ? "on" : "off"); + if (offset >= begin + len) + return 0; + + *start = buffer + (begin - offset); + + return (size < begin + len - offset ? size : begin + len - offset); +} + +static int splash_write_proc(struct file *file, const char *buffer, + unsigned long count, void *data) +{ + int new, unit; + struct vc_data *vc; + + if (!buffer || !splash_default) + return count; + + acquire_console_sem(); + if (!strncmp(buffer, "show", 4) || !strncmp(buffer, "hide", 4)) { + int pe, oldpe; + + vc = vc_cons[0].d; + if (buffer[4] == ' ' && buffer[5] == 'p') + pe = 0; + else if (buffer[4] == '\n') + pe = 65535; + else + pe = simple_strtoul(buffer + 5, NULL, 0); + if (pe < 0) + pe = 0; + if (pe > 65535) + pe = 65535; + if (*buffer == 'h') + pe = 65535 - pe; + pe += pe > 32767; + if (vc->vc_splash_data && vc->vc_splash_data->splash_percent != pe) { + struct fb_info *info; + struct fbcon_ops *ops; + + oldpe = vc->vc_splash_data->splash_percent; + vc->vc_splash_data->splash_percent = pe; + if (fg_console != 0 || !vc->vc_splash_data->splash_state) { + release_console_sem(); + return count; + } + info = registered_fb[(int) con2fb_map[vc->vc_num]]; + ops = info->fbcon_par; + if (ops->blank_state) { + release_console_sem(); + return count; + } + if (!vc->vc_splash_data->splash_overpaintok || pe == 65536 || pe < oldpe) { + if (splash_hasinter(vc->vc_splash_data->splash_boxes, vc->vc_splash_data->splash_boxcount)) + splash_status(vc); + else + splash_prepare(vc, info); + } else { + if (vc->vc_splash_data->splash_silentjpeg && vc->vc_splash_data->splash_dosilent && info->silent_screen_base) + boxit(info->silent_screen_base, info->fix.line_length, vc->vc_splash_data->splash_sboxes, vc->vc_splash_data->splash_sboxcount, vc->vc_splash_data->splash_percent, 1); + boxit(info->screen_base, info->fix.line_length, vc->vc_splash_data->splash_boxes, vc->vc_splash_data->splash_boxcount, vc->vc_splash_data->splash_percent, 1); + } + } + release_console_sem(); + return count; + } + if (!strncmp(buffer,"silent\n",7) || !strncmp(buffer,"verbose\n",8)) { + vc = vc_cons[0].d; + if (vc->vc_splash_data && vc->vc_splash_data->splash_silentjpeg) { + if (vc->vc_splash_data->splash_dosilent != (buffer[0] == 's')) { + vc->vc_splash_data->splash_dosilent = buffer[0] == 's'; + splash_status(vc); + } + } + release_console_sem(); + return count; + } + if (!strncmp(buffer,"freesilent\n",11)) { + vc = vc_cons[0].d; + if (vc->vc_splash_data && vc->vc_splash_data->splash_silentjpeg) { + printk(KERN_INFO "bootsplash: freeing silent jpeg\n"); + vc->vc_splash_data->splash_silentjpeg = 0; + vfree(vc->vc_splash_data->splash_sboxes); + vc->vc_splash_data->splash_sboxes = 0; + vc->vc_splash_data->splash_sboxcount = 0; + if (vc->vc_splash_data->splash_dosilent) + splash_status(vc); + vc->vc_splash_data->splash_dosilent = 0; + } + release_console_sem(); + return count; + } + + if (!strncmp(buffer, "BOOTSPL", 7)) { + int up = -1; + unit = splash_getraw((unsigned char *)buffer, (unsigned char *)buffer + count, &up); + if (unit >= 0) { + vc = vc_cons[unit].d; + if (up == -1) + splash_status(vc); + else { + struct fb_info *info = registered_fb[(int) con2fb_map[vc->vc_num]]; + struct fbcon_ops *ops = info->fbcon_par; + if (ops->blank_state) + up = 0; + if ((up & 2) != 0 && vc->vc_splash_data->splash_silentjpeg && vc->vc_splash_data->splash_dosilent && info->silent_screen_base) + boxit(info->silent_screen_base, info->fix.line_length, vc->vc_splash_data->splash_sboxes, vc->vc_splash_data->splash_sboxcount, vc->vc_splash_data->splash_percent, 1); + if ((up & 1) != 0) + boxit(info->screen_base, info->fix.line_length, vc->vc_splash_data->splash_boxes, vc->vc_splash_data->splash_boxcount, vc->vc_splash_data->splash_percent, 1); + } + } + release_console_sem(); + return count; + } + vc = vc_cons[0].d; + if (!vc->vc_splash_data) { + release_console_sem(); + return count; + } + if (buffer[0] == 't') { + vc->vc_splash_data->splash_state ^= 1; + splash_status(vc); + release_console_sem(); + return count; + } + new = simple_strtoul(buffer, NULL, 0); + if (new > 1) { + /* expert user */ + vc->vc_splash_data->splash_color = new >> 8 & 0xff; + vc->vc_splash_data->splash_fg_color = new >> 4 & 0x0f; + } + if ((new & 1) == vc->vc_splash_data->splash_state) + splash_recolor(vc); + else { + vc->vc_splash_data->splash_state = new & 1; + splash_status(vc); + } + release_console_sem(); + return count; +} + +static int splash_proc_register(void) +{ + if ((proc_splash = create_proc_entry("splash", 0, 0))) { + proc_splash->read_proc = splash_read_proc; + proc_splash->write_proc = splash_write_proc; + return 0; + } + return 1; +} + +# if 0 +static int splash_proc_unregister(void) +{ + if (proc_splash) + remove_proc_entry("splash", 0); + return 0; +} +# endif +#endif /* CONFIG_PROC_FS */ + +void splash_init(void) +{ + struct fb_info *info; + struct vc_data *vc; + int isramfs = 1; + int fd; + int len; + int max_len = 1024*1024*2; + char *mem; + + if (splash_registered) + return; + vc = vc_cons[0].d; + info = registered_fb[0]; + if (!vc || !info || info->var.bits_per_pixel != 16) + return; +#ifdef CONFIG_PROC_FS + splash_proc_register(); +#endif + splash_registered = 1; + if (vc->vc_splash_data) + return; + if ((fd = sys_open("/bootsplash", O_RDONLY, 0)) < 0) { + isramfs = 0; + fd = sys_open("/initrd.image", O_RDONLY, 0); + } + if (fd < 0) + return; + if ((len = (int)sys_lseek(fd, (off_t)0, 2)) <= 0) { + sys_close(fd); + return; + } + /* Don't look for more than the last 2MB */ + if (len > max_len) { + printk( KERN_INFO "bootsplash: scanning last %dMB of initrd for signature\n", + max_len>>20); + sys_lseek(fd, (off_t)(len - max_len), 0); + len = max_len; + } else { + sys_lseek(fd, (off_t)0, 0); + } + + mem = vmalloc(len); + if (mem) { + acquire_console_sem(); + if ((int)sys_read(fd, mem, len) == len && splash_getraw((unsigned char *)mem, (unsigned char *)mem + len, (int *)0) == 0 && vc->vc_splash_data) + vc->vc_splash_data->splash_state = splash_default & 1; + release_console_sem(); + vfree(mem); + } + sys_close(fd); + if (isramfs) + sys_unlink("/bootsplash"); + return; +} + diff -urN linux-2.6.21-orig/drivers/video/bootsplash/bootsplash.h linux-2.6.21/drivers/video/bootsplash/bootsplash.h --- linux-2.6.21-orig/drivers/video/bootsplash/bootsplash.h 1970-01-01 03:00:00.000000000 +0300 +++ linux-2.6.21/drivers/video/bootsplash/bootsplash.h 2007-04-26 11:29:26.000000000 +0300 @@ -0,0 +1,44 @@ +/* + * linux/drivers/video/bootsplash/bootsplash.h - splash screen definition. + * + * (w) 2001-2003 by Volker Poplawski, + * Stefan Reinauer, + * + * + * idea and SuSE screen work by Ken Wimer, + */ + +#ifndef __BOOTSPLASH_H +#define __BOOTSPLASH_H + +struct fb_info; + +/* splash.c */ +extern int splash_prepare(struct vc_data *, struct fb_info *); +extern void splash_init(void); + +/* splash_render.c */ +extern void splash_putcs(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, + const unsigned short *s, int count, int ypos, int xpos); +extern void splash_putc(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, + int c, int ypos, int xpos); +extern void splashcopy(u8 *dst, u8 *src, int height, int width, int dstbytes, int srcbytes); +extern void splash_clear(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, int sy, + int sx, int height, int width); +extern void splash_bmove(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, int sy, + int sx, int dy, int dx, int height, int width); +extern void splash_clear_margins(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, + int bottom_only); +extern int splash_cursor(struct splash_data *sd, struct fb_info *info, struct fb_cursor *cursor); +extern void splash_bmove_redraw(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, + int y, int sx, int dx, int width); +extern void splash_blank(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, + int blank); + +/* vt.c */ +extern void con_remap_def_color(struct vc_data *, int new_color); + +extern void acquire_console_sem(void); +extern void release_console_sem(void); + +#endif diff -urN linux-2.6.21-orig/drivers/video/bootsplash/decode-jpg.c linux-2.6.21/drivers/video/bootsplash/decode-jpg.c --- linux-2.6.21-orig/drivers/video/bootsplash/decode-jpg.c 1970-01-01 03:00:00.000000000 +0300 +++ linux-2.6.21/drivers/video/bootsplash/decode-jpg.c 2007-04-26 11:29:26.000000000 +0300 @@ -0,0 +1,957 @@ +/* + * linux/drivers/video/bootsplash/decode-jpg.c - a tiny jpeg decoder. + * + * (w) August 2001 by Michael Schroeder, + * + */ + +#include +#include + +#include "decode-jpg.h" + +#define ISHIFT 11 + +#define IFIX(a) ((int)((a) * (1 << ISHIFT) + .5)) +#define IMULT(a, b) (((a) * (b)) >> ISHIFT) +#define ITOINT(a) ((a) >> ISHIFT) + +#ifndef __P +# define __P(x) x +#endif + +/* special markers */ +#define M_BADHUFF -1 +#define M_EOF 0x80 + +struct in { + unsigned char *p; + unsigned int bits; + int left; + int marker; + + int (*func) __P((void *)); + void *data; +}; + +/*********************************/ +struct dec_hufftbl; +struct enc_hufftbl; + +union hufftblp { + struct dec_hufftbl *dhuff; + struct enc_hufftbl *ehuff; +}; + +struct scan { + int dc; /* old dc value */ + + union hufftblp hudc; + union hufftblp huac; + int next; /* when to switch to next scan */ + + int cid; /* component id */ + int hv; /* horiz/vert, copied from comp */ + int tq; /* quant tbl, copied from comp */ +}; + +/*********************************/ + +#define DECBITS 10 /* seems to be the optimum */ + +struct dec_hufftbl { + int maxcode[17]; + int valptr[16]; + unsigned char vals[256]; + unsigned int llvals[1 << DECBITS]; +}; + +static void decode_mcus __P((struct in *, int *, int, struct scan *, int *)); +static int dec_readmarker __P((struct in *)); +static void dec_makehuff __P((struct dec_hufftbl *, int *, unsigned char *)); + +static void setinput __P((struct in *, unsigned char *)); +/*********************************/ + +#undef PREC +#define PREC int + +static void idctqtab __P((unsigned char *, PREC *)); +static void idct __P((int *, int *, PREC *, PREC, int)); +static void scaleidctqtab __P((PREC *, PREC)); + +/*********************************/ + +static void initcol __P((PREC[][64])); + +static void col221111 __P((int *, unsigned char *, int)); +static void col221111_16 __P((int *, unsigned char *, int)); + +/*********************************/ + +#define M_SOI 0xd8 +#define M_APP0 0xe0 +#define M_DQT 0xdb +#define M_SOF0 0xc0 +#define M_DHT 0xc4 +#define M_DRI 0xdd +#define M_SOS 0xda +#define M_RST0 0xd0 +#define M_EOI 0xd9 +#define M_COM 0xfe + +static unsigned char *datap; + +static int getbyte(void) +{ + return *datap++; +} + +static int getword(void) +{ + int c1, c2; + c1 = *datap++; + c2 = *datap++; + return c1 << 8 | c2; +} + +struct comp { + int cid; + int hv; + int tq; +}; + +#define MAXCOMP 4 +struct jpginfo { + int nc; /* number of components */ + int ns; /* number of scans */ + int dri; /* restart interval */ + int nm; /* mcus til next marker */ + int rm; /* next restart marker */ +}; + +static struct jpginfo info; +static struct comp comps[MAXCOMP]; + +static struct scan dscans[MAXCOMP]; + +static unsigned char quant[4][64]; + +static struct dec_hufftbl dhuff[4]; + +#define dec_huffdc (dhuff + 0) +#define dec_huffac (dhuff + 2) + +static struct in in; + +static int readtables(int till) +{ + int m, l, i, j, lq, pq, tq; + int tc, th, tt; + + for (;;) { + if (getbyte() != 0xff) + return -1; + if ((m = getbyte()) == till) + break; + + switch (m) { + case 0xc2: + return 0; + + case M_DQT: + lq = getword(); + while (lq > 2) { + pq = getbyte(); + tq = pq & 15; + if (tq > 3) + return -1; + pq >>= 4; + if (pq != 0) + return -1; + for (i = 0; i < 64; i++) + quant[tq][i] = getbyte(); + lq -= 64 + 1; + } + break; + + case M_DHT: + l = getword(); + while (l > 2) { + int hufflen[16], k; + unsigned char huffvals[256]; + + tc = getbyte(); + th = tc & 15; + tc >>= 4; + tt = tc * 2 + th; + if (tc > 1 || th > 1) + return -1; + for (i = 0; i < 16; i++) + hufflen[i] = getbyte(); + l -= 1 + 16; + k = 0; + for (i = 0; i < 16; i++) { + for (j = 0; j < hufflen[i]; j++) + huffvals[k++] = getbyte(); + l -= hufflen[i]; + } + dec_makehuff(dhuff + tt, hufflen, + huffvals); + } + break; + + case M_DRI: + l = getword(); + info.dri = getword(); + break; + + default: + l = getword(); + while (l-- > 2) + getbyte(); + break; + } + } + return 0; +} + +static void dec_initscans(void) +{ + int i; + + info.nm = info.dri + 1; + info.rm = M_RST0; + for (i = 0; i < info.ns; i++) + dscans[i].dc = 0; +} + +static int dec_checkmarker(void) +{ + int i; + + if (dec_readmarker(&in) != info.rm) + return -1; + info.nm = info.dri; + info.rm = (info.rm + 1) & ~0x08; + for (i = 0; i < info.ns; i++) + dscans[i].dc = 0; + return 0; +} + +int jpeg_check_size(unsigned char *buf, int width, int height) +{ + datap = buf; + getbyte(); + getbyte(); + readtables(M_SOF0); + getword(); + getbyte(); + if (height != getword() || width != getword()) + return 0; + return 1; +} + +int jpeg_decode(buf, pic, width, height, depth, decdata) +unsigned char *buf, *pic; +int width, height, depth; +struct jpeg_decdata *decdata; +{ + int i, j, m, tac, tdc; + int mcusx, mcusy, mx, my; + int max[6]; + + if (!decdata || !buf || !pic) + return -1; + datap = buf; + if (getbyte() != 0xff) + return ERR_NO_SOI; + if (getbyte() != M_SOI) + return ERR_NO_SOI; + if (readtables(M_SOF0)) + return ERR_BAD_TABLES; + getword(); + i = getbyte(); + if (i != 8) + return ERR_NOT_8BIT; + if (((getword() + 15) & ~15) != height) + return ERR_HEIGHT_MISMATCH; + if (((getword() + 15) & ~15) != width) + return ERR_WIDTH_MISMATCH; + if ((height & 15) || (width & 15)) + return ERR_BAD_WIDTH_OR_HEIGHT; + info.nc = getbyte(); + if (info.nc > MAXCOMP) + return ERR_TOO_MANY_COMPPS; + for (i = 0; i < info.nc; i++) { + int h, v; + comps[i].cid = getbyte(); + comps[i].hv = getbyte(); + v = comps[i].hv & 15; + h = comps[i].hv >> 4; + comps[i].tq = getbyte(); + if (h > 3 || v > 3) + return ERR_ILLEGAL_HV; + if (comps[i].tq > 3) + return ERR_QUANT_TABLE_SELECTOR; + } + if (readtables(M_SOS)) + return ERR_BAD_TABLES; + getword(); + info.ns = getbyte(); + if (info.ns != 3) + return ERR_NOT_YCBCR_221111; + for (i = 0; i < 3; i++) { + dscans[i].cid = getbyte(); + tdc = getbyte(); + tac = tdc & 15; + tdc >>= 4; + if (tdc > 1 || tac > 1) + return ERR_QUANT_TABLE_SELECTOR; + for (j = 0; j < info.nc; j++) + if (comps[j].cid == dscans[i].cid) + break; + if (j == info.nc) + return ERR_UNKNOWN_CID_IN_SCAN; + dscans[i].hv = comps[j].hv; + dscans[i].tq = comps[j].tq; + dscans[i].hudc.dhuff = dec_huffdc + tdc; + dscans[i].huac.dhuff = dec_huffac + tac; + } + + i = getbyte(); + j = getbyte(); + m = getbyte(); + + if (i != 0 || j != 63 || m != 0) + return ERR_NOT_SEQUENTIAL_DCT; + + if (dscans[0].cid != 1 || dscans[1].cid != 2 || dscans[2].cid != 3) + return ERR_NOT_YCBCR_221111; + + if (dscans[0].hv != 0x22 || dscans[1].hv != 0x11 || dscans[2].hv != 0x11) + return ERR_NOT_YCBCR_221111; + + mcusx = width >> 4; + mcusy = height >> 4; + + + idctqtab(quant[dscans[0].tq], decdata->dquant[0]); + idctqtab(quant[dscans[1].tq], decdata->dquant[1]); + idctqtab(quant[dscans[2].tq], decdata->dquant[2]); + initcol(decdata->dquant); + setinput(&in, datap); + +#if 0 + /* landing zone */ + img[len] = 0; + img[len + 1] = 0xff; + img[len + 2] = M_EOF; +#endif + + dec_initscans(); + + dscans[0].next = 6 - 4; + dscans[1].next = 6 - 4 - 1; + dscans[2].next = 6 - 4 - 1 - 1; /* 411 encoding */ + for (my = 0; my < mcusy; my++) { + for (mx = 0; mx < mcusx; mx++) { + if (info.dri && !--info.nm) + if (dec_checkmarker()) + return ERR_WRONG_MARKER; + + decode_mcus(&in, decdata->dcts, 6, dscans, max); + idct(decdata->dcts, decdata->out, decdata->dquant[0], IFIX(128.5), max[0]); + idct(decdata->dcts + 64, decdata->out + 64, decdata->dquant[0], IFIX(128.5), max[1]); + idct(decdata->dcts + 128, decdata->out + 128, decdata->dquant[0], IFIX(128.5), max[2]); + idct(decdata->dcts + 192, decdata->out + 192, decdata->dquant[0], IFIX(128.5), max[3]); + idct(decdata->dcts + 256, decdata->out + 256, decdata->dquant[1], IFIX(0.5), max[4]); + idct(decdata->dcts + 320, decdata->out + 320, decdata->dquant[2], IFIX(0.5), max[5]); + + switch (depth) { + case 24: + col221111(decdata->out, pic + (my * 16 * mcusx + mx) * 16 * 3, mcusx * 16 * 3); + break; + case 16: + col221111_16(decdata->out, pic + (my * 16 * mcusx + mx) * (16 * 2), mcusx * (16 * 2)); + break; + default: + return ERR_DEPTH_MISMATCH; + break; + } + } + } + + m = dec_readmarker(&in); + if (m != M_EOI) + return ERR_NO_EOI; + + return 0; +} + +/****************************************************************/ +/************** huffman decoder ***************/ +/****************************************************************/ + +static int fillbits __P((struct in *, int, unsigned int)); +static int dec_rec2 +__P((struct in *, struct dec_hufftbl *, int *, int, int)); + +static void setinput(in, p) +struct in *in; +unsigned char *p; +{ + in->p = p; + in->left = 0; + in->bits = 0; + in->marker = 0; +} + +static int fillbits(in, le, bi) +struct in *in; +int le; +unsigned int bi; +{ + int b, m; + + if (in->marker) { + if (le <= 16) + in->bits = bi << 16, le += 16; + return le; + } + while (le <= 24) { + b = *in->p++; + if (b == 0xff && (m = *in->p++) != 0) { + if (m == M_EOF) { + if (in->func && (m = in->func(in->data)) == 0) + continue; + } + in->marker = m; + if (le <= 16) + bi = bi << 16, le += 16; + break; + } + bi = bi << 8 | b; + le += 8; + } + in->bits = bi; /* tmp... 2 return values needed */ + return le; +} + +static int dec_readmarker(in) +struct in *in; +{ + int m; + + in->left = fillbits(in, in->left, in->bits); + if ((m = in->marker) == 0) + return 0; + in->left = 0; + in->marker = 0; + return m; +} + +#define LEBI_DCL int le, bi +#define LEBI_GET(in) (le = in->left, bi = in->bits) +#define LEBI_PUT(in) (in->left = le, in->bits = bi) + +#define GETBITS(in, n) ( \ + (le < (n) ? le = fillbits(in, le, bi), bi = in->bits : 0), \ + (le -= (n)), \ + bi >> le & ((1 << (n)) - 1) \ +) + +#define UNGETBITS(in, n) ( \ + le += (n) \ +) + + +static int dec_rec2(in, hu, runp, c, i) +struct in *in; +struct dec_hufftbl *hu; +int *runp; +int c, i; +{ + LEBI_DCL; + + LEBI_GET(in); + if (i) { + UNGETBITS(in, i & 127); + *runp = i >> 8 & 15; + i >>= 16; + } else { + for (i = DECBITS; (c = ((c << 1) | GETBITS(in, 1))) >= (hu->maxcode[i]); i++); + if (i >= 16) { + in->marker = M_BADHUFF; + return 0; + } + i = hu->vals[hu->valptr[i] + c - hu->maxcode[i - 1] * 2]; + *runp = i >> 4; + i &= 15; + } + if (i == 0) { /* sigh, 0xf0 is 11 bit */ + LEBI_PUT(in); + return 0; + } + /* receive part */ + c = GETBITS(in, i); + if (c < (1 << (i - 1))) + c += (-1 << i) + 1; + LEBI_PUT(in); + return c; +} + +#define DEC_REC(in, hu, r, i) ( \ + r = GETBITS(in, DECBITS), \ + i = hu->llvals[r], \ + i & 128 ? \ + ( \ + UNGETBITS(in, i & 127), \ + r = i >> 8 & 15, \ + i >> 16 \ + ) \ + : \ + ( \ + LEBI_PUT(in), \ + i = dec_rec2(in, hu, &r, r, i), \ + LEBI_GET(in), \ + i \ + ) \ +) + +static void decode_mcus(in, dct, n, sc, maxp) +struct in *in; +int *dct; +int n; +struct scan *sc; +int *maxp; +{ + struct dec_hufftbl *hu; + int i, r, t; + LEBI_DCL; + + memset(dct, 0, n * 64 * sizeof(*dct)); + LEBI_GET(in); + while (n-- > 0) { + hu = sc->hudc.dhuff; + *dct++ = (sc->dc += DEC_REC(in, hu, r, t)); + + hu = sc->huac.dhuff; + i = 63; + while (i > 0) { + t = DEC_REC(in, hu, r, t); + if (t == 0 && r == 0) { + dct += i; + break; + } + dct += r; + *dct++ = t; + i -= r + 1; + } + *maxp++ = 64 - i; + if (n == sc->next) + sc++; + } + LEBI_PUT(in); +} + +static void dec_makehuff(hu, hufflen, huffvals) +struct dec_hufftbl *hu; +int *hufflen; +unsigned char *huffvals; +{ + int code, k, i, j, d, x, c, v; + for (i = 0; i < (1 << DECBITS); i++) + hu->llvals[i] = 0; + +/* + * llvals layout: + * + * value v already known, run r, backup u bits: + * vvvvvvvvvvvvvvvv 0000 rrrr 1 uuuuuuu + * value unknown, size b bits, run r, backup u bits: + * 000000000000bbbb 0000 rrrr 0 uuuuuuu + * value and size unknown: + * 0000000000000000 0000 0000 0 0000000 + */ + code = 0; + k = 0; + for (i = 0; i < 16; i++, code <<= 1) { /* sizes */ + hu->valptr[i] = k; + for (j = 0; j < hufflen[i]; j++) { + hu->vals[k] = *huffvals++; + if (i < DECBITS) { + c = code << (DECBITS - 1 - i); + v = hu->vals[k] & 0x0f; /* size */ + for (d = 1 << (DECBITS - 1 - i); --d >= 0;) { + if (v + i < DECBITS) { /* both fit in table */ + x = d >> (DECBITS - 1 - v - + i); + if (v && x < (1 << (v - 1))) + x += (-1 << v) + 1; + x = x << 16 | (hu-> vals[k] & 0xf0) << 4 | + (DECBITS - (i + 1 + v)) | 128; + } else + x = v << 16 | (hu-> vals[k] & 0xf0) << 4 | + (DECBITS - (i + 1)); + hu->llvals[c | d] = x; + } + } + code++; + k++; + } + hu->maxcode[i] = code; + } + hu->maxcode[16] = 0x20000; /* always terminate decode */ +} + +/****************************************************************/ +/************** idct ***************/ +/****************************************************************/ + +#define ONE ((PREC)IFIX(1.)) +#define S2 ((PREC)IFIX(0.382683432)) +#define C2 ((PREC)IFIX(0.923879532)) +#define C4 ((PREC)IFIX(0.707106781)) + +#define S22 ((PREC)IFIX(2 * 0.382683432)) +#define C22 ((PREC)IFIX(2 * 0.923879532)) +#define IC4 ((PREC)IFIX(1 / 0.707106781)) + +#define C3IC1 ((PREC)IFIX(0.847759065)) /* c3/c1 */ +#define C5IC1 ((PREC)IFIX(0.566454497)) /* c5/c1 */ +#define C7IC1 ((PREC)IFIX(0.198912367)) /* c7/c1 */ + +#define XPP(a,b) (t = a + b, b = a - b, a = t) +#define XMP(a,b) (t = a - b, b = a + b, a = t) +#define XPM(a,b) (t = a + b, b = b - a, a = t) + +#define ROT(a,b,s,c) ( t = IMULT(a + b, s), \ + a = IMULT(a, c - s) + t, \ + b = IMULT(b, c + s) - t) + +#define IDCT \ +( \ + XPP(t0, t1), \ + XMP(t2, t3), \ + t2 = IMULT(t2, IC4) - t3, \ + XPP(t0, t3), \ + XPP(t1, t2), \ + XMP(t4, t7), \ + XPP(t5, t6), \ + XMP(t5, t7), \ + t5 = IMULT(t5, IC4), \ + ROT(t4, t6, S22, C22),\ + t6 -= t7, \ + t5 -= t6, \ + t4 -= t5, \ + XPP(t0, t7), \ + XPP(t1, t6), \ + XPP(t2, t5), \ + XPP(t3, t4) \ +) + +static unsigned char zig2[64] = { + 0, 2, 3, 9, 10, 20, 21, 35, + 14, 16, 25, 31, 39, 46, 50, 57, + 5, 7, 12, 18, 23, 33, 37, 48, + 27, 29, 41, 44, 52, 55, 59, 62, + 15, 26, 30, 40, 45, 51, 56, 58, + 1, 4, 8, 11, 19, 22, 34, 36, + 28, 42, 43, 53, 54, 60, 61, 63, + 6, 13, 17, 24, 32, 38, 47, 49 +}; + +void idct(in, out, quant, off, max) +int *in; +int *out; +PREC *quant; +PREC off; +int max; +{ + PREC t0, t1, t2, t3, t4, t5, t6, t7, t; + PREC tmp[64], *tmpp; + int i, j; + unsigned char *zig2p; + + t0 = off; + if (max == 1) { + t0 += in[0] * quant[0]; + for (i = 0; i < 64; i++) + out[i] = ITOINT(t0); + return; + } + zig2p = zig2; + tmpp = tmp; + for (i = 0; i < 8; i++) { + j = *zig2p++; + t0 += in[j] * quant[j]; + j = *zig2p++; + t5 = in[j] * quant[j]; + j = *zig2p++; + t2 = in[j] * quant[j]; + j = *zig2p++; + t7 = in[j] * quant[j]; + j = *zig2p++; + t1 = in[j] * quant[j]; + j = *zig2p++; + t4 = in[j] * quant[j]; + j = *zig2p++; + t3 = in[j] * quant[j]; + j = *zig2p++; + t6 = in[j] * quant[j]; + IDCT; + tmpp[0 * 8] = t0; + tmpp[1 * 8] = t1; + tmpp[2 * 8] = t2; + tmpp[3 * 8] = t3; + tmpp[4 * 8] = t4; + tmpp[5 * 8] = t5; + tmpp[6 * 8] = t6; + tmpp[7 * 8] = t7; + tmpp++; + t0 = 0; + } + for (i = 0; i < 8; i++) { + t0 = tmp[8 * i + 0]; + t1 = tmp[8 * i + 1]; + t2 = tmp[8 * i + 2]; + t3 = tmp[8 * i + 3]; + t4 = tmp[8 * i + 4]; + t5 = tmp[8 * i + 5]; + t6 = tmp[8 * i + 6]; + t7 = tmp[8 * i + 7]; + IDCT; + out[8 * i + 0] = ITOINT(t0); + out[8 * i + 1] = ITOINT(t1); + out[8 * i + 2] = ITOINT(t2); + out[8 * i + 3] = ITOINT(t3); + out[8 * i + 4] = ITOINT(t4); + out[8 * i + 5] = ITOINT(t5); + out[8 * i + 6] = ITOINT(t6); + out[8 * i + 7] = ITOINT(t7); + } +} + +static unsigned char zig[64] = { + 0, 1, 5, 6, 14, 15, 27, 28, + 2, 4, 7, 13, 16, 26, 29, 42, + 3, 8, 12, 17, 25, 30, 41, 43, + 9, 11, 18, 24, 31, 40, 44, 53, + 10, 19, 23, 32, 39, 45, 52, 54, + 20, 22, 33, 38, 46, 51, 55, 60, + 21, 34, 37, 47, 50, 56, 59, 61, + 35, 36, 48, 49, 57, 58, 62, 63 +}; + +static PREC aaidct[8] = { + IFIX(0.3535533906), IFIX(0.4903926402), + IFIX(0.4619397663), IFIX(0.4157348062), + IFIX(0.3535533906), IFIX(0.2777851165), + IFIX(0.1913417162), IFIX(0.0975451610) +}; + + +static void idctqtab(qin, qout) +unsigned char *qin; +PREC *qout; +{ + int i, j; + + for (i = 0; i < 8; i++) + for (j = 0; j < 8; j++) + qout[zig[i * 8 + j]] = qin[zig[i * 8 + j]] * + IMULT(aaidct[i], aaidct[j]); +} + +static void scaleidctqtab(q, sc) +PREC *q; +PREC sc; +{ + int i; + + for (i = 0; i < 64; i++) + q[i] = IMULT(q[i], sc); +} + +/****************************************************************/ +/************** color decoder ***************/ +/****************************************************************/ + +#define ROUND + +/* + * YCbCr Color transformation: + * + * y:0..255 Cb:-128..127 Cr:-128..127 + * + * R = Y + 1.40200 * Cr + * G = Y - 0.34414 * Cb - 0.71414 * Cr + * B = Y + 1.77200 * Cb + * + * => + * Cr *= 1.40200; + * Cb *= 1.77200; + * Cg = 0.19421 * Cb + .50937 * Cr; + * R = Y + Cr; + * G = Y - Cg; + * B = Y + Cb; + * + * => + * Cg = (50 * Cb + 130 * Cr + 128) >> 8; + */ + +static void initcol(q) +PREC q[][64]; +{ + scaleidctqtab(q[1], IFIX(1.77200)); + scaleidctqtab(q[2], IFIX(1.40200)); +} + +/* This is optimized for the stupid sun SUNWspro compiler. */ +#define STORECLAMP(a,x) \ +( \ + (a) = (x), \ + (unsigned int)(x) >= 256 ? \ + ((a) = (x) < 0 ? 0 : 255) \ + : \ + 0 \ +) + +#define CLAMP(x) ((unsigned int)(x) >= 256 ? ((x) < 0 ? 0 : 255) : (x)) + +#ifdef ROUND + +#define CBCRCG(yin, xin) \ +( \ + cb = outc[0 +yin*8+xin], \ + cr = outc[64+yin*8+xin], \ + cg = (50 * cb + 130 * cr + 128) >> 8 \ +) + +#else + +#define CBCRCG(yin, xin) \ +( \ + cb = outc[0 +yin*8+xin], \ + cr = outc[64+yin*8+xin], \ + cg = (3 * cb + 8 * cr) >> 4 \ +) + +#endif + +#define PIC(yin, xin, p, xout) \ +( \ + y = outy[(yin) * 8 + xin], \ + STORECLAMP(p[(xout) * 3 + 0], y + cr), \ + STORECLAMP(p[(xout) * 3 + 1], y - cg), \ + STORECLAMP(p[(xout) * 3 + 2], y + cb) \ +) + +#ifdef __LITTLE_ENDIAN +#define PIC_16(yin, xin, p, xout, add) \ +( \ + y = outy[(yin) * 8 + xin], \ + y = ((CLAMP(y + cr + add*2+1) & 0xf8) << 8) | \ + ((CLAMP(y - cg + add ) & 0xfc) << 3) | \ + ((CLAMP(y + cb + add*2+1) ) >> 3), \ + p[(xout) * 2 + 0] = y & 0xff, \ + p[(xout) * 2 + 1] = y >> 8 \ +) +#else +#ifdef CONFIG_PPC +#define PIC_16(yin, xin, p, xout, add) \ +( \ + y = outy[(yin) * 8 + xin], \ + y = ((CLAMP(y + cr + add*2+1) & 0xf8) << 7) | \ + ((CLAMP(y - cg + add*2+1) & 0xf8) << 2) | \ + ((CLAMP(y + cb + add*2+1) ) >> 3), \ + p[(xout) * 2 + 0] = y >> 8, \ + p[(xout) * 2 + 1] = y & 0xff \ +) +#else +#define PIC_16(yin, xin, p, xout, add) \ +( \ + y = outy[(yin) * 8 + xin], \ + y = ((CLAMP(y + cr + add*2+1) & 0xf8) << 8) | \ + ((CLAMP(y - cg + add ) & 0xfc) << 3) | \ + ((CLAMP(y + cb + add*2+1) ) >> 3), \ + p[(xout) * 2 + 0] = y >> 8, \ + p[(xout) * 2 + 1] = y & 0xff \ +) +#endif +#endif + +#define PIC221111(xin) \ +( \ + CBCRCG(0, xin), \ + PIC(xin / 4 * 8 + 0, (xin & 3) * 2 + 0, pic0, xin * 2 + 0), \ + PIC(xin / 4 * 8 + 0, (xin & 3) * 2 + 1, pic0, xin * 2 + 1), \ + PIC(xin / 4 * 8 + 1, (xin & 3) * 2 + 0, pic1, xin * 2 + 0), \ + PIC(xin / 4 * 8 + 1, (xin & 3) * 2 + 1, pic1, xin * 2 + 1) \ +) + +#define PIC221111_16(xin) \ +( \ + CBCRCG(0, xin), \ + PIC_16(xin / 4 * 8 + 0, (xin & 3) * 2 + 0, pic0, xin * 2 + 0, 3), \ + PIC_16(xin / 4 * 8 + 0, (xin & 3) * 2 + 1, pic0, xin * 2 + 1, 0), \ + PIC_16(xin / 4 * 8 + 1, (xin & 3) * 2 + 0, pic1, xin * 2 + 0, 1), \ + PIC_16(xin / 4 * 8 + 1, (xin & 3) * 2 + 1, pic1, xin * 2 + 1, 2) \ +) + +static void col221111(out, pic, width) +int *out; +unsigned char *pic; +int width; +{ + int i, j, k; + unsigned char *pic0, *pic1; + int *outy, *outc; + int cr, cg, cb, y; + + pic0 = pic; + pic1 = pic + width; + outy = out; + outc = out + 64 * 4; + for (i = 2; i > 0; i--) { + for (j = 4; j > 0; j--) { + for (k = 0; k < 8; k++) { + PIC221111(k); + } + outc += 8; + outy += 16; + pic0 += 2 * width; + pic1 += 2 * width; + } + outy += 64 * 2 - 16 * 4; + } +} + +static void col221111_16(out, pic, width) +int *out; +unsigned char *pic; +int width; +{ + int i, j, k; + unsigned char *pic0, *pic1; + int *outy, *outc; + int cr, cg, cb, y; + + pic0 = pic; + pic1 = pic + width; + outy = out; + outc = out + 64 * 4; + for (i = 2; i > 0; i--) { + for (j = 4; j > 0; j--) { + for (k = 0; k < 8; k++) { + PIC221111_16(k); + } + outc += 8; + outy += 16; + pic0 += 2 * width; + pic1 += 2 * width; + } + outy += 64 * 2 - 16 * 4; + } +} diff -urN linux-2.6.21-orig/drivers/video/bootsplash/decode-jpg.h linux-2.6.21/drivers/video/bootsplash/decode-jpg.h --- linux-2.6.21-orig/drivers/video/bootsplash/decode-jpg.h 1970-01-01 03:00:00.000000000 +0300 +++ linux-2.6.21/drivers/video/bootsplash/decode-jpg.h 2007-04-26 11:29:26.000000000 +0300 @@ -0,0 +1,35 @@ +/* + * linux/drivers/video/bootsplash/decode-jpg.h - a tiny jpeg decoder. + * + * (w) August 2001 by Michael Schroeder, + */ + +#ifndef __DECODE_JPG_H +#define __DECODE_JPG_H + +#define ERR_NO_SOI 1 +#define ERR_NOT_8BIT 2 +#define ERR_HEIGHT_MISMATCH 3 +#define ERR_WIDTH_MISMATCH 4 +#define ERR_BAD_WIDTH_OR_HEIGHT 5 +#define ERR_TOO_MANY_COMPPS 6 +#define ERR_ILLEGAL_HV 7 +#define ERR_QUANT_TABLE_SELECTOR 8 +#define ERR_NOT_YCBCR_221111 9 +#define ERR_UNKNOWN_CID_IN_SCAN 10 +#define ERR_NOT_SEQUENTIAL_DCT 11 +#define ERR_WRONG_MARKER 12 +#define ERR_NO_EOI 13 +#define ERR_BAD_TABLES 14 +#define ERR_DEPTH_MISMATCH 15 + +struct jpeg_decdata { + int dcts[6 * 64 + 16]; + int out[64 * 6]; + int dquant[3][64]; +}; + +extern int jpeg_decode(unsigned char *, unsigned char *, int, int, int, struct jpeg_decdata *); +extern int jpeg_check_size(unsigned char *, int, int); + +#endif diff -urN linux-2.6.21-orig/drivers/video/bootsplash/Kconfig linux-2.6.21/drivers/video/bootsplash/Kconfig --- linux-2.6.21-orig/drivers/video/bootsplash/Kconfig 1970-01-01 03:00:00.000000000 +0300 +++ linux-2.6.21/drivers/video/bootsplash/Kconfig 2007-04-26 11:29:26.000000000 +0300 @@ -0,0 +1,17 @@ +# +# Bootsplash configuration +# + +menu "Bootsplash configuration" + +config BOOTSPLASH + bool "Bootup splash screen" + depends on FRAMEBUFFER_CONSOLE && FB_VESA + default n + ---help--- + This option enables the Linux bootsplash screen. For more + information on the bootsplash screen have a look at + http://www.bootsplash.org/. + If you are unsure, say N +endmenu + diff -urN linux-2.6.21-orig/drivers/video/bootsplash/Makefile linux-2.6.21/drivers/video/bootsplash/Makefile --- linux-2.6.21-orig/drivers/video/bootsplash/Makefile 1970-01-01 03:00:00.000000000 +0300 +++ linux-2.6.21/drivers/video/bootsplash/Makefile 2007-04-26 11:29:26.000000000 +0300 @@ -0,0 +1,5 @@ +# Makefile for the Linux bootsplash + +obj-$(CONFIG_BOOTSPLASH) += bootsplash.o +obj-$(CONFIG_BOOTSPLASH) += decode-jpg.o +obj-$(CONFIG_BOOTSPLASH) += render.o diff -urN linux-2.6.21-orig/drivers/video/bootsplash/render.c linux-2.6.21/drivers/video/bootsplash/render.c --- linux-2.6.21-orig/drivers/video/bootsplash/render.c 1970-01-01 03:00:00.000000000 +0300 +++ linux-2.6.21/drivers/video/bootsplash/render.c 2007-04-26 11:29:26.000000000 +0300 @@ -0,0 +1,315 @@ +/* + * linux/drivers/video/bootsplash/render.c - splash screen render functions. + */ + +#include +#include +#include +#include +#include +#include + +#include "../console/fbcon.h" +#include "bootsplash.h" + +void splash_putcs(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, + const unsigned short *s, int count, int ypos, int xpos) +{ + unsigned short charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff; + int bgshift = (vc->vc_hi_font_mask) ? 13 : 12; + int fgshift = (vc->vc_hi_font_mask) ? 9 : 8; + u8 *src; + u8 *dst, *splashsrc; + unsigned int d, x, y; + u32 dd, fgx, bgx; + u16 c = scr_readw(s); + + int fg_color, bg_color, transparent; + fg_color = attr_fgcol(fgshift, c); + bg_color = attr_bgcol(bgshift, c); + transparent = sd->splash_color == bg_color; + xpos = xpos * vc->vc_font.width + sd->splash_text_xo; + ypos = ypos * vc->vc_font.height + sd->splash_text_yo; + splashsrc = (u8 *)(info->splash_pic + ypos * info->splash_bytes + xpos * 2); + dst = (u8 *)(info->screen_base + ypos * info->fix.line_length + xpos * 2); + + fgx = ((u32 *)info->pseudo_palette)[fg_color]; + if (transparent && sd->splash_color == 15) { + if (fgx == 0xffea) + fgx = 0xfe4a; + else if (fgx == 0x57ea) + fgx = 0x0540; + else if (fgx == 0xffff) + fgx = 0x52aa; + } + bgx = ((u32 *)info->pseudo_palette)[bg_color]; + d = 0; + + while (count--) { + c = scr_readw(s++); + src = vc->vc_font.data + (c & charmask) * vc->vc_font.height * ((vc->vc_font.width + 7) >> 3); + + for (y = 0; y < vc->vc_font.height; y++) { + for (x = 0; x < vc->vc_font.width; x += 2) { + if ((x & 7) == 0) + d = *src++; + if (d & 0x80) + dd = fgx; + else + dd = transparent ? *(u16 *)splashsrc : bgx; + splashsrc += 2; + if (d & 0x40) + dd |= fgx << 16; + else + dd |= (transparent ? *(u16 *)splashsrc : bgx) << 16; + splashsrc += 2; + d <<= 2; + fb_writel(dd, dst); + dst += 4; + } + dst += info->fix.line_length - vc->vc_font.width * 2; + splashsrc += info->splash_bytes - vc->vc_font.width * 2; + } + dst -= info->fix.line_length * vc->vc_font.height - vc->vc_font.width * 2; + splashsrc -= info->splash_bytes * vc->vc_font.height - vc->vc_font.width * 2; + } +} + +static void splash_renderc(struct splash_data *sd, struct fb_info *info, int fg_color, int bg_color, u8 *src, int ypos, int xpos, int height, int width) +{ + int transparent = sd->splash_color == bg_color; + u32 dd, fgx, bgx; + u8 *dst, *splashsrc; + unsigned int d, x, y; + + splashsrc = (u8 *)(info->splash_pic + ypos * info->splash_bytes + xpos * 2); + dst = (u8 *)(info->screen_base + ypos * info->fix.line_length + xpos * 2); + fgx = ((u32 *)info->pseudo_palette)[fg_color]; + if (transparent && sd->splash_color == 15) { + if (fgx == 0xffea) + fgx = 0xfe4a; + else if (fgx == 0x57ea) + fgx = 0x0540; + else if (fgx == 0xffff) + fgx = 0x52aa; + } + bgx = ((u32 *)info->pseudo_palette)[bg_color]; + d = 0; + for (y = 0; y < height; y++) { + for (x = 0; x < width; x += 2) { + if ((x & 7) == 0) + d = *src++; + if (d & 0x80) + dd = fgx; + else + dd = transparent ? *(u16 *)splashsrc : bgx; + splashsrc += 2; + if (d & 0x40) + dd |= fgx << 16; + else + dd |= (transparent ? *(u16 *)splashsrc : bgx) << 16; + splashsrc += 2; + d <<= 2; + fb_writel(dd, dst); + dst += 4; + } + dst += info->fix.line_length - width * 2; + splashsrc += info->splash_bytes - width * 2; + } +} + +void splash_putc(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, + int c, int ypos, int xpos) +{ + unsigned short charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff; + int bgshift = (vc->vc_hi_font_mask) ? 13 : 12; + int fgshift = (vc->vc_hi_font_mask) ? 9 : 8; + u8 *src = vc->vc_font.data + (c & charmask) * vc->vc_font.height * ((vc->vc_font.width + 7) >> 3); + xpos = xpos * vc->vc_font.width + sd->splash_text_xo; + ypos = ypos * vc->vc_font.height + sd->splash_text_yo; + splash_renderc(sd, info, attr_fgcol(fgshift, c), attr_bgcol(bgshift, c), src, ypos, xpos, vc->vc_font.height, vc->vc_font.width); +} + +void splashcopy(u8 *dst, u8 *src, int height, int width, int dstbytes, int srcbytes) +{ + int i; + + while (height-- > 0) { + u32 *p = (u32 *)dst; + u32 *q = (u32 *)src; + for (i=0; i < width/4; i++) { + fb_writel(*q++,p++); + fb_writel(*q++,p++); + } + if (width & 2) + fb_writel(*q++,p++); + if (width & 1) + fb_writew(*(u16*)q,(u16*)p); + dst += dstbytes; + src += srcbytes; + } +} + +static void splashset(u8 *dst, int height, int width, int dstbytes, u32 bgx) { + int i; + + bgx |= bgx << 16; + while (height-- > 0) { + u32 *p = (u32 *)dst; + for (i=0; i < width/4; i++) { + fb_writel(bgx,p++); + fb_writel(bgx,p++); + } + if (width & 2) + fb_writel(bgx,p++); + if (width & 1) + fb_writew(bgx,(u16*)p); + dst += dstbytes; + } +} + +static void splashfill(struct fb_info *info, int sy, int sx, int height, int width) { + splashcopy((u8 *)(info->screen_base + sy * info->fix.line_length + sx * 2), (u8 *)(info->splash_pic + sy * info->splash_bytes + sx * 2), height, width, info->fix.line_length, info->splash_bytes); +} + +void splash_clear(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, int sy, + int sx, int height, int width) +{ + int bgshift = (vc->vc_hi_font_mask) ? 13 : 12; + int bg_color = attr_bgcol_ec(bgshift, vc); + int transparent = sd->splash_color == bg_color; + u32 bgx; + u8 *dst; + + sy = sy * vc->vc_font.height + sd->splash_text_yo; + sx = sx * vc->vc_font.width + sd->splash_text_xo; + height *= vc->vc_font.height; + width *= vc->vc_font.width; + if (transparent) { + splashfill(info, sy, sx, height, width); + return; + } + dst = (u8 *)(info->screen_base + sy * info->fix.line_length + sx * 2); + bgx = ((u32 *)info->pseudo_palette)[bg_color]; + splashset(dst, height, width, info->fix.line_length, bgx); +} + +void splash_bmove(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, int sy, + int sx, int dy, int dx, int height, int width) +{ + struct fb_copyarea area; + + area.sx = sx * vc->vc_font.width; + area.sy = sy * vc->vc_font.height; + area.dx = dx * vc->vc_font.width; + area.dy = dy * vc->vc_font.height; + area.sx += sd->splash_text_xo; + area.sy += sd->splash_text_yo; + area.dx += sd->splash_text_xo; + area.dy += sd->splash_text_yo; + area.height = height * vc->vc_font.height; + area.width = width * vc->vc_font.width; + + info->fbops->fb_copyarea(info, &area); +} + +void splash_clear_margins(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, + int bottom_only) +{ + unsigned int tw = vc->vc_cols*vc->vc_font.width; + unsigned int th = vc->vc_rows*vc->vc_font.height; + + if (!bottom_only) { + /* top margin */ + splashfill(info, 0, 0, sd->splash_text_yo, info->var.xres); + /* left margin */ + splashfill(info, sd->splash_text_yo, 0, th, sd->splash_text_xo); + /* right margin */ + splashfill(info, sd->splash_text_yo, sd->splash_text_xo + tw, th, info->var.xres - sd->splash_text_xo - tw); + + } + splashfill(info, sd->splash_text_yo + th, 0, info->var.yres - sd->splash_text_yo - th, info->var.xres); +} + +int splash_cursor(struct splash_data *sd, struct fb_info *info, struct fb_cursor *cursor) +{ + int i; + unsigned int dsize, s_pitch; + + if (info->state != FBINFO_STATE_RUNNING) + return 0; + + s_pitch = (cursor->image.width + 7) >> 3; + dsize = s_pitch * cursor->image.height; + if (cursor->enable) { + switch (cursor->rop) { + case ROP_XOR: + for (i = 0; i < dsize; i++) + info->fb_cursordata[i] = cursor->image.data[i] ^ cursor->mask[i]; + break; + case ROP_COPY: + default: + for (i = 0; i < dsize; i++) + info->fb_cursordata[i] = cursor->image.data[i] & cursor->mask[i]; + break; + } + } else if (info->fb_cursordata != cursor->image.data) + memcpy(info->fb_cursordata, cursor->image.data, dsize); + cursor->image.data = info->fb_cursordata; + splash_renderc(sd, info, cursor->image.fg_color, cursor->image.bg_color, (u8 *)info->fb_cursordata, cursor->image.dy + sd->splash_text_yo, cursor->image.dx + sd->splash_text_xo, cursor->image.height, cursor->image.width); + return 0; +} + +void splash_bmove_redraw(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, int y, int sx, int dx, int width) +{ + unsigned short *d = (unsigned short *) (vc->vc_origin + vc->vc_size_row * y + dx * 2); + unsigned short *s = d + (dx - sx); + unsigned short *start = d; + unsigned short *ls = d; + unsigned short *le = d + width; + unsigned short c; + int x = dx; + unsigned short attr = 1; + + do { + c = scr_readw(d); + if (attr != (c & 0xff00)) { + attr = c & 0xff00; + if (d > start) { + splash_putcs(sd, vc, info, start, d - start, y, x); + x += d - start; + start = d; + } + } + if (s >= ls && s < le && c == scr_readw(s)) { + if (d > start) { + splash_putcs(sd, vc, info, start, d - start, y, x); + x += d - start + 1; + start = d + 1; + } else { + x++; + start++; + } + } + s++; + d++; + } while (d < le); + if (d > start) + splash_putcs(sd, vc, info, start, d - start, y, x); +} + +void splash_blank(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, int blank) +{ + if (blank) { + if (info->silent_screen_base) + splashset((u8 *)info->silent_screen_base, info->var.yres, info->var.xres, info->fix.line_length, 0); + splashset((u8 *)info->screen_base, info->var.yres, info->var.xres, info->fix.line_length, 0); + } else { + if (info->silent_screen_base) + splash_prepare(vc, info); + splash_clear_margins(vc->vc_splash_data, vc, info, 0); + /* no longer needed, done in fbcon_blank */ + /* update_screen(vc->vc_num); */ + } +} + diff -urN linux-2.6.21-orig/drivers/video/console/bitblit.c linux-2.6.21/drivers/video/console/bitblit.c --- linux-2.6.21-orig/drivers/video/console/bitblit.c 2007-02-04 21:44:54.000000000 +0300 +++ linux-2.6.21/drivers/video/console/bitblit.c 2007-04-26 11:29:26.000000000 +0300 @@ -17,6 +17,9 @@ #include #include #include "fbcon.h" +#ifdef CONFIG_BOOTSPLASH +#include "../bootsplash/bootsplash.h" +#endif /* * Accelerated handlers. @@ -47,6 +50,13 @@ { struct fb_copyarea area; +#ifdef CONFIG_BOOTSPLASH + if (info->splash_data) { + splash_bmove(info->splash_data, vc, info, + sy, sx, dy, dx, height, width); + return; + } +#endif area.sx = sx * vc->vc_font.width; area.sy = sy * vc->vc_font.height; area.dx = dx * vc->vc_font.width; @@ -63,6 +73,13 @@ int bgshift = (vc->vc_hi_font_mask) ? 13 : 12; struct fb_fillrect region; +#ifdef CONFIG_BOOTSPLASH + if (info->splash_data) { + splash_clear(info->splash_data, vc, info, + sy, sx, height, width); + return; + } +#endif region.color = attr_bgcol_ec(bgshift, vc); region.dx = sx * vc->vc_font.width; region.dy = sy * vc->vc_font.height; @@ -160,6 +177,13 @@ image.height = vc->vc_font.height; image.depth = 1; +#ifdef CONFIG_BOOTSPLASH + if (info->splash_data) { + splash_putcs(info->splash_data, vc, info, s, count, yy, xx); + return; + } +#endif + if (attribute) { buf = kmalloc(cellsize, GFP_KERNEL); if (!buf) @@ -213,6 +237,13 @@ unsigned int bs = info->var.yres - bh; struct fb_fillrect region; +#ifdef CONFIG_BOOTSPLASH + if (info->splash_data) { + splash_clear_margins(info->splash_data, vc, info, bottom_only); + return; + } +#endif + region.color = attr_bgcol_ec(bgshift, vc); region.rop = ROP_COPY; @@ -379,6 +410,14 @@ cursor.image.depth = 1; cursor.rop = ROP_XOR; +#ifdef CONFIG_BOOTSPLASH + if (info->splash_data) { + splash_cursor(info->splash_data, info, &cursor); + ops->cursor_reset = 0; + return; + } +#endif + if (info->fbops->fb_cursor) err = info->fbops->fb_cursor(info, &cursor); diff -urN linux-2.6.21-orig/drivers/video/console/fbcon.c linux-2.6.21/drivers/video/console/fbcon.c --- linux-2.6.21-orig/drivers/video/console/fbcon.c 2007-04-26 10:58:53.000000000 +0300 +++ linux-2.6.21/drivers/video/console/fbcon.c 2007-04-26 11:29:26.000000000 +0300 @@ -91,6 +91,10 @@ #include "fbcon.h" +#ifdef CONFIG_BOOTSPLASH +#include "../bootsplash/bootsplash.h" +#endif + #ifdef FBCONDEBUG # define DPRINTK(fmt, args...) printk(KERN_DEBUG "%s: " fmt, __FUNCTION__ , ## args) #else @@ -104,8 +108,7 @@ }; static struct display fb_display[MAX_NR_CONSOLES]; - -static signed char con2fb_map[MAX_NR_CONSOLES]; +signed char con2fb_map[MAX_NR_CONSOLES]; static signed char con2fb_map_boot[MAX_NR_CONSOLES]; static int logo_height; static int logo_lines; @@ -563,6 +566,10 @@ for (i = first_fb_vc; i <= last_fb_vc; i++) con2fb_map[i] = info_idx; +#ifdef CONFIG_BOOTSPLASH + splash_init(); +#endif + err = take_over_console(&fb_con, first_fb_vc, last_fb_vc, fbcon_is_default); @@ -1125,6 +1132,16 @@ new_rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres); new_cols /= vc->vc_font.width; new_rows /= vc->vc_font.height; + +#ifdef CONFIG_BOOTSPLASH + if (vc->vc_splash_data && vc->vc_splash_data->splash_state) { + new_cols = vc->vc_splash_data->splash_text_wi / vc->vc_font.width; + new_rows = vc->vc_splash_data->splash_text_he / vc->vc_font.height; + logo = 0; + con_remap_def_color(vc, vc->vc_splash_data->splash_color << 4 | vc->vc_splash_data->splash_fg_color); + } +#endif + vc_resize(vc, new_cols, new_rows); /* @@ -1770,6 +1787,10 @@ fbcon_softback_note(vc, t, count); if (logo_shown >= 0) goto redraw_up; +#ifdef CONFIG_BOOTSPLASH + if (info->splash_data) + goto redraw_up; +#endif switch (p->scrollmode) { case SCROLL_MOVE: ops->bmove(vc, info, t + count, 0, t, 0, @@ -1854,6 +1875,10 @@ case SM_DOWN: if (count > vc->vc_rows) /* Maximum realistic size */ count = vc->vc_rows; +#ifdef CONFIG_BOOTSPLASH + if (info->splash_data) + goto redraw_down; +#endif if (logo_shown >= 0) goto redraw_down; switch (p->scrollmode) { @@ -1998,6 +2023,14 @@ } return; } + +#ifdef CONFIG_BOOTSPLASH + if (info->splash_data && sy == dy && height == 1) { + /* must use slower redraw bmove to keep background pic intact */ + splash_bmove_redraw(info->splash_data, vc, info, sy, sx, dx, width); + return; + } +#endif ops->bmove(vc, info, real_y(p, sy), sx, real_y(p, dy), dx, height, width); } @@ -2106,6 +2139,10 @@ info = registered_fb[con2fb_map[vc->vc_num]]; ops = info->fbcon_par; +#ifdef CONFIG_BOOTSPLASH + splash_prepare(vc, info); +#endif + if (softback_top) { if (softback_lines) fbcon_set_origin(vc); @@ -2235,6 +2272,12 @@ { struct fb_event event; +#ifdef CONFIG_BOOTSPLASH + if (info->splash_data) { + splash_blank(info->splash_data, vc, info, blank); + return; + } +#endif if (blank) { unsigned short charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff; @@ -2433,10 +2476,19 @@ if (resize) { int cols, rows; + u32 xres = info->var.xres, yres = info->var.yres; cols = FBCON_SWAP(ops->rotate, info->var.xres, info->var.yres); rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres); cols /= w; rows /= h; + +#ifdef CONFIG_BOOTSPLASH + if (info->splash_data) { + xres = info->splash_data->splash_text_wi; + yres = info->splash_data->splash_text_he; + } +#endif + vc_resize(vc, cols, rows); if (CON_IS_VISIBLE(vc) && softback_buf) fbcon_update_softback(vc); diff -urN linux-2.6.21-orig/drivers/video/console/fbcon.h linux-2.6.21/drivers/video/console/fbcon.h --- linux-2.6.21-orig/drivers/video/console/fbcon.h 2007-04-26 10:58:53.000000000 +0300 +++ linux-2.6.21/drivers/video/console/fbcon.h 2007-04-26 11:29:26.000000000 +0300 @@ -25,6 +25,34 @@ * low-level frame buffer device */ +#ifdef CONFIG_BOOTSPLASH +struct splash_data { + int splash_state; /* show splash? */ + int splash_color; /* transparent color */ + int splash_fg_color; /* foreground color */ + int splash_width; /* width of image */ + int splash_height; /* height of image */ + int splash_text_xo; /* text area origin */ + int splash_text_yo; + int splash_text_wi; /* text area size */ + int splash_text_he; + int splash_showtext; /* silent/verbose mode */ + int splash_boxcount; + int splash_percent; + int splash_overpaintok; /* is it ok to overpaint boxes */ + int splash_palcnt; + char *oldscreen_base; /* pointer to top of virtual screen */ + unsigned char *splash_boxes; + unsigned char *splash_jpeg; /* jpeg */ + unsigned char *splash_palette; /* palette for 8-bit */ + + int splash_dosilent; /* show silent jpeg */ + unsigned char *splash_silentjpeg; + unsigned char *splash_sboxes; + int splash_sboxcount; +}; +#endif + struct display { /* Filled in by the low-level console driver */ const u_char *fontdata; diff -urN linux-2.6.21-orig/drivers/video/Kconfig linux-2.6.21/drivers/video/Kconfig --- linux-2.6.21-orig/drivers/video/Kconfig 2007-04-26 10:58:53.000000000 +0300 +++ linux-2.6.21/drivers/video/Kconfig 2007-04-26 11:29:26.000000000 +0300 @@ -1663,5 +1663,9 @@ source "drivers/video/logo/Kconfig" endif +if FB + source "drivers/video/bootsplash/Kconfig" +endif + endmenu diff -urN linux-2.6.21-orig/drivers/video/Makefile linux-2.6.21/drivers/video/Makefile --- linux-2.6.21-orig/drivers/video/Makefile 2007-04-26 10:58:53.000000000 +0300 +++ linux-2.6.21/drivers/video/Makefile 2007-04-26 11:29:26.000000000 +0300 @@ -13,6 +13,7 @@ obj-$(CONFIG_VT) += console/ obj-$(CONFIG_LOGO) += logo/ obj-y += backlight/ +obj-$(CONFIG_BOOTSPLASH) += bootsplash/ obj-$(CONFIG_FB_CFB_FILLRECT) += cfbfillrect.o obj-$(CONFIG_FB_CFB_COPYAREA) += cfbcopyarea.o diff -urN linux-2.6.21-orig/drivers/video/vesafb.c linux-2.6.21/drivers/video/vesafb.c --- linux-2.6.21-orig/drivers/video/vesafb.c 2007-02-04 21:44:54.000000000 +0300 +++ linux-2.6.21/drivers/video/vesafb.c 2007-04-26 11:29:26.000000000 +0300 @@ -174,7 +174,10 @@ return err; } -static struct fb_ops vesafb_ops = { +#ifndef CONFIG_BOOTSPLASH +static +#endif +struct fb_ops vesafb_ops = { .owner = THIS_MODULE, .fb_setcolreg = vesafb_setcolreg, .fb_pan_display = vesafb_pan_display, @@ -258,6 +261,11 @@ * option to simply use size_total as that * wastes plenty of kernel address space. */ size_remap = size_vmode * 2; + +#ifdef CONFIG_BOOTSPLASH + size_remap *= 2; /* some more for the images */ +#endif + if (vram_remap) size_remap = vram_remap * 1024 * 1024; if (size_remap < size_vmode) diff -urN linux-2.6.21-orig/include/linux/console_struct.h linux-2.6.21/include/linux/console_struct.h --- linux-2.6.21-orig/include/linux/console_struct.h 2007-04-26 10:58:54.000000000 +0300 +++ linux-2.6.21/include/linux/console_struct.h 2007-04-26 11:29:26.000000000 +0300 @@ -99,6 +99,11 @@ struct vc_data **vc_display_fg; /* [!] Ptr to var holding fg console for this display */ unsigned long vc_uni_pagedir; unsigned long *vc_uni_pagedir_loc; /* [!] Location of uni_pagedir variable for this console */ + +#ifdef CONFIG_BOOTSPLASH + struct splash_data *vc_splash_data; +#endif + /* additional information is in vt_kern.h */ }; diff -urN linux-2.6.21-orig/include/linux/fb.h linux-2.6.21/include/linux/fb.h --- linux-2.6.21-orig/include/linux/fb.h 2007-04-26 10:58:54.000000000 +0300 +++ linux-2.6.21/include/linux/fb.h 2007-04-26 11:29:26.000000000 +0300 @@ -795,6 +795,14 @@ void *fbcon_par; /* fbcon use-only private area */ /* From here on everything is device dependent */ void *par; +#ifdef CONFIG_BOOTSPLASH + struct splash_data *splash_data; + unsigned char *splash_pic; + int splash_pic_size; + int splash_bytes; + char *silent_screen_base; /* real screen base */ + char fb_cursordata[64]; +#endif }; #ifdef MODULE geexbox-1.1/packages/linux/patches/51_bootsplash-3.1.6-2.6.21-to-3.1.7.4.diff0000644000175000017500000010556310641745505023425 0ustar benbenIndex: linux-2.6.16/drivers/char/n_tty.c =================================================================== --- linux-2.6.16.orig/drivers/char/n_tty.c 2006-03-20 18:42:50.000000000 +0100 +++ linux-2.6.16/drivers/char/n_tty.c 2006-03-20 18:46:36.000000000 +0100 @@ -1298,15 +1298,6 @@ tty->minimum_to_wake = (minimum - (b - buf)); if (!input_available_p(tty, 0)) { -#ifdef CONFIG_BOOTSPLASH - if (file->f_dentry->d_inode->i_rdev == MKDEV(TTY_MAJOR,0) || - file->f_dentry->d_inode->i_rdev == MKDEV(TTY_MAJOR,1) || - file->f_dentry->d_inode->i_rdev == MKDEV(TTYAUX_MAJOR,0) || - file->f_dentry->d_inode->i_rdev == MKDEV(TTYAUX_MAJOR,1)) { - extern int splash_verbose(void); - (void)splash_verbose(); - } -#endif if (test_bit(TTY_OTHER_CLOSED, &tty->flags)) { retval = -EIO; break; @@ -1323,6 +1314,15 @@ retval = -ERESTARTSYS; break; } +#ifdef CONFIG_BOOTSPLASH + if (file->f_dentry->d_inode->i_rdev == MKDEV(TTY_MAJOR,0) || + file->f_dentry->d_inode->i_rdev == MKDEV(TTY_MAJOR,1) || + file->f_dentry->d_inode->i_rdev == MKDEV(TTYAUX_MAJOR,0) || + file->f_dentry->d_inode->i_rdev == MKDEV(TTYAUX_MAJOR,1)) { + extern int splash_verbose(void); + (void)splash_verbose(); + } +#endif n_tty_set_room(tty); clear_bit(TTY_DONT_FLIP, &tty->flags); timeout = schedule_timeout(timeout); Index: linux-2.6.16/drivers/char/vt.c =================================================================== --- linux-2.6.16.orig/drivers/char/vt.c 2006-03-20 18:42:50.000000000 +0100 +++ linux-2.6.16/drivers/char/vt.c 2006-03-20 18:43:54.000000000 +0100 @@ -780,10 +780,6 @@ old_screen_size = vc->vc_screenbuf_size; err = resize_screen(vc, new_cols, new_rows); - if (err) { - kfree(newscreen); - return err; - } vc->vc_rows = new_rows; vc->vc_cols = new_cols; Index: linux-2.6.16/drivers/video/bootsplash/bootsplash.c =================================================================== --- linux-2.6.16.orig/drivers/video/bootsplash/bootsplash.c 2006-03-20 18:42:50.000000000 +0100 +++ linux-2.6.16/drivers/video/bootsplash/bootsplash.c 2006-03-20 18:43:54.000000000 +0100 @@ -31,7 +31,7 @@ /* extern struct fb_ops vesafb_ops; */ extern signed char con2fb_map[MAX_NR_CONSOLES]; -#define SPLASH_VERSION "3.1.6-2004/03/31" +#define SPLASH_VERSION "3.1.7.4-geexbox" /* These errors have to match fbcon-jpegdec.h */ static unsigned char *jpg_errors[] = { @@ -114,7 +114,7 @@ return 12; } -static void boxit(unsigned char *pic, int bytes, unsigned char *buf, int num, int percent, int overpaint) +static void boxit(unsigned char *pic, int bytes, unsigned char *buf, int num, int percent, int overpaint, int depth) { int x, y, i, p, doblend, r, g, b, a, add; unsigned short data1[4]; @@ -122,7 +122,7 @@ unsigned short data2[4]; unsigned char cols2[16]; unsigned char *bufend; - unsigned short *picp; + unsigned char *picp; unsigned int stipple[32], sti, stin, stinn, stixs, stixe, stiys, stiye; int xs, xe, ys, ye, xo, yo; @@ -237,11 +237,11 @@ } add = (xs & 1); add ^= (add ^ y) & 1 ? 1 : 3; /* 2x2 ordered dithering */ - picp = (unsigned short *)(pic + xs * 2 + y * bytes); + picp = pic + xs * (depth>>3) + y * bytes; for (x = xs; x <= xe; x++) { if (!(sti & 0x80000000)) { sti <<= 1; - picp++; + picp += depth>>3; add ^= 3; continue; } @@ -256,18 +256,43 @@ r = cols2[0]; g = cols2[1]; b = cols2[2]; - if (a != 255) { - i = *picp; - r = ((i >> 8 & 0xf8) * (255 - a) + r * a) / 255; - g = ((i >> 3 & 0xfc) * (255 - a) + g * a) / 255; - b = ((i << 3 & 0xf8) * (255 - a) + b * a) / 255; - } #define CLAMP(x) ((x) >= 256 ? 255 : (x)) - i = ((CLAMP(r + add*2+1) & 0xf8) << 8) | - ((CLAMP(g + add ) & 0xfc) << 3) | - ((CLAMP(b + add*2+1) ) >> 3); - *picp++ = i; - add ^= 3; + switch (depth) { + case 16: + if (a != 255) { + i = *(unsigned short *)picp; + r = ((i >> 8 & 0xf8) * (255 - a) + r * a) / 255; + g = ((i >> 3 & 0xfc) * (255 - a) + g * a) / 255; + b = ((i << 3 & 0xf8) * (255 - a) + b * a) / 255; + } + i = ((CLAMP(r + add*2+1) & 0xf8) << 8) | + ((CLAMP(g + add ) & 0xfc) << 3) | + ((CLAMP(b + add*2+1) ) >> 3); + *((unsigned short *)picp)++ = i; + add ^= 3; + break; + case 24: + if (a != 255) { + b = (picp[0] * (255 - a) + b * a) / 255; + g = (picp[1] * (255 - a) + g * a) / 255; + r = (picp[2] * (255 - a) + r * a) / 255; + } + *picp++ = CLAMP(b); + *picp++ = CLAMP(g); + *picp++ = CLAMP(r); + break; + case 32: + if (a != 255) { + b = (picp[0] * (255 - a) + b * a) / 255; + g = (picp[1] * (255 - a) + g * a) / 255; + r = (picp[2] * (255 - a) + r * a) / 255; + } + *picp++ = CLAMP(b); + *picp++ = CLAMP(g); + *picp++ = CLAMP(r); + *picp++ = 0; + break; + } } } } @@ -383,7 +408,7 @@ pos[off] | pos[off + 1] << 8 | pos[off + 2] << 16 | pos[off + 3] << 24; } -static int splash_getraw(unsigned char *start, unsigned char *end, int *update) +static int splash_getraw(unsigned char *start, unsigned char *end) { unsigned char *ndata; int version; @@ -400,10 +425,6 @@ struct fb_info *info; struct splash_data *sd; - if (update) - *update = -1; - - if (!update || start[7] < '2' || start[7] > '3' || splash_geti(start, 12) != (int)0xffffffff) printk(KERN_INFO "bootsplash %s: looking for picture...", SPLASH_VERSION); for (ndata = start; ndata < end; ndata++) { @@ -411,6 +432,7 @@ continue; if (ndata[4] != 'S' || ndata[5] != 'P' || ndata[6] != 'L' || ndata[7] < '1' || ndata[7] > '3') continue; + printk("."); version = ndata[7] - '0'; offsets = splash_offsets[version - 1]; len = SPLASH_OFF_LEN; @@ -418,7 +440,9 @@ if (unit >= MAX_NR_CONSOLES) continue; if (unit) { + acquire_console_sem(); vc_allocate(unit); + release_console_sem(); } vc = vc_cons[unit].d; info = registered_fb[(int)con2fb_map[unit]]; @@ -426,51 +450,20 @@ height = info->var.yres; splash_size = splash_geti(ndata, SPLASH_OFF_SIZE); if (splash_size == (int)0xffffffff && version > 1) { + printk(KERN_INFO " found, updating values.\n"); if ((sd = vc->vc_splash_data) != 0) { - int up = 0; i = splash_getb(ndata, SPLASH_OFF_STATE); if (i != 255) { sd->splash_state = i; - up = -1; } i = splash_getb(ndata, SPLASH_OFF_FGCOL); if (i != 255) { sd->splash_fg_color = i; - up = -1; } i = splash_getb(ndata, SPLASH_OFF_COL); if (i != 255) { sd->splash_color = i; - up = -1; - } - boxcnt = sboxcnt = 0; - if (ndata + len <= end) { - boxcnt = splash_gets(ndata, SPLASH_OFF_BOXCNT); - sboxcnt = splash_gets(ndata, SPLASH_OFF_SBOXCNT); - } - if (boxcnt) { - i = splash_gets(ndata, len); - if (boxcnt + i <= sd->splash_boxcount && ndata + len + 2 + boxcnt * 12 <= end) { - - if (splash_geti(ndata, len + 2) != 0x7ffd7fff || !memcmp(ndata + len + 2, sd->splash_boxes + i * 12, 8)) { - - memcpy(sd->splash_boxes + i * 12, ndata + len + 2, boxcnt * 12); - up |= 1; - } - } - len += boxcnt * 12 + 2; - } - if (sboxcnt) { - i = splash_gets(ndata, len); - if (sboxcnt + i <= sd->splash_sboxcount && ndata + len + 2 + sboxcnt * 12 <= end) { - if (splash_geti(ndata, len + 2) != 0x7ffd7fff || !memcmp(ndata + len + 2, sd->splash_sboxes + i * 12, 8)) { - memcpy(sd->splash_sboxes + i * 12, ndata + len + 2, sboxcnt * 12); - up |= 2; - } - } } - if (update) - *update = up; } return unit; } @@ -507,7 +500,7 @@ silentsize = 0; } sboxcnt = splash_gets(ndata, SPLASH_OFF_SBOXCNT); - if (silentsize) { + if (silentsize > 12 * sboxcnt) { unsigned char *simage = ndata + len + splash_size + 12 * sboxcnt; if (!jpeg_check_size(simage, width, height) || splash_check_jpeg(simage, width, height, info->var.bits_per_pixel)) { @@ -524,12 +517,12 @@ sd->splash_sboxes = 0; sd->splash_sboxcount = 0; if (silentsize) { - sd->splash_silentjpeg = vmalloc(silentsize); - if (sd->splash_silentjpeg) { - memcpy(sd->splash_silentjpeg, ndata + len + splash_size, silentsize); - sd->splash_sboxes = vc->vc_splash_data->splash_silentjpeg; - sd->splash_silentjpeg += 12 * sboxcnt; + sd->splash_sboxes = vmalloc(silentsize); + if (sd->splash_sboxes) { + memcpy(sd->splash_sboxes, ndata + len + splash_size, silentsize); sd->splash_sboxcount = sboxcnt; + if (silentsize > 12 * sboxcnt) + sd->splash_silentjpeg = sd->splash_sboxes + 12 * sboxcnt; } } sd->splash_state = splash_getb(ndata, SPLASH_OFF_STATE); @@ -578,6 +571,8 @@ sd->splash_palette = sd->splash_boxes + boxcnt * 12; sd->splash_jpeg = sd->splash_palette + palcnt; sd->splash_palcnt = palcnt / 3; + if (splash_usesilent && sd->splash_silentjpeg == 0) + sd->splash_silentjpeg = sd->splash_jpeg; sd->splash_dosilent = sd->splash_silentjpeg != 0; return unit; } @@ -605,7 +600,7 @@ info = registered_fb[(int)con2fb_map[0]]; if (!info->silent_screen_base) return 0; - splashcopy(info->silent_screen_base, info->screen_base, info->var.yres, info->var.xres, info->fix.line_length, info->fix.line_length); + splashcopy(info->silent_screen_base, info->screen_base, info->var.yres, info->var.xres, info->fix.line_length, info->fix.line_length, info->var.bits_per_pixel); info->screen_base = info->silent_screen_base; info->silent_screen_base = 0; return 1; @@ -639,7 +634,7 @@ width = info->var.xres; height = info->var.yres; depth = info->var.bits_per_pixel; - if (depth != 16) { /* Other targets might need fixing */ + if (depth < 16) { splash_off(info); return -2; } @@ -671,11 +666,11 @@ } else { if (vc->vc_splash_data->splash_sboxcount) boxit(info->splash_pic, sbytes, vc->vc_splash_data->splash_sboxes, - vc->vc_splash_data->splash_sboxcount, vc->vc_splash_data->splash_percent, 0); + vc->vc_splash_data->splash_sboxcount, vc->vc_splash_data->splash_percent, 0, info->var.bits_per_pixel); if (!info->silent_screen_base) info->silent_screen_base = info->screen_base; - splashcopy(info->silent_screen_base, info->splash_pic, info->var.yres, info->var.xres, info->fix.line_length, sbytes); + splashcopy(info->silent_screen_base, info->splash_pic, info->var.yres, info->var.xres, info->fix.line_length, sbytes, depth); info->screen_base = info->silent_screen_base + info->fix.line_length * info->var.yres; } } else if (info->silent_screen_base) @@ -690,7 +685,7 @@ info->splash_pic_size = size; info->splash_bytes = sbytes; if (vc->vc_splash_data->splash_boxcount) - boxit(info->splash_pic, sbytes, vc->vc_splash_data->splash_boxes, vc->vc_splash_data->splash_boxcount, vc->vc_splash_data->splash_percent, 0); + boxit(info->splash_pic, sbytes, vc->vc_splash_data->splash_boxes, vc->vc_splash_data->splash_boxcount, vc->vc_splash_data->splash_percent, 0, info->var.bits_per_pixel); if (vc->vc_splash_data->splash_state) info->splash_data = vc->vc_splash_data; else @@ -737,6 +732,7 @@ splash_prepare(vc, info); if (vc->vc_splash_data && vc->vc_splash_data->splash_state) { con_remap_def_color(vc, vc->vc_splash_data->splash_color << 4 | vc->vc_splash_data->splash_fg_color); + acquire_console_sem(); /* vc_resize also calls con_switch which resets yscroll */ vc_resize(vc, vc->vc_splash_data->splash_text_wi / vc->vc_font.width, vc->vc_splash_data->splash_text_he / vc->vc_font.height); if (fg_console == vc->vc_num) { @@ -744,10 +740,13 @@ vc->vc_size_row * (vc->vc_bottom - vc->vc_top) / 2); splash_clear_margins(vc->vc_splash_data, vc, info, 0); } + release_console_sem(); } else { /* Switch bootsplash off */ con_remap_def_color(vc, 0x07); + acquire_console_sem(); vc_resize(vc, info->var.xres / vc->vc_font.width, info->var.yres / vc->vc_font.height); + release_console_sem(); } return 0; } @@ -783,7 +782,6 @@ if (!buffer || !splash_default) return count; - acquire_console_sem(); if (!strncmp(buffer, "show", 4) || !strncmp(buffer, "hide", 4)) { int pe, oldpe; @@ -803,20 +801,13 @@ pe += pe > 32767; if (vc->vc_splash_data && vc->vc_splash_data->splash_percent != pe) { struct fb_info *info; - struct fbcon_ops *ops; oldpe = vc->vc_splash_data->splash_percent; vc->vc_splash_data->splash_percent = pe; if (fg_console != 0 || !vc->vc_splash_data->splash_state) { - release_console_sem(); return count; } info = registered_fb[(int) con2fb_map[vc->vc_num]]; - ops = info->fbcon_par; - if (ops->blank_state) { - release_console_sem(); - return count; - } if (!vc->vc_splash_data->splash_overpaintok || pe == 65536 || pe < oldpe) { if (splash_hasinter(vc->vc_splash_data->splash_boxes, vc->vc_splash_data->splash_boxcount)) splash_status(vc); @@ -824,11 +815,10 @@ splash_prepare(vc, info); } else { if (vc->vc_splash_data->splash_silentjpeg && vc->vc_splash_data->splash_dosilent && info->silent_screen_base) - boxit(info->silent_screen_base, info->fix.line_length, vc->vc_splash_data->splash_sboxes, vc->vc_splash_data->splash_sboxcount, vc->vc_splash_data->splash_percent, 1); - boxit(info->screen_base, info->fix.line_length, vc->vc_splash_data->splash_boxes, vc->vc_splash_data->splash_boxcount, vc->vc_splash_data->splash_percent, 1); + boxit(info->silent_screen_base, info->fix.line_length, vc->vc_splash_data->splash_sboxes, vc->vc_splash_data->splash_sboxcount, vc->vc_splash_data->splash_percent, 1, info->var.bits_per_pixel); + boxit(info->screen_base, info->fix.line_length, vc->vc_splash_data->splash_boxes, vc->vc_splash_data->splash_boxcount, vc->vc_splash_data->splash_percent, 1, info->var.bits_per_pixel); } } - release_console_sem(); return count; } if (!strncmp(buffer,"silent\n",7) || !strncmp(buffer,"verbose\n",8)) { @@ -839,7 +829,6 @@ splash_status(vc); } } - release_console_sem(); return count; } if (!strncmp(buffer,"freesilent\n",11)) { @@ -854,40 +843,24 @@ splash_status(vc); vc->vc_splash_data->splash_dosilent = 0; } - release_console_sem(); return count; } if (!strncmp(buffer, "BOOTSPL", 7)) { - int up = -1; - unit = splash_getraw((unsigned char *)buffer, (unsigned char *)buffer + count, &up); + unit = splash_getraw((unsigned char *)buffer, (unsigned char *)buffer + count); if (unit >= 0) { vc = vc_cons[unit].d; - if (up == -1) - splash_status(vc); - else { - struct fb_info *info = registered_fb[(int) con2fb_map[vc->vc_num]]; - struct fbcon_ops *ops = info->fbcon_par; - if (ops->blank_state) - up = 0; - if ((up & 2) != 0 && vc->vc_splash_data->splash_silentjpeg && vc->vc_splash_data->splash_dosilent && info->silent_screen_base) - boxit(info->silent_screen_base, info->fix.line_length, vc->vc_splash_data->splash_sboxes, vc->vc_splash_data->splash_sboxcount, vc->vc_splash_data->splash_percent, 1); - if ((up & 1) != 0) - boxit(info->screen_base, info->fix.line_length, vc->vc_splash_data->splash_boxes, vc->vc_splash_data->splash_boxcount, vc->vc_splash_data->splash_percent, 1); - } + splash_status(vc); } - release_console_sem(); return count; } vc = vc_cons[0].d; if (!vc->vc_splash_data) { - release_console_sem(); return count; } if (buffer[0] == 't') { vc->vc_splash_data->splash_state ^= 1; splash_status(vc); - release_console_sem(); return count; } new = simple_strtoul(buffer, NULL, 0); @@ -902,7 +875,6 @@ vc->vc_splash_data->splash_state = new & 1; splash_status(vc); } - release_console_sem(); return count; } @@ -940,7 +912,7 @@ return; vc = vc_cons[0].d; info = registered_fb[0]; - if (!vc || !info || info->var.bits_per_pixel != 16) + if (!vc || !info || info->var.bits_per_pixel < 16) return; #ifdef CONFIG_PROC_FS splash_proc_register(); @@ -970,10 +942,8 @@ mem = vmalloc(len); if (mem) { - acquire_console_sem(); - if ((int)sys_read(fd, mem, len) == len && splash_getraw((unsigned char *)mem, (unsigned char *)mem + len, (int *)0) == 0 && vc->vc_splash_data) + if ((int)sys_read(fd, mem, len) == len && splash_getraw((unsigned char *)mem, (unsigned char *)mem + len) == 0 && vc->vc_splash_data) vc->vc_splash_data->splash_state = splash_default & 1; - release_console_sem(); vfree(mem); } sys_close(fd); Index: linux-2.6.16/drivers/video/bootsplash/bootsplash.h =================================================================== --- linux-2.6.16.orig/drivers/video/bootsplash/bootsplash.h 2006-03-20 18:42:50.000000000 +0100 +++ linux-2.6.16/drivers/video/bootsplash/bootsplash.h 2006-03-20 18:43:54.000000000 +0100 @@ -22,14 +22,14 @@ const unsigned short *s, int count, int ypos, int xpos); extern void splash_putc(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, int c, int ypos, int xpos); -extern void splashcopy(u8 *dst, u8 *src, int height, int width, int dstbytes, int srcbytes); +extern void splashcopy(u8 *dst, u8 *src, int height, int width, int dstbytes, int srcbytes, int depth); extern void splash_clear(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, int sy, int sx, int height, int width); extern void splash_bmove(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, int sy, int sx, int dy, int dx, int height, int width); extern void splash_clear_margins(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, int bottom_only); -extern int splash_cursor(struct splash_data *sd, struct fb_info *info, struct fb_cursor *cursor); +extern void splash_cursor(struct splash_data *sd, struct fb_info *info, struct fb_cursor *cursor); extern void splash_bmove_redraw(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, int y, int sx, int dx, int width); extern void splash_blank(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, Index: linux-2.6.16/drivers/video/bootsplash/decode-jpg.c =================================================================== --- linux-2.6.16.orig/drivers/video/bootsplash/decode-jpg.c 2006-03-20 18:42:50.000000000 +0100 +++ linux-2.6.16/drivers/video/bootsplash/decode-jpg.c 2006-03-20 18:43:54.000000000 +0100 @@ -87,6 +87,7 @@ static void col221111 __P((int *, unsigned char *, int)); static void col221111_16 __P((int *, unsigned char *, int)); +static void col221111_32 __P((int *, unsigned char *, int)); /*********************************/ @@ -262,7 +263,7 @@ int mcusx, mcusy, mx, my; int max[6]; - if (!decdata || !buf || !pic) + if (!decdata) return -1; datap = buf; if (getbyte() != 0xff) @@ -370,6 +371,9 @@ idct(decdata->dcts + 320, decdata->out + 320, decdata->dquant[2], IFIX(0.5), max[5]); switch (depth) { + case 32: + col221111_32(decdata->out, pic + (my * 16 * mcusx + mx) * 16 * 4, mcusx * 16 * 4); + break; case 24: col221111(decdata->out, pic + (my * 16 * mcusx + mx) * 16 * 3, mcusx * 16 * 3); break; @@ -844,9 +848,9 @@ #define PIC(yin, xin, p, xout) \ ( \ y = outy[(yin) * 8 + xin], \ - STORECLAMP(p[(xout) * 3 + 0], y + cr), \ + STORECLAMP(p[(xout) * 3 + 0], y + cb), \ STORECLAMP(p[(xout) * 3 + 1], y - cg), \ - STORECLAMP(p[(xout) * 3 + 2], y + cb) \ + STORECLAMP(p[(xout) * 3 + 2], y + cr) \ ) #ifdef __LITTLE_ENDIAN @@ -883,6 +887,15 @@ #endif #endif +#define PIC_32(yin, xin, p, xout) \ +( \ + y = outy[(yin) * 8 + xin], \ + STORECLAMP(p[(xout) * 4 + 0], y + cb), \ + STORECLAMP(p[(xout) * 4 + 1], y - cg), \ + STORECLAMP(p[(xout) * 4 + 2], y + cr), \ + STORECLAMP(p[(xout) * 4 + 3], 0) \ +) + #define PIC221111(xin) \ ( \ CBCRCG(0, xin), \ @@ -901,6 +914,15 @@ PIC_16(xin / 4 * 8 + 1, (xin & 3) * 2 + 1, pic1, xin * 2 + 1, 2) \ ) +#define PIC221111_32(xin) \ +( \ + CBCRCG(0, xin), \ + PIC_32(xin / 4 * 8 + 0, (xin & 3) * 2 + 0, pic0, xin * 2 + 0), \ + PIC_32(xin / 4 * 8 + 0, (xin & 3) * 2 + 1, pic0, xin * 2 + 1), \ + PIC_32(xin / 4 * 8 + 1, (xin & 3) * 2 + 0, pic1, xin * 2 + 0), \ + PIC_32(xin / 4 * 8 + 1, (xin & 3) * 2 + 1, pic1, xin * 2 + 1) \ +) + static void col221111(out, pic, width) int *out; unsigned char *pic; @@ -956,3 +978,31 @@ outy += 64 * 2 - 16 * 4; } } + +static void col221111_32(out, pic, width) +int *out; +unsigned char *pic; +int width; +{ + int i, j, k; + unsigned char *pic0, *pic1; + int *outy, *outc; + int cr, cg, cb, y; + + pic0 = pic; + pic1 = pic + width; + outy = out; + outc = out + 64 * 4; + for (i = 2; i > 0; i--) { + for (j = 4; j > 0; j--) { + for (k = 0; k < 8; k++) { + PIC221111_32(k); + } + outc += 8; + outy += 16; + pic0 += 2 * width; + pic1 += 2 * width; + } + outy += 64 * 2 - 16 * 4; + } +} Index: linux-2.6.16/drivers/video/bootsplash/Kconfig =================================================================== --- linux-2.6.16.orig/drivers/video/bootsplash/Kconfig 2006-03-20 18:42:50.000000000 +0100 +++ linux-2.6.16/drivers/video/bootsplash/Kconfig 2006-03-20 18:43:54.000000000 +0100 @@ -6,7 +6,7 @@ config BOOTSPLASH bool "Bootup splash screen" - depends on FRAMEBUFFER_CONSOLE && FB_VESA + depends on FRAMEBUFFER_CONSOLE=y && BLK_DEV_INITRD=y default n ---help--- This option enables the Linux bootsplash screen. For more Index: linux-2.6.16/drivers/video/bootsplash/render.c =================================================================== --- linux-2.6.16.orig/drivers/video/bootsplash/render.c 2006-03-20 18:42:50.000000000 +0100 +++ linux-2.6.16/drivers/video/bootsplash/render.c 2006-03-20 18:43:54.000000000 +0100 @@ -21,7 +21,7 @@ int fgshift = (vc->vc_hi_font_mask) ? 9 : 8; u8 *src; u8 *dst, *splashsrc; - unsigned int d, x, y; + unsigned int d, x, y, Bpp = info->var.bits_per_pixel >> 3; u32 dd, fgx, bgx; u16 c = scr_readw(s); @@ -31,8 +31,8 @@ transparent = sd->splash_color == bg_color; xpos = xpos * vc->vc_font.width + sd->splash_text_xo; ypos = ypos * vc->vc_font.height + sd->splash_text_yo; - splashsrc = (u8 *)(info->splash_pic + ypos * info->splash_bytes + xpos * 2); - dst = (u8 *)(info->screen_base + ypos * info->fix.line_length + xpos * 2); + splashsrc = (u8 *)(info->splash_pic + ypos * info->splash_bytes + xpos * Bpp); + dst = (u8 *)(info->screen_base + ypos * info->fix.line_length + xpos * Bpp); fgx = ((u32 *)info->pseudo_palette)[fg_color]; if (transparent && sd->splash_color == 15) { @@ -51,28 +51,42 @@ src = vc->vc_font.data + (c & charmask) * vc->vc_font.height * ((vc->vc_font.width + 7) >> 3); for (y = 0; y < vc->vc_font.height; y++) { - for (x = 0; x < vc->vc_font.width; x += 2) { + for (x = 0; x < vc->vc_font.width; x++) { if ((x & 7) == 0) d = *src++; - if (d & 0x80) - dd = fgx; - else - dd = transparent ? *(u16 *)splashsrc : bgx; - splashsrc += 2; - if (d & 0x40) - dd |= fgx << 16; - else - dd |= (transparent ? *(u16 *)splashsrc : bgx) << 16; - splashsrc += 2; - d <<= 2; - fb_writel(dd, dst); - dst += 4; + switch (info->var.bits_per_pixel) { + case 16: + if (d & 0x80) + dd = fgx; + else + dd = transparent ? *(u16 *)splashsrc : bgx; + fb_writew(dd, dst); + break; + case 24: + if (d & 0x80) + dd = fgx; + else + dd = transparent ? *(u32 *)splashsrc >> 8 : bgx; + fb_writeb(dd >> 16, dst); + fb_writew(dd & 0xFFFF, dst+1); + break; + case 32: + if (d & 0x80) + dd = fgx; + else + dd = transparent ? *(u32 *)splashsrc : bgx; + fb_writel(dd, dst); + break; + } + splashsrc += Bpp; + dst += Bpp; + d <<= 1; } - dst += info->fix.line_length - vc->vc_font.width * 2; - splashsrc += info->splash_bytes - vc->vc_font.width * 2; + dst += info->fix.line_length - vc->vc_font.width * Bpp; + splashsrc += info->splash_bytes - vc->vc_font.width * Bpp; } - dst -= info->fix.line_length * vc->vc_font.height - vc->vc_font.width * 2; - splashsrc -= info->splash_bytes * vc->vc_font.height - vc->vc_font.width * 2; + dst -= info->fix.line_length * vc->vc_font.height - vc->vc_font.width * Bpp; + splashsrc -= info->splash_bytes * vc->vc_font.height - vc->vc_font.width * Bpp; } } @@ -81,10 +95,10 @@ int transparent = sd->splash_color == bg_color; u32 dd, fgx, bgx; u8 *dst, *splashsrc; - unsigned int d, x, y; + unsigned int d, x, y, Bpp = info->var.bits_per_pixel >> 3; - splashsrc = (u8 *)(info->splash_pic + ypos * info->splash_bytes + xpos * 2); - dst = (u8 *)(info->screen_base + ypos * info->fix.line_length + xpos * 2); + splashsrc = (u8 *)(info->splash_pic + ypos * info->splash_bytes + xpos * Bpp); + dst = (u8 *)(info->screen_base + ypos * info->fix.line_length + xpos * Bpp); fgx = ((u32 *)info->pseudo_palette)[fg_color]; if (transparent && sd->splash_color == 15) { if (fgx == 0xffea) @@ -97,25 +111,39 @@ bgx = ((u32 *)info->pseudo_palette)[bg_color]; d = 0; for (y = 0; y < height; y++) { - for (x = 0; x < width; x += 2) { + for (x = 0; x < width; x++) { if ((x & 7) == 0) d = *src++; - if (d & 0x80) - dd = fgx; - else - dd = transparent ? *(u16 *)splashsrc : bgx; - splashsrc += 2; - if (d & 0x40) - dd |= fgx << 16; - else - dd |= (transparent ? *(u16 *)splashsrc : bgx) << 16; - splashsrc += 2; - d <<= 2; - fb_writel(dd, dst); - dst += 4; + switch (info->var.bits_per_pixel) { + case 16: + if (d & 0x80) + dd = fgx; + else + dd = transparent ? *(u16 *)splashsrc : bgx; + fb_writew(dd, dst); + break; + case 24: + if (d & 0x80) + dd = fgx; + else + dd = transparent ? *(u32 *)splashsrc >> 8 : bgx; + fb_writeb(dd >> 16, dst); + fb_writew(dd & 0xFFFF, dst+1); + break; + case 32: + if (d & 0x80) + dd = fgx; + else + dd = transparent ? *(u32 *)splashsrc : bgx; + fb_writel(dd, dst); + break; + } + splashsrc += Bpp; + dst += Bpp; + d <<= 1; } - dst += info->fix.line_length - width * 2; - splashsrc += info->splash_bytes - width * 2; + dst += info->fix.line_length - width * Bpp; + splashsrc += info->splash_bytes - width * Bpp; } } @@ -131,21 +159,20 @@ splash_renderc(sd, info, attr_fgcol(fgshift, c), attr_bgcol(bgshift, c), src, ypos, xpos, vc->vc_font.height, vc->vc_font.width); } -void splashcopy(u8 *dst, u8 *src, int height, int width, int dstbytes, int srcbytes) +void splashcopy(u8 *dst, u8 *src, int height, int width, int dstbytes, int srcbytes, int depth) { int i; while (height-- > 0) { u32 *p = (u32 *)dst; u32 *q = (u32 *)src; - for (i=0; i < width/4; i++) { - fb_writel(*q++,p++); - fb_writel(*q++,p++); - } - if (width & 2) + u8 *r, *s; + for (i=0; i < (depth>>3)*width/4; i++) fb_writel(*q++,p++); - if (width & 1) - fb_writew(*(u16*)q,(u16*)p); + r = (u8 *)p; + s = (u8 *)q; + for (i=0; i < (depth>>3)*(width&3); i++) + fb_writeb(*s++,r++); dst += dstbytes; src += srcbytes; } @@ -170,7 +197,7 @@ } static void splashfill(struct fb_info *info, int sy, int sx, int height, int width) { - splashcopy((u8 *)(info->screen_base + sy * info->fix.line_length + sx * 2), (u8 *)(info->splash_pic + sy * info->splash_bytes + sx * 2), height, width, info->fix.line_length, info->splash_bytes); + splashcopy((u8 *)(info->screen_base + sy * info->fix.line_length + sx * (info->var.bits_per_pixel>>3)), (u8 *)(info->splash_pic + sy * info->splash_bytes + sx * (info->var.bits_per_pixel>>3)), height, width, info->fix.line_length, info->splash_bytes, info->var.bits_per_pixel); } void splash_clear(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, int sy, @@ -190,7 +217,7 @@ splashfill(info, sy, sx, height, width); return; } - dst = (u8 *)(info->screen_base + sy * info->fix.line_length + sx * 2); + dst = (u8 *)(info->screen_base + sy * info->fix.line_length + sx * (info->var.bits_per_pixel>>3)); bgx = ((u32 *)info->pseudo_palette)[bg_color]; splashset(dst, height, width, info->fix.line_length, bgx); } @@ -232,38 +259,53 @@ splashfill(info, sd->splash_text_yo + th, 0, info->var.yres - sd->splash_text_yo - th, info->var.xres); } -int splash_cursor(struct splash_data *sd, struct fb_info *info, struct fb_cursor *cursor) +void splash_cursor(struct splash_data *sd, struct fb_info *info, struct fb_cursor *cursor) { int i; unsigned int dsize, s_pitch; - if (info->state != FBINFO_STATE_RUNNING) - return 0; - - s_pitch = (cursor->image.width + 7) >> 3; + if (cursor->set & FB_CUR_SETSIZE) { + info->cursor.image.height = cursor->image.height; + info->cursor.image.width = cursor->image.width; + } + if (cursor->set & FB_CUR_SETPOS) { + info->cursor.image.dx = cursor->image.dx; + info->cursor.image.dy = cursor->image.dy; + } + if (cursor->set & FB_CUR_SETHOT) + info->cursor.hot = cursor->hot; + if (cursor->set & FB_CUR_SETCMAP) { + if (cursor->image.depth == 1) { + info->cursor.image.bg_color = cursor->image.bg_color; + info->cursor.image.fg_color = cursor->image.fg_color; + } else if (cursor->image.cmap.len) { + fb_copy_cmap(&cursor->image.cmap, &info->cursor.image.cmap); + } + info->cursor.image.depth = cursor->image.depth; + } + s_pitch = (info->cursor.image.width + 7) >> 3; dsize = s_pitch * cursor->image.height; - if (cursor->enable) { - switch (cursor->rop) { + if (info->cursor.enable) { + switch (info->cursor.rop) { case ROP_XOR: for (i = 0; i < dsize; i++) - info->fb_cursordata[i] = cursor->image.data[i] ^ cursor->mask[i]; + info->fb_cursordata[i] = cursor->image.data[i] ^ info->cursor.mask[i]; break; case ROP_COPY: default: for (i = 0; i < dsize; i++) - info->fb_cursordata[i] = cursor->image.data[i] & cursor->mask[i]; + info->fb_cursordata[i] = cursor->image.data[i] & info->cursor.mask[i]; break; } } else if (info->fb_cursordata != cursor->image.data) memcpy(info->fb_cursordata, cursor->image.data, dsize); - cursor->image.data = info->fb_cursordata; - splash_renderc(sd, info, cursor->image.fg_color, cursor->image.bg_color, (u8 *)info->fb_cursordata, cursor->image.dy + sd->splash_text_yo, cursor->image.dx + sd->splash_text_xo, cursor->image.height, cursor->image.width); - return 0; + info->cursor.image.data = info->fb_cursordata; + splash_renderc(sd, info, info->cursor.image.fg_color, info->cursor.image.bg_color, (u8 *)info->fb_cursordata, info->cursor.image.dy + sd->splash_text_yo, info->cursor.image.dx + sd->splash_text_xo, info->cursor.image.height, info->cursor.image.width); } void splash_bmove_redraw(struct splash_data *sd, struct vc_data *vc, struct fb_info *info, int y, int sx, int dx, int width) { - unsigned short *d = (unsigned short *) (vc->vc_origin + vc->vc_size_row * y + dx * 2); + unsigned short *d = (unsigned short *) (vc->vc_origin + vc->vc_size_row * y + dx * (info->var.bits_per_pixel>>3)); unsigned short *s = d + (dx - sx); unsigned short *start = d; unsigned short *ls = d; Index: linux-2.6.16/drivers/video/console/bitblit.c =================================================================== --- linux-2.6.16.orig/drivers/video/console/bitblit.c 2006-03-20 18:42:50.000000000 +0100 +++ linux-2.6.16/drivers/video/console/bitblit.c 2006-03-20 18:43:54.000000000 +0100 @@ -389,6 +389,10 @@ switch (mode) { case CM_ERASE: ops->cursor_state.enable = 0; +#ifdef CONFIG_BOOTSPLASH + if (info->splash_data) + splash_cursor(info->splash_data, info, &cursor); +#endif break; case CM_DRAW: case CM_MOVE: Index: linux-2.6.16/drivers/video/console/fbcon.c =================================================================== --- linux-2.6.16.orig/drivers/video/console/fbcon.c 2006-03-20 18:42:50.000000000 +0100 +++ linux-2.6.16/drivers/video/console/fbcon.c 2006-03-20 18:44:40.000000000 +0100 @@ -403,6 +403,14 @@ return; } +#ifdef CONFIG_BOOTSPLASH + if (info->splash_data) { + splash_cursor(info->splash_data, info, &info->cursor); + release_console_sem(); + return; + } +#endif + p = &fb_display[vc->vc_num]; c = scr_readw((u16 *) vc->vc_pos); mode = (!ops->cursor_flash || ops->cursor_state.enable) ? @@ -1051,7 +1057,11 @@ struct vc_data **default_mode = vc->vc_display_fg; struct vc_data *svc = *default_mode; struct display *t, *p = &fb_display[vc->vc_num]; +#ifdef CONFIG_BOOTSPLASH + int logo = 0, new_rows, new_cols, rows, cols, charcnt = 256; +#else int logo = 1, new_rows, new_cols, rows, cols, charcnt = 256; +#endif int cap; if (info_idx == -1 || info == NULL) @@ -1229,6 +1239,12 @@ struct display *p = &fb_display[vc->vc_num]; struct fbcon_ops *ops = info->fbcon_par; +#ifdef CONFIG_BOOTSPLASH + if (info->splash_data) { + splash_putcs(info->splash_data, vc, info, s, count, ypos, xpos); + return; + } +#endif if (!fbcon_is_inactive(vc, info)) ops->putcs(vc, info, s, count, real_y(p, ypos), xpos, get_color(vc, info, scr_readw(s), 1), @@ -1272,6 +1288,14 @@ y = 0; } +#ifdef CONFIG_BOOTSPLASH + if (info->splash_data) { + splash_cursor(info->splash_data, info, &info->cursor); + vbl_cursor_cnt = CURSOR_DRAW_DELAY; + return; + } +#endif + ops->cursor(vc, info, mode, y, get_color(vc, info, c, 1), get_color(vc, info, c, 0)); vbl_cursor_cnt = CURSOR_DRAW_DELAY; Index: linux-2.6.16/include/linux/fb.h =================================================================== --- linux-2.6.16.orig/include/linux/fb.h 2006-03-20 18:42:50.000000000 +0100 +++ linux-2.6.16/include/linux/fb.h 2006-03-20 18:43:54.000000000 +0100 @@ -750,6 +750,7 @@ struct fb_var_screeninfo var; /* Current var */ struct fb_fix_screeninfo fix; /* Current fix */ struct fb_monspecs monspecs; /* Current Monitor specs */ + struct fb_cursor cursor; /* Current cursor */ struct work_struct queue; /* Framebuffer event queue */ struct fb_pixmap pixmap; /* Image hardware mapper */ struct fb_pixmap sprite; /* Cursor hardware mapper */ Index: linux-2.6.16/kernel/panic.c =================================================================== --- linux-2.6.16.orig/kernel/panic.c 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/kernel/panic.c 2006-03-20 18:43:54.000000000 +0100 @@ -105,6 +105,12 @@ * We can't use the "normal" timers since we just panicked.. */ printk(KERN_EMERG "Rebooting in %d seconds..",panic_timeout); +#ifdef CONFIG_BOOTSPLASH + { + extern int splash_verbose(void); + (void)splash_verbose(); + } +#endif for (i = 0; i < panic_timeout*1000; ) { touch_nmi_watchdog(); i += panic_blink(i); @@ -129,6 +135,12 @@ disabled_wait(caller); #endif local_irq_enable(); +#ifdef CONFIG_BOOTSPLASH + { + extern int splash_verbose(void); + (void)splash_verbose(); + } +#endif for (i = 0;;) { touch_softlockup_watchdog(); i += panic_blink(i); geexbox-1.1/packages/linux/patches/52_bootsplash-novesa.diff0000644000175000017500000000166710641745505022302 0ustar benben* allow bootsplash to work on non-vesa fb drivers but check we have valid vc pointer. Index: linux-2.6.16/drivers/video/bootsplash/bootsplash.c =================================================================== --- linux-2.6.16.orig/drivers/video/bootsplash/bootsplash.c 2006-03-20 18:43:54.000000000 +0100 +++ linux-2.6.16/drivers/video/bootsplash/bootsplash.c 2006-03-20 18:46:53.000000000 +0100 @@ -548,11 +548,11 @@ printk(KERN_INFO " found, but has oversized text area!\n"); return -1; } -/* if (!vc_cons[unit].d || info->fbops != &vesafb_ops) { + if (!vc_cons[unit].d) { splash_free(vc, info); printk(KERN_INFO " found, but framebuffer can't handle it!\n"); return -1; - } */ + } printk(KERN_INFO "...found (%dx%d, %d bytes, v%d).\n", width, height, splash_size, version); if (version == 1) { printk(KERN_WARNING "bootsplash: Using deprecated v1 header. Updating your splash utility recommended.\n"); geexbox-1.1/packages/linux/patches/53_bootsplash-gcc4-fix.diff0000644000175000017500000000132410641745505022402 0ustar benben* fix gcc4 compliation - "error: invalid lvalue in increment" Index: linux-2.6.16/drivers/video/bootsplash/bootsplash.c =================================================================== --- linux-2.6.16.orig/drivers/video/bootsplash/bootsplash.c 2006-03-20 18:46:53.000000000 +0100 +++ linux-2.6.16/drivers/video/bootsplash/bootsplash.c 2006-03-20 18:46:57.000000000 +0100 @@ -268,7 +268,8 @@ i = ((CLAMP(r + add*2+1) & 0xf8) << 8) | ((CLAMP(g + add ) & 0xfc) << 3) | ((CLAMP(b + add*2+1) ) >> 3); - *((unsigned short *)picp)++ = i; + *((unsigned short *)picp) = i; + picp = (unsigned char *)((unsigned short *)picp + 1); add ^= 3; break; case 24: geexbox-1.1/packages/linux/patches/58_lower-undefined-mode-timeout.diff0000644000175000017500000000146710641745505024334 0ustar benbenIndex: linux-2.6.16/arch/i386/boot/video.S =================================================================== --- linux-2.6.16.orig/arch/i386/boot/video.S 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/arch/i386/boot/video.S 2006-03-20 18:47:03.000000000 +0100 @@ -1853,10 +1853,10 @@ int $0x16 ret -# Read a key with a timeout of 30 seconds. +# Read a key with a timeout of 3 seconds. # The hardware clock is used to get the time. getkt: call gettime - addb $30, %al # Wait 30 seconds + addb $3, %al # Wait 3 seconds cmpb $60, %al jl lminute @@ -1968,7 +1968,7 @@ # Status messages keymsg: .ascii "Press to see video modes available, " - .ascii " to continue or wait 30 secs" + .ascii " to continue or wait 3 secs" .byte 0x0d, 0x0a, 0 listhdr: .byte 0x0d, 0x0a geexbox-1.1/packages/linux/patches/61_kconfig-no-timestamp.diff0000644000175000017500000000065710641745505022664 0ustar benbenIndex: linux-2.6.16/scripts/kconfig/confdata.c =================================================================== --- linux-2.6.16.orig/scripts/kconfig/confdata.c 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/scripts/kconfig/confdata.c 2006-03-20 18:47:06.000000000 +0100 @@ -340,7 +340,7 @@ int type, l; const char *str; time_t now; - int use_timestamp = 1; + int use_timestamp = 0; char *env; dirname[0] = 0; geexbox-1.1/packages/linux/patches/62_digimatrix_v4l.diff0000644000175000017500000000140710641745505021552 0ustar benben--- linux-2.6.16/drivers/media/video/saa7134/saa7134-cards.c 2006-03-20 13:53:29.000000000 +0800 +++ linux-2.6.16/drivers/media/video/saa7134/saa7134-cards.c 2006-04-13 14:07:25.000000000 +0800 @@ -2485,7 +2485,7 @@ /* "Cyril Lacoux (Yack)" */ .name = "ASUS Digimatrix TV", .audio_clock = 0x00200000, - .tuner_type = TUNER_PHILIPS_FQ1216ME, + .tuner_type = TUNER_LG_PAL_NEW_TAPC, .tda9887_conf = TDA9887_PRESENT, .radio_type = UNSET, .tuner_addr = ADDR_UNSET, @@ -2498,11 +2498,11 @@ },{ .name = name_comp1, .vmux = 3, - .amux = LINE1, + .amux = LINE2, },{ .name = name_svideo, .vmux = 8, - .amux = LINE1, + .amux = LINE2 }}, }, [SAA7134_BOARD_PHILIPS_TIGER] = { geexbox-1.1/packages/linux/patches/70_enable-utf8.diff0000644000175000017500000000166710641745505020745 0ustar benbenIndex: linux-2.6.16/fs/fat/inode.c =================================================================== --- linux-2.6.16.orig/fs/fat/inode.c 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/fs/fat/inode.c 2006-03-20 18:47:09.000000000 +0100 @@ -952,7 +952,8 @@ opts->shortname = 0; opts->name_check = 'n'; opts->quiet = opts->showexec = opts->sys_immutable = opts->dotsOK = 0; - opts->utf8 = opts->unicode_xlate = 0; + opts->utf8 = 1; + opts->unicode_xlate = 0; opts->numtail = 1; opts->nocase = 0; *debug = 0; Index: linux-2.6.16/fs/isofs/inode.c =================================================================== --- linux-2.6.16.orig/fs/isofs/inode.c 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/fs/isofs/inode.c 2006-03-20 18:47:09.000000000 +0100 @@ -371,7 +371,7 @@ popt->gid = 0; popt->uid = 0; popt->iocharset = NULL; - popt->utf8 = 0; + popt->utf8 = 1; popt->session=-1; popt->sbsector=-1; if (!options) geexbox-1.1/packages/linux/patches/80_via-rhine-pxeboot.diff0000644000175000017500000000104510641745505022162 0ustar benbendiff -Nur linux-2.6.18.orig/drivers/net/via-rhine.c linux-2.6.18/drivers/net/via-rhine.c --- linux-2.6.18.orig/drivers/net/via-rhine.c 2006-09-17 16:41:59.000000000 +0200 +++ linux-2.6.18/drivers/net/via-rhine.c 2006-09-17 16:43:30.000000000 +0200 @@ -46,7 +46,7 @@ /* Work-around for broken BIOSes: they are unable to get the chip back out of power state D3 so PXE booting fails. bootparam(7): via-rhine.avoid_D3=1 */ -static int avoid_D3; +static int avoid_D3 = 1; /* * In case you are looking for 'options[]' or 'full_duplex[]', they geexbox-1.1/packages/linux/patches/85_linux-16k-stacks.diff0000644000175000017500000000124510641745505021655 0ustar benben* Set THREAD_SIZE to 16K, so that ndiswrapper can handle larger Windoze drivers. Smaller 8K stacks cannot handle some drivers being loaded. diff -urN linux-2.6.21/include/asm-i386/thread_info.h linux-2.6.21-16kstacks/include/asm-i386/thread_info.h --- linux-2.6.21/include/asm-i386/thread_info.h 2007-04-25 23:08:32.000000000 -0400 +++ linux-2.6.21-16kstacks/include/asm-i386/thread_info.h 2007-04-26 14:15:55.000000000 -0400 @@ -54,9 +54,5 @@ #define PREEMPT_ACTIVE 0x10000000 -#ifdef CONFIG_4KSTACKS -#define THREAD_SIZE (4096) -#else -#define THREAD_SIZE (8192) -#endif +#define THREAD_SIZE (16384) #define STACK_WARN (THREAD_SIZE/8) geexbox-1.1/packages/linux/unpack0000755000175000017500000000126610641745505015246 0ustar benben#!/bin/sh . config/options $SCRIPTS/install make $SCRIPTS/install sed LINUX=`ls -d $BUILD/$1*` case $TARGET_ARCH in powerpc) TARGET_LINUX_ARCH=powerpc ;; *) TARGET_LINUX_ARCH=$TARGET_ARCH ;; esac sed -i -e "s|^HOSTCC[[:space:]]*=.*$|HOSTCC = $HOST_CC|" \ -e "s|^HOSTCXX[[:space:]]*=.*$|HOSTCXX = $HOST_CXX|" \ -e "s|^ARCH[[:space:]]*?=.*$|ARCH = $TARGET_LINUX_ARCH|" \ -e "s|^CROSS_COMPILE[[:space:]]*?=.*$|CROSS_COMPILE = $TARGET_PREFIX|" \ $LINUX/Makefile sed "s/CONFIG_BLK_DEV_RAM_SIZE=.*/CONFIG_BLK_DEV_RAM_SIZE=$RAMDISK_SIZE/" $PACKAGES/$1/config/$1.$TARGET_ARCH.conf > $LINUX/.config make -C $LINUX oldconfig make -C $LINUX prepare1 geexbox-1.1/packages/linux/url0000644000175000017500000000010610641745505014554 0ustar benbenhttp://ftp.ch.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.3.tar.bz2 geexbox-1.1/packages/lirc/0000755000175000017500000000000010641745505013624 5ustar benbengeexbox-1.1/packages/lirc/build0000755000175000017500000000077510641745505014662 0ustar benben#!/bin/sh . config/options $SCRIPTS/build toolchain $SCRIPTS/build libirman $SCRIPTS/build linux export ac_cv_path_LIBUSB_CONFIG= export ac_cv_header_alsa_asoundlib_h=no cd $BUILD/$1* ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=$LIB_PREFIX \ --disable-shared \ --without-x \ --with-driver=all \ --with-port=0x3f8 \ --with-irq=4 \ --with-kerneldir=$(kernel_path) make make -C tools install geexbox-1.1/packages/lirc/config/0000755000175000017500000000000010641745505015071 5ustar benbengeexbox-1.1/packages/lirc/config/lircd_D-10.conf0000644000175000017500000000432710641745505017524 0ustar benben# # contributed by Bernardo Santos # # brand: Gradiente # model: D-10 # supported devices: Remote control for gradiente's D-10 DVD player. # # Automatic generation didn`t work well so I had to # figure out the protocol myself. It is similar to the one # on the generic RECS80.conf config file. # begin remote name D-10 bits 11 flags SPACE_ENC eps 25 aeps 100 one 270 7310 zero 270 4800 ptrail 270 toggle_bit 2 gap 49000 begin codes POWER 0x000000000000075E EJECT 0x0000000000000766 ANGLE 0x000000000000076E INDEX 0x000000000000075A A-B 0x000000000000075F MUTE 0x0000000000000758 1 0x0000000000000775 2 0x000000000000076D 3 0x0000000000000765 4 0x000000000000075D 5 0x0000000000000774 6 0x000000000000076C 7 0x0000000000000764 8 0x000000000000075C 9 0x0000000000000773 0 0x000000000000076B MENU 0x0000000000000767 TITLE 0x0000000000000776 SUBTITLE 0x0000000000000763 AUDIO 0x0000000000000760 PAUSE 0x0000000000000759 ACTIVE_MENU 0x000000000000076F EXIT 0x0000000000000770 UP_FW 0x0000000000000768 LEFT_RW 0x0000000000000771 OK_PLAY 0x0000000000000769 RIGHT_FW 0x0000000000000761 DOWN_RW 0x000000000000076A STOP 0x0000000000000762 SKIP_BACK 0x0000000000000777 SKIP_FORWARD 0x0000000000000772 end codes end remote geexbox-1.1/packages/lirc/config/lircd_LG.conf0000644000175000017500000000472110641745505017423 0ustar benben # Please make this file available to others # by sending it to # # this config file was automatically generated # using lirc-0.6.6(irman) on Fri May 14 17:48:53 2004 # # contributed by bufa # # brand: LG # model no. of remote control: # devices being controlled by this remote: # begin remote name LG bits 16 eps 30 aeps 100 one 0 0 zero 0 0 pre_data_bits 16 pre_data 0xFFFF post_data_bits 32 post_data 0x0 gap 25000 min_repeat 2 toggle_bit 0 begin codes power 0x000000000000FE60 mute 0x000000000000FE40 1 0x000000000000FFC0 2 0x000000000000FFA0 3 0x000000000000FF80 4 0x000000000000FF60 5 0x000000000000FF40 6 0x000000000000FF20 7 0x000000000000FF00 8 0x000000000000FEE0 9 0x000000000000FEC0 menu 0x000000000000F880 0 0x000000000000FFE0 tv 0x000000000000F8E0 red 0x000000000000F900 green 0x000000000000F920 yellow 0x000000000000F9A0 blue 0x000000000000F960 vol+ 0x000000000000FDE0 vol- 0x000000000000FDC0 pr+ 0x000000000000FBE0 pr- 0x000000000000FBC0 ok 0x000000000000FB40 text 0x000000000000F860 size 0x000000000000FA80 hold 0x000000000000FAC0 sleep 0x000000000000F820 update 0x000000000000FA40 time 0x000000000000FAA0 reveal 0x000000000000FA60 psm 0x000000000000FE20 ssm 0x000000000000FD20 picture 0x000000000000FD80 sound 0x000000000000FB60 end codes end remote geexbox-1.1/packages/lirc/config/lircd_Medion-X10.conf0000644000175000017500000000570510641745505020705 0ustar benben # Please make this file available to others # by sending it to # # this config file was automatically generated # using lirc-0.8.0(atiusb) on Sat Oct 21 14:49:15 2006 # # contributed by Michail Pappas # # brand: Medion (X10 OEM'd) bundled remote # lirc kernel module: lirc_atiusb # Geexbox receiver: atiusb # model no. of remote control: P/N 20017670 # devices being controlled by this remote: FCC ID: B4S20016398 # Receiver needed: lirc_atiusb begin remote name Medion-X10 bits 16 eps 30 aeps 100 one 0 0 zero 0 0 pre_data_bits 8 pre_data 0x14 post_data_bits 16 post_data 0x0 gap 219969 toggle_bit 0 begin codes tv 0x012C vcr 0x022D dvd 0xD904 music 0xDB06 radio 0x032E photo 0xDA05 tv_preview 0x042F channel_list 0x0530 setup 0xF01B video_desktop 0x0631 chan-up 0xE00B chan-down 0xE10C vol-up 0xDE09 vol-down 0xDD08 mute 0xD500 red 0x0732 green 0x0833 yellow 0x0934 blue 0x0A35 txt 0xEB16 1 0xE20D 2 0xE30E 3 0xE40F 4 0xE510 5 0xE611 6 0xE712 7 0xE813 8 0xE914 9 0xEA15 0 0xEC17 ch_search 0xF11C delete 0xF520 rename 0x0B36 snapshot 0xED18 up 0xEF1A down 0xF722 left 0xF21D right 0xF41F ok 0xF31E acquire_image 0x0C37 edit_image 0x0D38 rewind 0xF924 play 0xFA25 fast_forward 0xFB26 rec 0xFC27 stop 0xFD28 pause 0xFE29 previous 0xF621 fullscreen 0x0E39 next 0xF823 dvd_menu 0xEE19 dvd_audio 0x0F3A power 0xD702 end codes end remote geexbox-1.1/packages/lirc/config/lircd_RM-S6.conf0000644000175000017500000000357010641745505017726 0ustar benben# # this config file was NOT automatically generated. # it was made using lirc-0.5.5pre8 on Sat Jun 12 1999 # # contributed by Luis Sousa # # brand: SONY # model: RM-S6 # supported devices: this remote has the basic functions for # almost all Sony HiFi Sytems # begin remote name RM-S6 bits 12 flags SPACE_ENC eps 30 aeps 100 header 2500 590 one 1210 590 zero 610 590 ptrail 0 plead 0 foot 0 0 repeat 0 0 pre_data_bits 0 pre_data 0 post_data_bits 0 post_data 0 pre 0 0 post 0 0 gap 25000 repeat_bit 0 min_repeat 2 begin codes SLEEP 0x0000000000000061 AMP_POWER 0x0000000000000A81 CD 0x0000000000000A41 CD_PLAY 0x00000000000004D1 CD_PAUSE 0x00000000000009D1 CD_STOP 0x00000000000001D1 CD_EJECT 0x0000000000000691 CD_PREV_TRACK 0x00000000000000D1 CD_NEXT_TRACK 0x00000000000008D1 TAPE 0x0000000000000C41 PHONO 0x0000000000000041 VIDEO/AUX 0x0000000000000441 TUNER 0x0000000000000841 TUNER_SHIFT 0x0000000000000CD6 TUNER_PRESET_- 0x0000000000000896 TUNER_PRESET_+ 0x0000000000000096 AMP_VOL_UP 0x0000000000000481 AMP_VOL_DOWN 0x0000000000000C81 end codes end remote geexbox-1.1/packages/lirc/config/lircd_RX-V850.conf0000644000175000017500000000625010641745505020111 0ustar benben# # This config file has been automatically converted from a device file # found in the 06/26/00 release of the Windows Slink-e software # package. # # Many thanks to Colby Boles of Nirvis Systems Inc. for allowing us to # use these files. # # The original filename was: "yamaha rx-v850 rs rx-v850 receiver_amp.cde" # # The original description for this device was: # # yamaha rx-v850 rs rx-v850 receiver/amp # begin remote name RX-V850 bits 32 flags SPACE_ENC eps 20 aeps 200 header 8800 4400 one 550 1650 zero 550 550 ptrail 550 repeat 8800 2200 gap 38500 toggle_bit 0 frequency 38000 begin codes POWER 0x000000005EA1F807 PHONO 0x000000005EA128D7 CD 0x000000005EA1A857 TUNER 0x000000005EA16897 TAPE_1/DAT 0x000000005EA19867 TAPE_2/VCR_2 0x000000005EA118E7 LD_V 0x000000005EA1E817 VCR_1 0x000000005EA1F00F CD_PLAY 0x000000005EA110EF CD_PAUSE/STOP 0x000000005EA1906F CD_SEARCH_FWD 0x000000005EA130CF CD_SEARCH_REV 0x000000005EA1B04F CD_SKIP_FWD 0x000000005EA150AF CD_SKIP_REV 0x000000005EA1D02F CD_DISK_SKIP 0x000000005EA1F20D TAPE_PLAY 0x000000005EA100FF TAPE_STOP 0x000000005EA1C03F TAPE_FFWD 0x000000005EA140BF TAPE_REWIND 0x000000005EA1807F TAPE_REC/PAUSE 0x000000005EA120DF TAPE_REC_MUTE 0x000000005EA1A05F TAPE_DECK_A/B 0x000000005EA1609F TAPE_DIR_A 0x000000005EA1E01F TAPE_DIR_B 0x000000005EA102FD TUNER_+ 0x000000005EA108F7 TUNER_A/B/C/D/E 0x000000005EA148B7 DSP_TEST 0x000000005EA1A15E DSP_CENTRE_MODE 0x000000005EA121DE DSP_PRO_LOGIC 0x000000005EA111EE DSP_PRO_LOGIC_ENH. 0x000000005EA1916E DSP_CNCT_VIDEO 0x000000005EA151AE DSP_MONO_MOVIE 0x000000005EA1D12E DSP_ROCK 0x000000005EA131CE DSP_HALL 0x000000005EA1B14E DSP_EFFECT_ON/OFF 0x000000005EA16A95 FRONT_LEVEL_+ 0x000000005EA101FE FRONT_LEVEL_- 0x000000005EA1817E CENTRE_LEVEL_+ 0x000000005EA141BE CENTRE_LEVEL_- 0x000000005EA1C13E REAR_LEVEL_+ 0x000000005EA17A85 REAR_LEVEL_- 0x000000005EA1FA05 DELAY_TIME_+ 0x000000005EA14AB5 DELAY_TIME_- 0x000000005EA1CA35 MUTING 0x000000005EA138C7 VOLUME_UP 0x000000005EA158A7 VOLUME_DOWN 0x000000005EA1D827 end codes end remote geexbox-1.1/packages/lirc/config/lircd_animax0000644000175000017500000000011410641745505017442 0ustar benbenLIRC_DRIVER=default LIRC_DEVICE=/dev/lirc LIRC_MODULES="lirc_serial type=3" geexbox-1.1/packages/lirc/config/lircd_animax.conf0000644000175000017500000001561410641745505020401 0ustar benben # # This is a space encoded remote control from AnimaX. # You need at least lirc-0.5.4 to use this config file # # contributed by Karsten Scheibler # # brand: AnimaX # model: Anir Remote Control # supported devices: This remote control comes with some TV Tuner cards from # Hauppauge. # begin remote name ANIMAX bits 16 flags SPACE_ENC|REVERSE eps 20 aeps 0 header 4500 4500 one 562 1682 zero 562 562 ptrail 562 plead 0 foot 0 0 repeat 2500 2500 pre_data_bits 8 pre_data 0xF0 post_data_bits 0 post_data 0x0 pre 0 0 post 0 0 gap 12937 repeat_gap 102937 repeat_bit 0 begin codes CD_DOWN 0x000000000000DB24 CD_UP 0x0000000000005BA4 TV_DOWN 0x000000000000DC23 TV_UP 0x0000000000005CA3 PHONE_DOWN 0x000000000000DD22 PHONE_UP 0x0000000000005DA2 RADIO_DOWN 0x000000000000DE21 RADIO_UP 0x0000000000005EA1 VIDEO_DOWN 0x000000000000DF20 VIDEO_UP 0x0000000000005FA0 AUX1_DOWN 0x000000000000E01F AUX1_UP 0x000000000000609F MAIL_DOWN 0x000000000000E11E MAIL_UP 0x000000000000619E AUX2_DOWN 0x000000000000E21D AUX2_UP 0x000000000000629D POWER_DOWN 0x000000000000E31C POWER_UP 0x000000000000639C LEFT_MOUSE_BUTTON_TOUCH_DOWN 0x000000000000E41B LEFT_MOUSE_BUTTON_TOUCH_UP 0x000000000000649B REWIND_DOWN 0x000000000000E51A REWIND_UP 0x000000000000659A PLAY_DOWN 0x000000000000E619 PLAY_UP 0x0000000000006699 FORWARD_DOWN 0x000000000000E718 FORWARD_UP 0x0000000000006798 SKIP_BACKWARD_DOWN 0x000000000000E817 SKIP_BACKWARD 0x0000000000006897 STOP_DOWN 0x000000000000E916 STOP_UP 0x0000000000006996 SKIP_FORWARD_DOWN 0x000000000000EA15 SKIP_FORWARD_UP 0x0000000000006A95 CHANNEL_UP_DOWN 0x000000000000EB14 CHANNEL_UP_UP 0x0000000000006B94 MENU_DOWN 0x000000000000EC13 MENU_UP 0x0000000000006C93 VOLUME_UP_DOWN 0x000000000000ED12 VOLUME_UP_UP 0x0000000000006D92 BLUE_BUTTON_DOWN 0x000000000000EE11 BLUE_BUTTON_UP 0x0000000000006E91 MUTE_DOWN 0x000000000000EF10 MUTE_UP 0x0000000000006F90 VOLUME_DOWN_DOWN 0x000000000000F00F VOLUME_DOWN_UP 0x000000000000708F RED_BUTTON_DOWN 0x000000000000F10E RED_BUTTON_UP 0x000000000000718E GREEN_BUTTON_DOWN 0x000000000000F20D GREEN_BUTTON_UP 0x000000000000728D CHANNEL_DOWN_DOWN 0x000000000000F30C CHANNEL_DOWN_UP 0x000000000000738C 1_DOWN 0x000000000000F40B 1_UP 0x000000000000748B 2_DOWN 0x000000000000F50A 2_UP 0x000000000000758A 3_DOWN 0x000000000000F609 3_UP 0x0000000000007689 4_DOWN 0x000000000000F708 4_UP 0x0000000000007788 5_DOWN 0x000000000000F807 5_UP 0x0000000000007887 6_DOWN 0x000000000000F906 6_UP 0x0000000000007986 7_DOWN 0x000000000000FA05 7_UP 0x0000000000007A85 8_DOWN 0x000000000000FB04 8_UP 0x0000000000007B84 9_DOWN 0x000000000000FC03 9_UP 0x0000000000007C83 SLASH_DOWN 0x000000000000FD02 SLASH_UP 0x0000000000007D82 0_DOWN 0x000000000000FE01 0_UP 0x0000000000007E81 MINUS_DOWN 0x000000000000FF00 MINUS_UP 0x0000000000007F80 end codes end remote begin remote name ANIMAX_MOUSE_BUTTONS bits 16 flags SPACE_ENC|REVERSE eps 20 aeps 0 header 4500 4500 one 562 1682 zero 562 562 ptrail 562 plead 0 foot 0 0 repeat 0 0 pre_data_bits 8 pre_data 0xF0 post_data_bits 0 post_data 0x0 pre 0 0 post 0 0 gap 12937 repeat_bit 0 begin codes RIGHT_MOUSE_BUTTON_DOWN 0x000000000000C639 RIGHT_MOUSE_BUTTON_UP 0x00000000000046B9 LEFT_MOUSE_BUTTON_DOWN 0x000000000000CE31 LEFT_MOUSE_BUTTON_UP 0x0000000000004EB1 end codes end remote begin remote name ANIMAX_MOUSE_PAD bits 16 flags SPACE_ENC|REVERSE eps 20 aeps 0 header 4500 4500 one 562 1682 zero 562 562 ptrail 562 plead 0 foot 0 0 repeat 2500 2500 pre_data_bits 8 pre_data 0xF0 post_data_bits 0 post_data 0x0 pre 0 0 post 0 0 gap 12937 repeat_gap 8437 repeat_bit 0 begin codes MOUSE_NNW 0x000000000000906F MOUSE_NW 0x000000000000D02F MOUSE_NWW 0x000000000000916E MOUSE_W 0x000000000000D12E MOUSE_SWW 0x000000000000926D MOUSE_SW 0x000000000000D22D MOUSE_SSW 0x000000000000936C MOUSE_S 0x000000000000D32C MOUSE_SSE 0x000000000000946B MOUSE_SE 0x000000000000D42B MOUSE_SEE 0x000000000000956A MOUSE_E 0x000000000000D52A MOUSE_NEE 0x0000000000009669 MOUSE_NE 0x000000000000D629 MOUSE_NNE 0x0000000000009768 MOUSE_N 0x000000000000D728 end codes end remote geexbox-1.1/packages/lirc/config/lircd_askey0000644000175000017500000000014210641745505017302 0ustar benbenLIRC_DRIVER=default LIRC_DEVICE=/dev/lirc LIRC_MODULES="videodev|bttv card=38|lirc_dev|lirc_gpio" geexbox-1.1/packages/lirc/config/lircd_askey.conf0000644000175000017500000000461010641745505020232 0ustar benben# # this config file was automatically generated # using lirc-0.6.0 on Thu Apr 27 12:27:04 2000 # # contributed by Claas Langbehn # Please read the documentation, faq etc. # before sending me mails. # # brand: ASKEY # model: AS-218 / AS-220 # supported devices: ASKEY MagicTV # # comment: repeated keys are recognized, now. # begin remote name AS-218 bits 16 flags SPACE_ENC|CONST_LENGTH eps 30 aeps 100 header 9087 4424 one 629 1617 zero 629 495 ptrail 632 repeat 9088 2182 pre_data_bits 16 pre_data 0x61D6 gap 107905 repeat_bit 0 begin codes 0 0x00000000000000FF 1 0x000000000000807F 2 0x00000000000040BF 3 0x000000000000C03F 4 0x00000000000020DF 5 0x000000000000A05F 6 0x000000000000609F 7 0x000000000000E01F 8 0x00000000000010EF 9 0x000000000000906F LOOP 0x00000000000050AF # unused FINE_UP(PLUS) 0x00000000000030CF ZOOM 0x000000000000B04F RECORD 0x000000000000708F PREVIEW 0x000000000000F00F SCAN 0x00000000000008F7 VIDEO 0x0000000000008877 POWER 0x00000000000048B7 MUTE 0x000000000000C837 COLOR 0x00000000000028D7 #unused FREEZE 0x0000000000006897 100 0x000000000000E817 FINE_DOWN(MINUS) 0x00000000000018E7 PLAY 0x0000000000009867 CH_UP 0x00000000000058A7 VOL_UP 0x000000000000D827 TV 0x00000000000038C7 STOP 0x000000000000B847 CH_DOWN 0x0000000000007887 VOL_DOWN 0x000000000000F807 end codes end remote geexbox-1.1/packages/lirc/config/lircd_atiusb0000644000175000017500000000010510641745505017454 0ustar benbenLIRC_DRIVER=default LIRC_DEVICE=/dev/lirc LIRC_MODULES="lirc_atiusb" geexbox-1.1/packages/lirc/config/lircd_atiusb.conf0000644000175000017500000000572110641745505020411 0ustar benben# Please make this file available to others # by sending it to # # this config file was automatically generated # using lirc-0.8.0(atiusb) on Wed Oct 25 22:34:25 2006 # # contributed by Michail Pappas # # brand: atiusb # model no. of remote control: 5000015900A # 5000023600 # probably 5000022000 # devices being controlled by this remote: ATI USB Receiver (X10) # begin remote name atiusb bits 16 eps 30 aeps 100 one 0 0 zero 0 0 pre_data_bits 8 pre_data 0x14 post_data_bits 16 post_data 0x0 gap 235966 min_repeat 1 toggle_bit 0 begin codes a 0xD500 b 0xD601 power 0xD702 tv 0xD803 dvd 0xD904 web 0xDA05 media_library 0xDB06 drag 0xDC07 mouse-button_left 0x4D78 mouse-button_right 0x517C mouse-up 0x4772 mouse-down 0x4873 mouse-left 0x4570 mouse-right 0x4671 mouse-left_up 0x4974 mouse-right_up 0x4A75 mouse-left_down 0x4C77 mouse-right_down 0x4B76 vol-up 0xDD08 vol-down 0xDE09 mute 0xDF0A chan-up 0xE00B chan-down 0xE10C 1 0xE20D 2 0xE30E 3 0xE40F 4 0xE510 5 0xE611 6 0xE712 7 0xE813 8 0xE914 9 0xEA15 0 0xEC17 dvd-root_menu 0xEB16 launch_setup 0xED18 c 0xEE19 d 0xF01B tv_on_demand 0xF11C max_window 0xF520 cursor-up 0xEF1A cursor-down 0xF722 cursor-left 0xF21D cursor-right 0xF41F ok 0xF31E e 0xF621 f 0xF823 rewind 0xF924 play 0xFA25 fast_forward 0xFB26 record 0xFC27 stop 0xFD28 pause 0xFE29 end codes end remote geexbox-1.1/packages/lirc/config/lircd_atiusb20000644000175000017500000000010510641745505017536 0ustar benbenLIRC_DRIVER=default LIRC_DEVICE=/dev/lirc LIRC_MODULES="lirc_atiusb" geexbox-1.1/packages/lirc/config/lircd_atiusb2.conf0000644000175000017500000000566110641745505020476 0ustar benben# this config file was automatically generated # using lirc-0.7.0(atiusb) on Sat Feb 12 13:22:29 2005 # # contributed by Steffen # # brand: ATI Sapphire Remote Bob II USB # model no. of remote control: 5000024400 # devices being controlled by this remote: ASUS Digimatrix MythTV PVR # modified for Geexbox by: JTS # fixed by flynn 01/14/06 begin remote name 5000024400 bits 16 eps 30 aeps 100 one 0 0 zero 0 0 pre_data_bits 8 pre_data 0x0 post_data_bits 16 post_data 0x0 gap 299851 toggle_bit 0 begin codes aux1 0x023F aux2 0x023F aux3 0x023F aux4 0x023F leftmouse 0x02A9 rightmouse 0x02AA a 0x0278 b 0x0279 power 0x020C dvd 0x0238 tv 0x0239 help 0x02BE pc 0x023F resize 0x02D5 hand 0x02D0 ati 0x028E vol-up 0x0210 vol-down 0x0211 mute 0x020D chan-up 0x0220 chan-down 0x0221 mouse-up 0x013F mouse-down 0x013F mouse-left 0x013F mouse-right 0x013F 1 0x0201 2 0x0202 3 0x0203 4 0x0204 5 0x0205 6 0x0206 7 0x0207 8 0x0208 9 0x0209 0 0x0200 max_window 0x0254 check 0x0282 info 0x02F9 timer 0x0296 cursor-up 0x0258 cursor-left 0x025A cursor-right 0x025B cursor-down 0x0259 ok 0x025C c 0x027A d 0x027B play 0x022C e 0x027C f 0x027D rewind 0x0229 record 0x0237 stop 0x0231 pause 0x0230 ffwd 0x0228 end codes end remote geexbox-1.1/packages/lirc/config/lircd_avermedia0000644000175000017500000000012010641745505020117 0ustar benbenLIRC_DRIVER=default LIRC_DEVICE=/dev/lirc LIRC_MODULES="bttv card=13|lirc_gpio" geexbox-1.1/packages/lirc/config/lircd_avermedia.conf0000644000175000017500000001326610641745505021062 0ustar benben# # this config file was automatically generated # using lirc-0.5.5 on Thu May 25 18:00:24 2000 # # contributed by Michal Kochanowicz & Jesus Bravo Alvarez # # brand: AVerMedia # model: ? # supported devices: some TVCapture98 (ID 0x00021461) and # some TVPhone98 (ID 0x00011461) cards begin remote name TVCapture98 bits 6 flags SPACE_ENC|CONST_LENGTH eps 30 aeps 100 header 9078 4437 one 615 1631 zero 615 515 ptrail 620 # pre_data_bits 16 # pre_data 0x40BF repeat 9080 2189 gap 108056 repeat_bit 0 begin codes TV/FM 0x0000000000000023 CD 0x0000000000000022 # TELETEXT 0x000000000000C03F POWER 0x0000000000000027 1 0x0000000000000018 2 0x0000000000000010 3 0x0000000000000008 VIDEO 0x0000000000000000 4 0x0000000000000019 5 0x0000000000000011 6 0x0000000000000009 AUDIO 0x0000000000000001 7 0x000000000000001A 8 0x0000000000000012 9 0x000000000000000A FULLSCREEN 0x0000000000000002 0 0x000000000000001B DISPLAY 0x0000000000000013 COLOR 0x000000000000000B LOOP 0x0000000000000003 UNLABELED 0x000000000000001C LEFT 0x0000000000000014 RIGHT 0x000000000000000C PREVIEW 0x0000000000000004 AUTOSCAN 0x000000000000001D FREEZE 0x0000000000000015 CAPTURE 0x000000000000000D MUTE 0x0000000000000005 RED 0x000000000000001E VOL_DOWN 0x0000000000000016 VOL_UP 0x000000000000000E YELLOW 0x0000000000000006 GREEN 0x000000000000001F CH_DOWN 0x0000000000000017 CH_UP 0x000000000000000F BLUE 0x0000000000000007 end codes end remote # # this config file was automatically generated # using lirc-0.6.1 on Tue Apr 25 14:31:21 2000 # # contributed by Christoph Bartelmus # # brand: AVerMedia # model: ? (36 buttons) # supported devices: TVPhone98 card (ID 0x00031461) # TVCapture98 card (ID 0x00041461) # # This config file does work with both homebrew receivers and # original AVerMedia TV cards !!! # begin remote name TVPhone98 bits 16 flags SPACE_ENC|CONST_LENGTH eps 30 aeps 100 header 9078 4437 one 615 1631 zero 615 515 ptrail 620 repeat 9080 2189 pre_data_bits 16 pre_data 0x40BF gap 108056 repeat_bit 0 begin codes POWER 0x00000000000000FF TV/FM 0x000000000000807F CD 0x00000000000040BF TELETEXT 0x000000000000C03F VIDEO 0x00000000000020DF 1 0x000000000000A05F 2 0x000000000000609F 3 0x000000000000E01F AUDIO 0x00000000000010EF 4 0x000000000000906F 5 0x00000000000050AF 6 0x000000000000D02F FULLSCREEN 0x00000000000030CF 7 0x000000000000B04F 8 0x000000000000708F 9 0x000000000000F00F PREVIEW 0x00000000000008F7 0 0x0000000000008877 DISPLAY 0x00000000000048B7 LOOP 0x000000000000C837 MUTE 0x00000000000028D7 AUTOSCAN 0x000000000000A857 FREEZE 0x0000000000006897 CAPTURE 0x000000000000E817 PLAY 0x00000000000018E7 RECORD 0x0000000000009867 PAUSE 0x00000000000058A7 STOP 0x000000000000D827 YELLOW 0x00000000000038C7 RED 0x000000000000B847 VOL_DOWN 0x0000000000007887 VOL_UP 0x000000000000F807 end codes end remote begin remote name TVPhone98_ext bits 16 flags SPACE_ENC|CONST_LENGTH eps 30 aeps 100 header 9078 4437 one 615 1631 zero 615 515 ptrail 620 repeat 9080 2189 pre_data_bits 16 pre_data 0xC03F gap 108056 repeat_bit 0 begin codes BLUE 0x00000000000000FF GREEN 0x000000000000807F CH_DOWN 0x00000000000040BF CH_UP 0x000000000000C03F end codes end remote geexbox-1.1/packages/lirc/config/lircd_cinergy1400.conf0000644000175000017500000000417710641745505021073 0ustar benben# # Please make this file available to others # by sending it to # # this config file was automatically generated # using lirc-0.8.0(devinput) on Fri May 12 18:28:46 2006 # # contributed by Laurent Peltier # # brand: Terratec # model no. of remote control: # devices being controlled by this remote: Cinergy 1400 DVB-T # begin remote name Terratec bits 16 eps 30 aeps 100 one 0 0 zero 0 0 pre_data_bits 16 pre_data 0x8001 gap 135894 toggle_bit 0 begin codes KEY_POWER 0x0074 KEY_1 0x0002 KEY_2 0x0003 KEY_3 0x0004 KEY_4 0x0005 KEY_5 0x0006 KEY_6 0x0007 KEY_7 0x0008 KEY_8 0x0009 KEY_9 0x000A KEY_0 0x000B KEY_VIDEO 0x0189 KEY_REFRESH 0x00AD KEY_SELECT 0x0161 KEY_EPG 0x016D KEY_UP 0x0067 KEY_LEFT 0x0069 KEY_OK 0x0160 KEY_RIGHT 0x006A KEY_DOWN 0x006C KEY_TEXT 0x0184 KEY_INFO 0x0166 KEY_RED 0x018E KEY_GREEN 0x018F KEY_YELLOW 0x0190 KEY_BLUE 0x0191 KEY_CHANNELUP 0x0192 KEY_VOLUMEUP 0x0073 KEY_MUTE 0x0071 KEY_VOLUMEDOWN 0x0072 KEY_CHANNELDOWN 0x0193 KEY_PAUSE 0x0077 KEY_PLAY 0x00CF KEY_RECORD 0x00A7 KEY_PREVIOUS 0x019C KEY_STOP 0x0080 KEY_NEXT 0x0197 end codes end remote geexbox-1.1/packages/lirc/config/lircd_creative0000644000175000017500000000010010641745505017762 0ustar benbenLIRC_DRIVER=creative LIRC_DEVICE=/dev/ttyS0 LIRC_MODULES="8250" geexbox-1.1/packages/lirc/config/lircd_creative.conf0000644000175000017500000000360410641745505020722 0ustar benben# # this config file was automatically generated # using lirc-0.6.3 on Sat Jan 6 11:38:33 2001 # # contributed by Stephen White # # brand: Creative # model: PC-DVD Remote # supported devices: Creative-Infra-Receiver # begin remote name CREATIVE_INFRA_DVD bits 16 flags SPACE_ENC|CONST_LENGTH eps 30 aeps 100 header 9293 4302 one 771 1494 zero 771 358 ptrail 756 pre_data_bits 16 pre_data 0x8435 gap 108646 toggle_bit 0 begin codes play 0x00000000000005FA stop 0x00000000000016E9 pause 0x00000000000000FF eject 0x00000000000002FD last 0x00000000000017E8 rrev 0x00000000000004FB ffwd 0x00000000000006F9 next 0x00000000000001FE 1 0x00000000000008F7 2 0x00000000000009F6 3 0x0000000000000AF5 shift 0x00000000000014EB 4 0x0000000000000CF3 5 0x0000000000000DF2 6 0x0000000000000EF1 mouse 0x00000000000007F8 7 0x00000000000010EF 8 0x00000000000011EE 9 0x00000000000012ED vol+ 0x0000000000000FF0 start 0x00000000000003FC 0 0x00000000000015EA mute 0x0000000000000BF4 vol- 0x00000000000013EC end codes end remote geexbox-1.1/packages/lirc/config/lircd_cx880000644000175000017500000000010510641745505016757 0ustar benbenLIRC_DRIVER=dev/input LIRC_DEVICE=/dev/input/ir LIRC_MODULES="evdev" geexbox-1.1/packages/lirc/config/lircd_digimatrix0000644000175000017500000000014310641745505020330 0ustar benbenLIRC_DRIVER=default LIRC_DEVICE=/dev/lirc LIRC_MODULES="lirc_it87 digimatrix=1 it87_freq=36 irq=9" geexbox-1.1/packages/lirc/config/lircd_digimatrix.conf0000644000175000017500000000520510641745505021260 0ustar benben # brand: Asus Digimatrix # model no. of remote control: Model 1 # devices being controlled by this remote: Asus Digimatrix # Contributed by: Members of the http://outertrack.com/digimatrix/ Forum begin remote name digi bits 16 flags SPACE_ENC eps 30 aeps 100 header 8057 4071 one 479 1534 zero 479 531 ptrail 491 pre_data_bits 8 pre_data 0x35 gap 25647 toggle_bit 0 begin codes up 0x000000000000E817 down 0x00000000000018E7 enter 0x000000000000D02F left 0x0000000000009867 right 0x00000000000058A7 1 0x00000000000000FF 2 0x000000000000807F 3 0x00000000000040BF 4 0x000000000000C03F 5 0x00000000000020DF 6 0x000000000000A05F 7 0x000000000000609F 8 0x000000000000E01F 9 0x00000000000010EF 0 0x000000000000906F music 0x000000000000B04F dvd_vcd 0x000000000000F00F tv 0x00000000000008F7 os_start 0x00000000000030CF photo 0x00000000000048B7 home 0x00000000000044BB back 0x000000000000A857 ch+ 0x000000000000B847 stop 0x000000000000946B play 0x000000000000C43B vol+ 0x000000000000F807 ch- 0x0000000000007887 step- 0x000000000000E41B step+ 0x000000000000649B vol- 0x00000000000004FB pause 0x00000000000024DB pre 0x00000000000014EB next 0x000000000000A45B mute 0x000000000000847B rec 0x000000000000D42B subtitle 0x000000000000C837 menu 0x00000000000038C7 dvd_audio 0x00000000000050AF ui_size 0x0000000000008877 ui_on_off 0x00000000000028D7 end codes end remote geexbox-1.1/packages/lirc/config/lircd_digimatrixmk2.conf0000644000175000017500000000506510641745505021676 0ustar benbenbegin remote name digi_mk2 bits 8 flags SPACE_ENC eps 30 aeps 100 header 2666 1378 one 260 741 zero 260 279 ptrail 251 pre_data_bits 1 pre_data 0x0 post_data_bits 8 post_data 0x3 gap 10826 min_repeat 1 toggle_bit 0 begin codes power 0x0000000000000084 tv_dvr 0x0000000000000044 fm 0x00000000000000C4 os_start 0x0000000000000024 music 0x00000000000000A4 pictures 0x0000000000000064 video 0x00000000000000E4 dvd_menu 0x0000000000000014 up 0x000000000000004C down 0x00000000000000E0 left 0x0000000000000010 right 0x0000000000000040 back 0x00000000000000B4 ok 0x0000000000000088 back_fwd 0x0000000000000074 rew 0x0000000000000094 play_pause 0x0000000000000054 fwd 0x00000000000000D4 step- 0x0000000000000098 stop 0x0000000000000048 step+ 0x0000000000000090 vol+ 0x0000000000000058 vol- 0x00000000000000D8 home 0x00000000000000C8 ch+ 0x0000000000000050 ch- 0x00000000000000D0 mute 0x0000000000000038 rec 0x0000000000000028 pc 0x0000000000000030 1 0x00000000000000B8 2 0x00000000000000A8 3 0x00000000000000B0 4 0x0000000000000078 5 0x0000000000000068 6 0x0000000000000070 7 0x00000000000000F8 8 0x00000000000000E8 9 0x00000000000000F0 0 0x0000000000000018 ui_size 0x0000000000000004 repeat 0x0000000000000008 end codes end remote geexbox-1.1/packages/lirc/config/lircd_flytv-prime.conf0000644000175000017500000000306410641745505021376 0ustar benben# # Please make this file available to others # by sending it to # # this config file was automatically generated # using lirc-0.8.0(devinput) # # contributed by # # brand: Lifeview # model no. of remote control: # devices being controlled by this remote: FlyTV Prime/Platinium # begin remote name Lifeview bits 16 eps 30 aeps 100 one 0 0 zero 0 0 pre_data_bits 16 pre_data 0x8001 gap 182794 toggle_bit 0 begin codes 0 0x0052 1 0x004F 2 0x0050 3 0x0051 4 0x004B 5 0x004C 6 0x004D 7 0x0047 8 0x0048 9 0x0049 MODE 0x0175 VIDEO 0x0189 AUDIO 0x0188 POWER 0x0074 TUNER 0x0182 ZOOM 0x0174 LANGUAGE 0x0170 MUTE 0x0071 VOLUMEDOWN 0x0072 VOLUMEUP 0x0073 CHANNELDOWN 0x0193 CHANNELUP 0x0192 AGAIN 0x0081 ENTER 0x001C end codes end remote geexbox-1.1/packages/lirc/config/lircd_hauppauge0000644000175000017500000000011610641745505020146 0ustar benbenLIRC_DRIVER=default LIRC_DEVICE=/dev/lirc LIRC_MODULES="bttv card=2|lirc_i2c" geexbox-1.1/packages/lirc/config/lircd_hauppauge.conf0000644000175000017500000001002410641745505021071 0ustar benben# # this config file was automatically generated # using lirc-0.5.5pre8 on Sun Apr 18 11:43:45 1999 # # contributed by Jens Leuschner # # brand: Hauppauge # model: # supported devices: WinTV primo; WinTV pci; WinTV radio # # This config file will work with both homebrew receivers and # original Hauppauge TV cards !!! # begin remote name Hauppauge bits 13 flags SHIFT_ENC eps 30 aeps 100 one 950 830 zero 950 830 plead 960 gap 89584 repeat_bit 2 begin codes TV 0x000000000000100F RADIO 0x000000000000100C FULL_SCREEN 0x000000000000102E CH+ 0x0000000000001020 CH- 0x0000000000001021 VOL- 0x0000000000001011 VOL+ 0x0000000000001010 MUTE 0x000000000000100D SOURCE 0x0000000000001022 1 0x0000000000001001 2 0x0000000000001002 3 0x0000000000001003 4 0x0000000000001004 5 0x0000000000001005 6 0x0000000000001006 7 0x0000000000001007 8 0x0000000000001008 9 0x0000000000001009 0 0x0000000000001000 RESERVED 0x000000000000101E MINIMIZE 0x0000000000001026 end codes end remote # # this config file was automatically generated # using lirc-0.6.6(animax) on Tue Apr 15 19:50:27 2003 # # contributed by # # brand: Hauppauge # model no. of remote control: # devices being controlled by this remote: PVR 2/350 # begin remote name hauppauge_pvr bits 13 flags RC5|CONST_LENGTH eps 30 aeps 100 one 969 811 zero 969 811 plead 1097 gap 114605 toggle_bit 2 begin codes Power 0x00000000000017FD Go 0x00000000000017FB 1 0x00000000000017C1 2 0x00000000000017C2 3 0x00000000000017C3 4 0x00000000000017C4 5 0x00000000000017C5 6 0x00000000000017C6 7 0x00000000000017C7 8 0x00000000000017C8 9 0x00000000000017C9 Back/Exit 0x00000000000017DF 0 0x00000000000017C0 Menu 0x00000000000017CD Red 0x00000000000017CB Green 0x00000000000017EE Yellow 0x00000000000017F8 Blue 0x00000000000017E9 Ch+ 0x00000000000017E0 Ch- 0x00000000000017E1 Vol- 0x00000000000017D1 Vol+ 0x00000000000017D0 Ok 0x00000000000017E5 Mute 0x00000000000017CF Blank 0x00000000000017CC Full 0x00000000000017FC Rewind 0x00000000000017F2 Play 0x00000000000017F5 Forward 0x00000000000017F4 Record 0x00000000000017F7 Stop 0x00000000000017F6 Pause 0x00000000000017F0 Replay 0x00000000000017E4 Skip 0x00000000000017DE end codes end remote geexbox-1.1/packages/lirc/config/lircd_homemade0000644000175000017500000000010510641745505017744 0ustar benbenLIRC_DRIVER=default LIRC_DEVICE=/dev/lirc LIRC_MODULES="lirc_serial" geexbox-1.1/packages/lirc/config/lircd_imonknob0000644000175000017500000000010310641745505017777 0ustar benbenLIRC_DRIVER=default LIRC_DEVICE=/dev/lirc LIRC_MODULES="lirc_imon" geexbox-1.1/packages/lirc/config/lircd_imonknob.conf0000644000175000017500000000652310641745505020737 0ustar benben # Please make this file available to others # by sending it to # # this config file was automatically generated # using lirc-0.7.1pre2(imon) on Tue Mar 1 23:15:44 2005 # # contributed by Venky Raju # # brand: iMON-New # model no. of remote control: iMON-PAD # devices being controlled by this remote: # begin remote name IMON_KNOB bits 32 eps 30 aeps 100 one 0 0 zero 0 0 gap 119990 min_repeat 15 toggle_bit 0 begin codes AppExit 0x288195B7 Power 0x289115B7 Record 0x298115B7 Play 0x2A8115B7 Open 0x29B195B7 KnobVolUp 0x010000FF KnobVolDown 0x010000FF KnobMute 0x000008FF Rewind 0x2A8195B7 Pause 0x2A9115B7 FastForward 0x2B8115B7 PrevChapter 0x2B9115B7 Stop 0x2B9715B7 NextChapter 0x298195BF WindowsKey 0x2B8195B7 Backspace 0x28A115B7 MouseKeyboard 0x299115B7 SelectSpace 0x2A9315B7 MouseMenu 0x28B715B7 MouseRightClick 0x688481B7 Enter 0x28A195B7 MouseLeftClick 0x688301B7 CursorLeft 0x6ABA81B7 CursorUp 0x6902F9B7 CursorRight 0x68A281B7 CursorDown 0x6882A1B7 Esc 0x2BB715B7 Eject 0x299395B7 AppLauncher 0x29B715B7 MultiMon 0x2AB195B7 TaskSwitcher 0x2A9395B7 Mute 0x2B9595B7 VolUp 0x28A395B7 VolDown 0x28A595B7 ChUp 0x289395B7 ChDown 0x288795B7 Timer 0x2B8395B7 1 0x28B595B7 2 0x2BB195B7 3 0x28B195B7 4 0x2A8595B7 5 0x299595B7 6 0x2AA595B7 7 0x2B9395B7 8 0x2A8515B7 9 0x2AA115B7 ShiftTab 0x28B515B7 0 0x2BA595BF Tab 0x29A115B7 MyMovie 0x2B8515B7 MyMusic 0x299195B7 MyPhoto 0x2BA115B7 MyTV 0x28A515B7 Bookmark 0x288515B7 Thumbnail 0x2AB715BF AspectRatio 0x29A595B7 FullScreen 0x2AA395BF MyDVD 0x29A295B7 Menu 0x2BA385B7 Caption 0x298595B7 Language 0x2B8595B7 end codes end remote geexbox-1.1/packages/lirc/config/lircd_irman0000644000175000017500000000007510641745505017301 0ustar benbenLIRC_DRIVER=irman LIRC_DEVICE=/dev/ttyS0 LIRC_MODULES="8250" geexbox-1.1/packages/lirc/config/lircd_leadtek0000644000175000017500000000012010641745505017573 0ustar benbenLIRC_DRIVER=default LIRC_DEVICE=/dev/lirc LIRC_MODULES="bttv card=34|lirc_gpio" geexbox-1.1/packages/lirc/config/lircd_leadtek-pvr20000000644000175000017500000000011310641745505020704 0ustar benbenLIRC_DRIVER=default LIRC_DEVICE=/dev/lirc LIRC_MODULES="lirc_dev|lirc_i2c" geexbox-1.1/packages/lirc/config/lircd_leadtek-pvr2000.conf0000644000175000017500000000604310641745505021640 0ustar benben# # this config file was written on Mon Dec 13 23:51:16 MET 2004 # by Thomas Reitmayr (treitmayr@yahoo.com) # # brand: Leadtek # model: Y0400052 (bundeled with Winfast PVR2000 TV-card) # # Only CH_UP, CH_DOWN, VOL_UP and VOL_DOWN will repeat. This seems to be a # limitation of the remote control. # begin remote name PVR2000 bits 8 flags SHIFT_ENC gap 120000 begin codes POWER 0x0000000000000070 TV 0x0000000000000026 FM 0x0000000000000027 DVD 0x0000000000000028 RED 0x000000000000003B GREEN 0x000000000000003C YELLOW 0x000000000000003D BLUE 0x000000000000003E TELETEXT 0x000000000000006F SLEEP 0x0000000000000030 MUTE 0x0000000000000064 BOSS_KEY 0x0000000000000039 CH_UP 0x000000000000007C CH_DOWN 0x0000000000000060 VOL_DOWN 0x0000000000000078 VOL_UP 0x0000000000000074 ENTER 0x0000000000000063 CC 0x0000000000000020 FULLSCREEN 0x0000000000000073 MENU 0x000000000000003F SCAN 0x0000000000000021 REPLAY 0x0000000000000032 PLAY 0x0000000000000033 SKIP 0x0000000000000034 OSD 0x0000000000000022 BACK 0x0000000000000024 STOP 0x0000000000000036 FORWARD 0x0000000000000025 LANGUAGE 0x0000000000000023 1 0x0000000000000075 2 0x0000000000000076 3 0x0000000000000077 4 0x0000000000000079 5 0x000000000000007A 6 0x000000000000007B 7 0x000000000000007D 8 0x000000000000007E 9 0x000000000000007F 0 0x0000000000000062 . 0x0000000000000031 RECALL 0x0000000000000061 VIDEO 0x000000000000006E AUDIO 0x000000000000006B DISPLAY 0x0000000000000066 SNAPSHOT 0x0000000000000038 PIP 0x000000000000003A RECSTOP 0x0000000000000036 REC 0x0000000000000037 TIMESHIFT 0x0000000000000035 end codes end remote geexbox-1.1/packages/lirc/config/lircd_leadtek.conf0000644000175000017500000000627710641745505020542 0ustar benben# # this config file was automatically generated # using WinLIRC 0.6.4 (LIRC 0.6.1pre3) on Sun Nov 03 14:25:14 2002 # # modified by CB # # contributed by Erik Christiansson, aka Sci # www.alphafish.com # erik@alphafish.com # # brand: Leadtek # model: RM-0010 (bundeled with TV2000 TV-card) # # modifications based on the config files from # Juan Toledo and # Markus Lischka begin remote name RM-0010 bits 16 flags SPACE_ENC|CONST_LENGTH eps 40 aeps 100 header 9000 4500 one 563 1687 zero 563 562 ptrail 563 repeat 9000 2250 pre_data_bits 16 pre_data 0xC03F gap 108000 toggle_bit 0 frequency 38000 duty_cycle 33 begin codes POWER 0x00000000000000FF TV/FM 0x00000000000040BF SCAN 0x000000000000A857 DISPLAY 0x0000000000006897 1 0x000000000000A05F 2 0x000000000000609F 3 0x000000000000E01F 4 0x000000000000906F 5 0x00000000000050AF 6 0x000000000000D02F 7 0x000000000000B04F 8 0x000000000000708F 9 0x000000000000F00F 0 0x00000000000048B7 RECALL 0x0000000000008877 ENTER 0x000000000000C837 CC 0x000000000000F807 MTS 0x000000000000D827 FINE_DOWN 0x0000000000009867 FINE_UP 0x00000000000018E7 VIDEO 0x0000000000007887 MUTE 0x00000000000028D7 CH_UP 0x00000000000030CF CH_DOWN 0x00000000000008F7 VOL_DOWN 0x00000000000010EF VOL_UP 0x00000000000020DF FULLSCREEN 0x000000000000C03F # The following are only supported by the remote control bundled with # the WinFast TV 2000 XP Deluxe card. SLEEP 0x00000000000004FB BOSS_KEY 0x000000000000946B RED 0x000000000000D42B GREEN 0x00000000000034CB YELLOW 0x000000000000B44B BLUE 0x000000000000748B PIP 0x00000000000054AB . 0x000000000000847B BACK 0x00000000000044BB PLAY 0x000000000000C43B NEXT 0x00000000000024DB TIMESHIFT 0x000000000000A45B STOP 0x000000000000649B REC 0x000000000000E41B SNAPSHOT 0x00000000000014EB end codes end remote geexbox-1.1/packages/lirc/config/lircd_logitech0000644000175000017500000000010010641745505017756 0ustar benbenLIRC_DRIVER=logitech LIRC_DEVICE=/dev/ttyS0 LIRC_MODULES="8250" geexbox-1.1/packages/lirc/config/lircd_logitech.conf0000644000175000017500000001064510641745505020721 0ustar benben# # # contributed by Isaac Lauer # # brand: Logitech # model: Value Infrared Remote Control # supported devices: # begin remote name Logitech bits 8 flags SPACE_ENC|CONST_LENGTH eps 30 aeps 100 one 0 833 zero 833 0 pre_data_bits 8 pre_data 0xA0 gap 29858 repeat_bit 0 begin codes POWER 0x0000000000000002 1 0x0000000000000015 2 0x0000000000000016 3 0x0000000000000014 4 0x0000000000000018 5 0x0000000000000019 6 0x0000000000000017 7 0x000000000000001C 8 0x000000000000001B 9 0x000000000000001A 0 0x000000000000001D PAUSE 0x0000000000000013 EJECT 0x0000000000000011 SEEK- 0x000000000000000E PLAY 0x000000000000000F SEEK+ 0x0000000000000010 STOP 0x0000000000000012 HELP 0x0000000000000001 CH- 0x000000000000000D CH+ 0x000000000000000A VOL- 0x000000000000000C VOL+ 0x0000000000000009 * 0x000000000000001F # 0x000000000000001E MUTE 0x000000000000000B BUTTONL_DOWN 0x0000000000000039 BUTTONR_DOWN 0x000000000000003A BUTTON_UP 0x0000000000000038 ENTER 0x0000000000000008 CLOSE 0x0000000000000023 TV 0x0000000000000004 GDE 0x0000000000000005 CD 0x0000000000000006 MSG 0x0000000000000007 PHONE 0x0000000000000003 MOUSE_N 0x0000000000000040 MOUSE_NNE 0x0000000000000041 MOUSE_NE 0x0000000000000042 MOUSE_NEE 0x0000000000000043 MOUSE_E 0x0000000000000044 MOUSE_SEE 0x0000000000000045 MOUSE_SE 0x0000000000000046 MOUSE_SSE 0x0000000000000047 MOUSE_S 0x0000000000000048 MOUSE_SSW 0x0000000000000049 MOUSE_SW 0x000000000000004A MOUSE_SWW 0x000000000000004B MOUSE_W 0x000000000000004C MOUSE_NWW 0x000000000000004D MOUSE_NW 0x000000000000004E MOUSE_NNW 0x000000000000004F MOUSE_N 0x0000000000000050 MOUSE_NNE 0x0000000000000051 MOUSE_NE 0x0000000000000052 MOUSE_NEE 0x0000000000000053 MOUSE_E 0x0000000000000054 MOUSE_SEE 0x0000000000000055 MOUSE_SE 0x0000000000000056 MOUSE_SSE 0x0000000000000057 MOUSE_S 0x0000000000000058 MOUSE_SSW 0x0000000000000059 MOUSE_SW 0x000000000000005A MOUSE_SWW 0x000000000000005B MOUSE_W 0x000000000000005C MOUSE_NWW 0x000000000000005D MOUSE_NW 0x000000000000005E MOUSE_NNW 0x000000000000005F MOUSE_N 0x0000000000000060 MOUSE_NNE 0x0000000000000061 MOUSE_NE 0x0000000000000062 MOUSE_NEE 0x0000000000000063 MOUSE_E 0x0000000000000064 MOUSE_SEE 0x0000000000000065 MOUSE_SE 0x0000000000000066 MOUSE_SSE 0x0000000000000067 MOUSE_S 0x0000000000000068 MOUSE_SSW 0x0000000000000069 MOUSE_SW 0x000000000000006A MOUSE_SWW 0x000000000000006B MOUSE_W 0x000000000000006C MOUSE_NWW 0x000000000000006D MOUSE_NW 0x000000000000006E MOUSE_NWW 0x000000000000006F end codes end remote geexbox-1.1/packages/lirc/config/lircd_mceusb0000644000175000017500000000010510641745505017443 0ustar benbenLIRC_DRIVER=default LIRC_DEVICE=/dev/lirc LIRC_MODULES="lirc_mceusb" geexbox-1.1/packages/lirc/config/lircd_mceusb.conf0000644000175000017500000000453110641745505020376 0ustar benben# # RC-6 config file # # source: http://home.hccnet.nl/m.majoor/projects__remote_control.htm # http://home.hccnet.nl/m.majoor/pronto.pdf # # used by: Philips # ######### # # Philips Media Center Edition remote control # For use with the USB MCE ir receiver # # Dan Conti dconti|acm.wwu.edu # # Updated with codes for MCE 2005 Remote additional buttons # *, #, Teletext, Red, Green, Yellow & Blue Buttons # Note: TV power button transmits no code until programmed. # Updated 12th September 2005 # Graham Auld - mce|graham.auld.me.uk # # Radio, Print, RecTV are only available on the HP Media Center remote control # begin remote name mceusb bits 16 flags RC6|CONST_LENGTH eps 30 aeps 100 header 2667 889 one 444 444 zero 444 444 pre_data_bits 21 pre_data 0x37FF0 gap 105000 toggle_bit 22 rc6_mask 0x100000000 begin codes Blue 0x00007ba1 Yellow 0x00007ba2 Green 0x00007ba3 Red 0x00007ba4 Teletext 0x00007ba5 # starts at af Radio 0x00007baf Print 0x00007bb1 Videos 0x00007bb5 Pictures 0x00007bb6 RecTV 0x00007bb7 Music 0x00007bb8 TV 0x00007bb9 # no ba - d8 Guide 0x00007bd9 LiveTV 0x00007bda DVD 0x00007bdb Back 0x00007bdc OK 0x00007bdd Right 0x00007bde Left 0x00007bdf Down 0x00007be0 Up 0x00007be1 Star 0x00007be2 Hash 0x00007be3 Replay 0x00007be4 Skip 0x00007be5 Stop 0x00007be6 Pause 0x00007be7 Record 0x00007be8 Play 0x00007be9 Rewind 0x00007bea Forward 0x00007beb ChanDown 0x00007bec ChanUp 0x00007bed VolDown 0x00007bee VolUp 0x00007bef More 0x00007bf0 Mute 0x00007bf1 Home 0x00007bf2 Power 0x00007bf3 Enter 0x00007bf4 Clear 0x00007bf5 Nine 0x00007bf6 Eight 0x00007bf7 Seven 0x00007bf8 Six 0x00007bf9 Five 0x00007bfa Four 0x00007bfb Three 0x00007bfc Two 0x00007bfd One 0x00007bfe Zero 0x00007bff end codes end remote geexbox-1.1/packages/lirc/config/lircd_mceusb20000644000175000017500000000010610641745505017526 0ustar benbenLIRC_DRIVER=default LIRC_DEVICE=/dev/lirc LIRC_MODULES="lirc_mceusb2" geexbox-1.1/packages/lirc/config/lircd_nova-s-plus.conf0000644000175000017500000000472710641745505021313 0ustar benben# # Please make this file available to others # by sending it to # # this config file was automatically generated # using lirc-0.8.0(devinput) on Mon Mai 8 19:29:37 2006 # # contributed by Jalal Achkoune # # brand: Hauppauge # model no. of remote control: # devices being controlled by this remote: WinTV NOVA-S Plus # begin remote name Hauppauge bits 16 eps 30 aeps 100 one 0 0 zero 0 0 pre_data_bits 16 pre_data 0x8001 gap 132784 toggle_bit 0 begin codes KEY_GO 0x0161 KEY_POWER 0x0074 KEY_TV 0x0179 KEY_VIDEO 0x0189 KEY_AUDIO 0x0188 KEY_PICURE 0x016F KEY_GUIDE 0x016D KEY_RADIO 0x0181 KEY_UP 0x0067 KEY_LEFT 0x0069 KEY_RIGHT 0x006A KEY_DOWN 0x006C KEY_OK 0x001C KEY_EXIT 0x00AE KEY_MENU 0x008B KEY_VOLUMEUP 0x0073 KEY_VOLUMEDOWN 0x0072 KEY_CHANNELUP 0x0192 KEY_CHANNELDOWN 0x0193 KEY_PREV 0x019C KEY_MUTE 0x0071 KEY_RECORD 0x00A7 KEY_STOP 0x0080 KEY_REWIND 0x00A8 KEY_PLAY 0x00CF KEY_FORWARD 0x00D0 KEY_PREVIOUS 0x00A5 KEY_PAUSE 0x0077 KEY_NEXT 0x00A3 KEY_1 0x004F KEY_2 0x0050 KEY_3 0x0051 KEY_4 0x004B KEY_5 0x004C KEY_6 0x004D KEY_7 0x0047 KEY_8 0x0048 KEY_9 0x0049 KEY_0 0x0052 KEY_TEXT 0x0184 KEY_SUB 0x0172 KEY_RED 0x018E KEY_GREEN 0x018F KEY_YELLOW 0x0190 KEY_BLUE 0x0191 end codes end remote geexbox-1.1/packages/lirc/config/lircd_packard_bell.conf0000644000175000017500000000705010641745505021522 0ustar benben# Config file for Packard Bell Remotes (with repeat codes!) # created by Samuel Wood (sjw@umr.edu) # # brand: Packard Bell Remote # model: El Cheapo Packard Bell Remote # # This is a config file for the cheap excess Packard Bell remotes # you sometimes can buy from online auctions like www.onsale.com. # # The receiver that comes with it hooks into the serial port and works # fine with lirc 0.5.4. # # The receiver that comes with the remote is near garbage. If # you don't point almost directly at it, it will not detect. But # it's simpler than building your own. :-) # # Repeat works fine for me. You just have to modify or add the # "repeat=" lines in your .lircrc. # # irrecord was used to generate the file, then I modified and # added repeat codes. # # The button names used are identical to what was printed on the # remote, except for the number pads (using actual numbers like # "1" and so forth did not seem to work. Similarly, '*' is Star # and '#' is Hash. LMB and RMB refer to the two mousepad buttons # on the left and right respectively. # # I still need to modify the gap setting. Right now, if you don't # hold the button down long enough, it may not register, but if # you hold it too long, it will detect a repeat or two. Feel free # to modify this to work better. If you get it to work better, send # me a copy. :-) begin remote name PackBell bits 15 flags SPACE_ENC|CONST_LENGTH eps 30 aeps 100 header 9065 4500 one 597 532 zero 597 1643 ptrail 597 pre_data_bits 16 pre_data 0xF708 post_data_bits 1 post_data 0x0 gap 107000 repeat_bit 0 repeat 9050 2250 begin codes Help 0x0000000000006F90 Phone 0x0000000000004FB0 Message 0x0000000000006E91 SRS 0x0000000000004EB1 CD 0x0000000000002FD0 Aux1 0x0000000000000FF0 Aux2 0x0000000000002ED1 Aux3 0x0000000000000EF1 LMB 0x00000000000023DC RMB 0x000000000000639C Up 0x00000000000037C8 Down 0x00000000000057A8 Left 0x0000000000007788 Right 0x00000000000017E8 Menu 0x0000000000007B84 Mute 0x0000000000003BC4 Enter 0x00000000000047B8 CHUp 0x00000000000027D8 CHDown 0x0000000000006798 VolUp 0x0000000000005BA4 VolDown 0x0000000000001BE4 Display 0x00000000000007F8 One 0x0000000000005EA1 Two 0x0000000000001EE1 Three 0x0000000000000BF4 Four 0x0000000000007E81 Five 0x0000000000003EC1 Six 0x0000000000004BB4 Seven 0x0000000000005FA0 Eight 0x0000000000001FE0 Nine 0x0000000000002BD4 Zero 0x0000000000003FC0 Star 0x0000000000007F80 Hash 0x0000000000006B94 end codes end remote geexbox-1.1/packages/lirc/config/lircd_pctv0000644000175000017500000000007610641745505017150 0ustar benbenLIRC_DRIVER=pinsys LIRC_DEVICE=/dev/ttyS0 LIRC_MODULES="8250" geexbox-1.1/packages/lirc/config/lircd_pctv.conf0000644000175000017500000000641510641745505020077 0ustar benben# # contributed by Bart Alewijnse # # brand: Pinnacle Systems # model: PCTV Remote (Perhaps other ones as well) # supported devices: there's only one I know of. (serial) # # Mail me if your remote is only partly supported, or if it has different # buttons than listed below. # begin remote name PinnacleSysPCTVRemote bits 8 eps 30 aeps 100 one 0 0 zero 0 0 gap 180000 begin codes Mute 0x000000000000003C Power 0x000000000000002F Chan+Play 0x000000000000003F Chan-Stop 0x000000000000003E Vol+FF 0x000000000000003B Vol-Rew 0x000000000000003D 1 0x0000000000000031 2 0x0000000000000032 3 0x0000000000000033 4 0x0000000000000034 5 0x0000000000000035 6 0x0000000000000036 7 0x0000000000000037 8 0x0000000000000038 9 0x0000000000000039 Fullscreen 0x000000000000002D 0/AV 0x000000000000003A Info 0x000000000000002B Preview 0x000000000000002E Record 0x0000000000000027 Chan_Last 0x0000000000000025 F_TV 0x0000000000000026 F_TELETEXT 0x0000000000000029 F_RADIO 0x000000000000002A # # here are some extra buttons a new version of the remote seems to have # # contributed by Robbert Monna # # brand: Pinnacle Systems # model: PCTV Remote (newest version?) # supported devices: dongle on serial port (from TV-Card) # L 0x000000000000001F Zoom 0x000000000000001E vol+ 0x000000000000001B vol- 0x000000000000000F channel+ 0x0000000000000017 channel- 0x000000000000001C middle 0x000000000000001A Menu 0x000000000000001D next 0x0000000000000019 undo 0x0000000000000016 pause 0x0000000000000015 redo 0x0000000000000013 Rewind 0x000000000000000E Play 0x000000000000000D Stop 0x000000000000000B FForward 0x0000000000000007 EPG 0x0000000000000018 # here are some more buttons that seem to be mapped differently from # the ones above # contributed by InterCeptor ceptor_7@freemail.hu # # brand: Pinnacle Systems PCTV Pro Remote # model no. of remote control: (I can't find any numbers on it) # supported devices: serial # 9 0x0000000000000082 Zoom 0x00000000000000B2 middle 0x0000000000000014 end codes end remote geexbox-1.1/packages/lirc/config/lircd_realmagic0000644000175000017500000000010110641745505020105 0ustar benbenLIRC_DRIVER=pixelview LIRC_DEVICE=/dev/ttyS0 LIRC_MODULES="8250" geexbox-1.1/packages/lirc/config/lircd_realmagic.conf0000644000175000017500000000615610641745505021051 0ustar benben# # this config file was automatically generated # using lirc-0.6.3 on Fri Nov 10 21:47:32 2000 # # contributed by Stefan Neuwirth & Andreas Lange # # brand: Sigma Designs # model: REALmagic remote control # www.realmagic.com/support.htm#remote # supported devices: # "For Hollywood Plus Version 1.4 or above Driver only" # remote control for the Sigma Designs REALmagic Hollywood Plus DVD card # receiver is connected to the serial port - it does not require the card # # The first byte always is 131. The second and third byte are equal. (CB) # begin remote name REALmagic bits 20 eps 30 aeps 100 one 0 0 zero 0 0 pre_data_bits 10 pre_data 0x183 gap 189974 toggle_bit 0 begin codes 1 0x0000000000062D8B 2 0x0000000000012C4B 3 0x000000000001AC6B 4 0x0000000000072DCB 5 0x000000000000AC2B 6 0x0000000000052D4B # Nicolas Vignal reported that this code is sent for his remote # version (1.5). It should be no problem to just have two entries for # "6" unless you want to send codes what won't work for this receiver # anyway. 6 0x0000000000041505 7 0x0000000000058561 8 0x0000000000044511 9 0x000000000004AD2B 0 0x000000000004C531 VOL+ 0x0000000000022C8B VOL- 0x0000000000032CCB MUTE 0x000000000006ADAB L-R 0x0000000000052549 VGA 0x0000000000054551 ENTER 0x0000000000042509 QUIT 0x0000000000058D63 PRG 0x0000000000038CE3 UP 0x0000000000078DE3 DOWN 0x0000000000064D93 LEFT 0x0000000000044D13 RIGHT 0x000000000003ECFB SELECT 0x0000000000024C93 MENU 0x0000000000014C53 TITLE 0x0000000000054D53 OSD 0x0000000000034CD3 LANG 0x0000000000074DD3 ANGLE 0x000000000000CC33 SUB 0x000000000004CD33 PAUSE 0x000000000002CCB3 STOP 0x000000000006CDB3 PLAY 0x000000000001CC73 EJECT 0x000000000005CD73 REV 0x000000000003CCF3 FF 0x000000000007CDF3 PREV 0x0000000000002C0B NEXT 0x0000000000042D0B end codes end remote geexbox-1.1/packages/lirc/config/lircd_streamzap0000644000175000017500000000011010641745505020167 0ustar benbenLIRC_DRIVER=default LIRC_DEVICE=/dev/lirc LIRC_MODULES="lirc_streamzap" geexbox-1.1/packages/lirc/config/lircd_streamzap.conf0000644000175000017500000000374610641745505021135 0ustar benben# # this config file was automatically generated # using lirc-0.7.1-CVS(serial) on Fri Feb 4 23:20:56 2005 # # contributed by Christoph Bartelmus # # brand: Streamzap # model no. of remote control: PC Remote # devices being controlled by this remote: USB receiver # begin remote name Streamzap_PC_Remote bits 6 flags RC5|CONST_LENGTH eps 30 aeps 100 one 907 804 zero 907 804 plead 949 pre_data_bits 8 pre_data 0xA3 gap 108344 toggle_bit 2 begin codes 0 0x00 1 0x01 2 0x02 3 0x03 4 0x04 5 0x05 6 0x06 7 0x07 8 0x08 9 0x09 POWER 0x0A MUTE 0x0B CH_UP 0x0C VOL_UP 0x0D CH_DOWN 0x0E VOL_DOWN 0x0F UP 0x10 LEFT 0x11 OK 0x12 RIGHT 0x13 DOWN 0x14 MENU 0x15 EXIT 0x16 PLAY 0x17 PAUSE 0x18 STOP 0x19 |<< 0x1A >>| 0x1B RECORD 0x1C << 0x1D >> 0x1E RED 0x20 GREEN 0x21 YELLOW 0x22 BLUE 0x23 end codes end remote geexbox-1.1/packages/lirc/config/lircd_tosh-vt76f.conf0000644000175000017500000000536410641745505021054 0ustar benben# # this config file was automatically generated # using WinLIRC 0.6.5 (LIRC 0.6.1pre3) on Tue Jan 31 23:13:02 2006 # # contributed by Lionel D. # english translation on Thu Feb 02 20:14:00 2006 # # brand: TOSHIBA # model: VT-76F # supported devices: # begin remote name VT-76F bits 16 flags SPACE_ENC eps 25 aeps 100 header 9066 4472 one 603 520 zero 603 1642 ptrail 603 repeat 9068 2236 pre_data_bits 16 pre_data 0xDD22 gap 39980 toggle_bit 0 begin codes POWER 0x000000000000B748 A.SELECT 0x00000000000035CA TV/VCR 0x0000000000007788 1 0x0000000000007F80 2 0x000000000000BF40 3 0x0000000000003FC0 4 0x000000000000DF20 5 0x0000000000005FA0 6 0x0000000000009F60 7 0x0000000000001FE0 8 0x000000000000EF10 9 0x0000000000006F90 0 0x000000000000AF50 CH- 0x00000000000007F8 CH+ 0x00000000000027D8 SHIFT<- 0x000000000000758A SHIFT-> 0x0000000000004DB2 DISPLAY 0x0000000000003EC1 OSP 0x000000000000C53A IMMEDIATE_REC 0x00000000000025DA INPUT 0x00000000000005FA SP/LP 0x00000000000045BA RECORD 0x000000000000B748 FAST_REW 0x0000000000006798 PLAY 0x00000000000057A8 FAST_FORW 0x00000000000037C8 PAUSE 0x000000000000F708 STOP 0x000000000000D728 SLOW 0x0000000000004FB0 INDEX 0x0000000000009D62 TIME_LEFT/CLOCK 0x0000000000009768 ALIGN_DOWN 0x0000000000000FF0 ALIGN_UP 0x0000000000008F70 TIME_SEARCH 0x0000000000005EA1 ZERO_BACK 0x0000000000001EE1 RST_COUNTER 0x0000000000009669 DT 0x000000000000D42B A.DUB 0x000000000000C738 CLEARNESS_IMG+ 0x000000000000906F CLEARNESS_IMG- 0x00000000000010EF end codes end remote geexbox-1.1/packages/lirc/config/lircd_twinhan.conf0000644000175000017500000000376310641745505020576 0ustar benben# this config file was automatically generated # using lirc-0.7.1pre1(serial) on Mon Feb 7 21:00:46 2005 # # contributed by Th. Peters # # brand: Twinhan # model: black/silver, 32 Keys, bundled with DTV digital satellite receiver # devices being controlled by this remote: Twinhan DTV Sat (DVB-S) PCI-Card begin remote name TwinhanDTV bits 16 flags SPACE_ENC|CONST_LENGTH eps 30 aeps 100 header 9073 4400 one 654 1590 zero 654 469 ptrail 654 repeat 9076 2150 pre_data_bits 16 pre_data 0xFF gap 107783 toggle_bit 0 begin codes FULLSCREEN 0xB24D POWER 0x6897 1 0xC03F 2 0x807F 3 0x609F 4 0x906F 5 0xB847 6 0xF807 7 0xB04F 8 0x9867 9 0xD827 0 0xA857 RECORD 0x8877 FAVORITE 0xE817 REWIND 0x02FD FORWARD 0x48B7 CH_UP 0xA05F CH_DOWN 0x40BF PLAY 0x28D7 VOL_DOWN 0x50AF VOL_UP 0x7887 RECALL 0x708F STOP 0x58A7 TIMESHIFT 0x32CD MUTE 0x08F7 CANCEL 0x30CF CAPTURE 0x2AD5 PREVIEW 0x12ED EPG 0x38C7 RECORDLIST 0x20DF TAB 0x00FF TELETEXT 0xF00F end codes end remote geexbox-1.1/packages/lirc/config/lircd_ultrax0000644000175000017500000000012110641745505017502 0ustar benbenLIRC_DRIVER=dev/input LIRC_DEVICE=/dev/input/logitechremote LIRC_MODULES="evdev" geexbox-1.1/packages/lirc/config/lircd_ultrax.conf0000644000175000017500000000373010641745505020437 0ustar benben # Please make this file available to others # by sending it to # # this config file was automatically generated # using lirc-0.8.2pre2(dev/input) on Sat May 19 19:29:07 2007 # # contributed by Guillaume LECERF # # brand: Logitech UltraX Media Remote # model no. of remote control: R-RC6 # devices being controlled by this remote: # begin remote name R-RC6 bits 16 eps 30 aeps 100 one 0 0 zero 0 0 pre_data_bits 16 pre_data 0x8001 gap 133314 toggle_bit_mask 0x800100A4 begin codes KEY_RED 0x018E KEY_HOME 0x0066 KEY_CLOSE 0x00CE KEY_TV 0x0179 KEY_DVD 0x0185 KEY_RADIO 0x0181 KEY_MEDIA 0x00E2 KEY_VIDEO 0x0189 KEY_MP3 0x0187 KEY_VOLUMEDOWN 0x0072 KEY_VOLUMEUP 0x0073 KEY_MIN_INTERESTING 0x0071 KEY_RECORD 0x00A7 KEY_STOPCD 0x00A6 KEY_PREVIOUSSONG 0x00A5 KEY_NEXTSONG 0x00A3 KEY_PLAYPAUSE 0x00A4 KEY_REWIND 0x00A8 KEY_FASTFORWARD 0x00D0 KEY_BACK 0x009E KEY_CHANNELUP 0x0192 KEY_MENU 0x008B KEY_CHANNELDOWN 0x0193 KEY_ANGLE 0x0173 KEY_AUDIO 0x0188 KEY_LAST 0x0195 KEY_LANGUAGE 0x0170 KEY_AGAIN 0x0081 KEY_PROPS 0x0082 KEY_SUBTITLE 0x0172 KEY_SHUFFLE 0x019A KEY_TEXT 0x0184 end codes end remote geexbox-1.1/packages/lirc/config/lircrc_D-100000644000175000017500000000546210641745505016762 0ustar benbenbegin prog = mplayer button = POWER config = quit 166 end begin prog = mplayer button = EJECT config = run /usr/bin/eject end begin prog = mplayer button = ANGLE config = run /usr/bin/tvswitch end begin prog = mplayer button = INDEX config = set_menu jump_to end begin prog = mplayer button = A-B config = osd end begin prog = mplayer button = MUTE config = mute end begin prog = mplayer button = 1 repeat = 1 config = seek -10 end begin prog = mplayer button = 2 repeat = 1 config = seek 10 end begin prog = mplayer button = 4 repeat = 3 config = seek -60 end begin prog = mplayer button = 5 repeat = 3 config = seek 60 end begin prog = mplayer button = 7 repeat = 1 config = sub_delay -0.2 end begin prog = mplayer button = 8 repeat = 1 config = sub_delay +0.2 end begin prog = mplayer button = 3 repeat = 1 config = brightness 1 end begin prog = mplayer button = 6 repeat = 1 config = brightness -1 end begin prog = mplayer button = 0 repeat = 1 config = sub_visibility end begin prog = mplayer button = MENU config = set_menu main end begin prog = mplayer button = TITLE config = set_menu open_file end begin prog = mplayer button = SUBTITLE config = set_menu sub_sel end begin prog = mplayer button = AUDIO config = set_menu audio_sel end begin prog = mplayer button = PAUSE config = pause end begin prog = mplayer button = ACTIVE_MENU repeat = 0 config = menu toggle end begin prog = mplayer button = EXIT config = menu cancel end begin prog = mplayer button = LEFT_RW repeat = 2 config = volume -1 end begin prog = mplayer button = RIGHT_FW repeat = 2 config = volume 1 end begin prog = mplayer button = UP_FW repeat = 3 config = menu up end begin prog = mplayer button = DOWN_RW repeat = 3 config = menu down end begin prog = mplayer button = OK_PLAY config = menu ok end begin prog = mplayer button = STOP config = quit end begin prog = mplayer button = SKIP_BACK repeat = 2 config = pt_step -1 end begin prog = mplayer button = SKIP_FORWARD repeat = 2 config = pt_step 1 end begin prog = fbi button = EXIT config = q end begin prog = fbi button = RIGHT_FW config = n end begin prog = fbi button = LEFT_RW config = b end begin prog = fbi button = UP_FW config = + end begin prog = fbi button = DOWN_RW config = - end begin prog = fbi button = PAUSE config = p end begin prog = fbi button = ANGLE config = h end begin prog = fbi button = INDEX config = i end begin prog = fbi button = A-B config = v end begin prog = fbi button = MUTE config = a end geexbox-1.1/packages/lirc/config/lircrc_LG0000644000175000017500000000313510641745505016656 0ustar benbenbegin prog = mplayer button = red repeat = 0 config = seek -60 end begin prog = mplayer button = green repeat = 0 config = seek 60 end begin prog = mplayer button = ok repeat = 0 config = PAUSE end begin prog = mplayer button = mute repeat = 0 config = quit end begin prog = mplayer button = blue repeat = 1 config = VOLUME +1 end begin prog = mplayer button = yellow repeat = 1 config = VOLUME -1 end begin prog = mplayer button = vol+ repeat = 0 config = menu ok end begin prog = mplayer button = vol- repeat = 0 config = menu cancel end begin prog = mplayer button = pr+ repeat = 0 config = menu up end begin prog = mplayer button = pr- repeat = 0 config = menu down end begin prog = mplayer button = sleep repeat = 1 config = menu toggle end begin prog = mplayer button = time repeat = 1 config = osd end begin prog = mplayer button = tv config = run /usr/bin/tvswitch end begin prog = irpty button = psm config = p: end begin prog = irpty button = picture config = l: end begin prog = fbi button = ok config = p end begin prog = fbi button = vol+ config = n end begin prog = fbi button = vol- config = b end begin prog = fbi button = mute config = q end begin prog = fbi button = sleep config = v end begin prog = fbi button = pr+ config = + end begin prog = fbi button = pr- config = - end begin prog = fbi button = tv config = a end geexbox-1.1/packages/lirc/config/lircrc_Medion-X100000644000175000017500000001064610641745505020142 0ustar benbenbegin prog = mplayer button = channel_list config = set_menu tv_chan end begin prog = mplayer button = vcr config = set_menu record end begin prog = mplayer button = radio config = set_menu radio_chan end begin prog = mplayer button = setup config = run /usr/bin/tvswitch end begin prog = mplayer button = tv config = set_menu tv_settings end begin prog = mplayer button = pause config = pause end begin prog = mplayer button = rewind repeat = 3 config = seek -10 end begin prog = mplayer button = fast_forward repeat = 3 config = seek 10 end begin prog = mplayer button = previous repeat = 3 config = seek -120 end begin prog = mplayer button = next repeat = 3 config = seek 120 end begin prog = mplayer button = vol-down repeat = 2 config = volume -1 end begin prog = mplayer button = vol-up repeat = 2 config = volume 1 end begin prog = mplayer button = chan-down repeat = 2 config = tv_step_channel -1 end begin prog = mplayer button = chan-up repeat = 2 config = tv_step_channel +1 end begin prog = mplayer button = video_desktop config = osd end begin prog = mplayer button = power config = quit 166 end begin prog = mplayer button = dvd_menu config = menu toggle end begin prog = mplayer button = dvd config = menu hide\nplay_dvd end begin prog = mplayer button = photo config = set_menu view_img end begin prog = mplayer button = play config = seek 0 end begin prog = mplayer button = ok config = menu ok end begin prog = mplayer button = right repeat = 2 config = menu ok end begin prog = mplayer button = left repeat = 2 config = menu cancel end begin prog = mplayer button = up repeat = 2 config = menu up end begin prog = mplayer button = down repeat = 2 config = menu down end begin prog = mplayer button = red repeat = 3 config = sub_pos -1 end begin prog = mplayer button = green config = set_menu view_sleeptimer end begin prog = mplayer button = blue repeat = 3 config = sub_pos +1 end begin prog = mplayer button = txt repeat = 3 config = sub_select end begin prog = mplayer button = dvd_audio repeat = 3 config = switch_audio end begin prog = mplayer button = mute config = mute end begin prog = mplayer button = rec config = record end begin prog = mplayer button = stop config = quit end begin prog = mplayer button = fullscreen config = set_menu aspect end begin prog = mplayer button = 8 repeat = 2 config = dvdnav 2 end begin prog = mplayer button = 2 repeat = 2 config = dvdnav 1 end begin prog = mplayer button = 4 repeat = 2 config = dvdnav 3 end begin prog = mplayer button = 6 repeat = 2 config = dvdnav 4 end begin prog = mplayer button = 0 repeat = 2 config = dvdnav 5 end begin prog = mplayer button = 5 repeat = 2 config = dvdnav 6 end begin prog = mplayer button = 1 repeat = 2 config = sub_delay -0.1 end begin prog = mplayer button = 3 repeat = 2 config = sub_delay +0.1 end begin prog = mplayer button = 7 repeat = 2 config = pt_step -1 end begin prog = mplayer button = 9 repeat = 2 config = pt_step +1 end begin prog = irpty button = delete config = d end begin prog = irpty button = ch_search config = o end begin prog = irpty button = rename config = d end begin prog = irpty button = snapshot config = c end begin prog = irpty button = acquire_image config = p end begin prog = irpty button = edit_image config = u end begin prog = fbi button = power config = q end begin prog = fbi button = right config = n end begin prog = fbi button = next config = n end begin prog = fbi button = left config = b end begin prog = fbi button = previous config = b end begin prog = fbi button = up config = + end begin prog = fbi button = down config = - end begin prog = fbi button = fullscreen config = a end begin prog = fbi button = dvd_menu config = h end begin prog = fbi button = tv config = i end begin prog = fbi button = play config = p end begin prog = fbi button = pause config = p end begin prog = fbi button = setup config = v end geexbox-1.1/packages/lirc/config/lircrc_RM-S60000644000175000017500000000256510641745505017166 0ustar benbenbegin prog = mplayer button = TAPE config = run /usr/bin/tvswitch end begin prog = mplayer button = CD_PAUSE config = pause end begin prog = mplayer button = CD_STOP config = quit end begin prog = mplayer button = CD_PLAY config = mute end begin prog = mplayer button = CD_PREV_TRACK repeat = 1 config = seek -120 end begin prog = mplayer button = CD_NEXT_TRACK repeat = 1 config = seek 120 end begin prog = mplayer button = SLEEP repeat = 1 config = seek -10 end begin prog = mplayer button = CD repeat = 1 config = seek 10 end begin prog = mplayer button = AMP_VOL_DOWN repeat = 2 config = volume -1 end begin prog = mplayer button = AMP_VOL_UP repeat = 5 config = volume 1 end begin prog = mplayer button = CD_EJECT config = osd end begin prog = mplayer button = AMP_POWER config = quit 166 end begin prog = mplayer button = TUNER config = menu toggle end begin prog = mplayer button = TUNER_SHIFT config = set_menu open_file end begin prog = mplayer button = VIDEO/AUX config = menu ok end begin prog = mplayer button = PHONO config = menu cancel end begin prog = mplayer button = TUNER_PRESET_+ repeat = 5 config = menu up end begin prog = mplayer button = TUNER_PRESET_- repeat = 5 config = menu down end geexbox-1.1/packages/lirc/config/lircrc_RX-V8500000644000175000017500000000265410641745505017352 0ustar benbenbegin prog = mplayer button = F_TV config = run /usr/bin/tvswitch end begin prog = mplayer button = CD_PLAY config = pause end begin prog = mplayer button = CD_PAUSE/STOP repeat = 1 config = seek -120 end begin prog = mplayer button = CD_SEARCH_FWD repeat = 1 config = seek 120 end begin prog = mplayer button = TAPE_DIR_A repeat = 1 config = seek -10 end begin prog = mplayer button = TAPE_DIR_B repeat = 1 config = seek 10 end begin prog = mplayer button = CD_SEARCH_REV repeat = 1 config = volume -1 end begin prog = mplayer button = CD_SKIP_FWD repeat = 1 config = volume 1 end begin prog = mplayer button = TUNER_+ repeat = 1 config = volume 1 end begin prog = mplayer button = 8 repeat = 1 config = volume -1 end begin prog = mplayer button = CD_SKIP_REV config = osd end begin prog = mplayer button = CD_DISK_SKIP config = quit 166 end begin prog = TAPE_PLAY button = Info config = menu toggle end begin prog = mplayer button = TAPE_STOP config = set_menu open_file end begin prog = mplayer button = TAPE_FFWD config = menu ok end begin prog = mplayer button = TAPE_REWIND config = menu cancel end begin prog = mplayer button = TAPE_REC/PAUSE repeat = 1 config = menu up end begin prog = mplayer button = TAPE_DECK_A/B repeat = 1 config = menu down end geexbox-1.1/packages/lirc/config/lircrc_animax0000644000175000017500000000267010641745505017634 0ustar benbenbegin prog = mplayer button = TV_DOWN config = run /usr/bin/tvswitch end begin prog = mplayer button = MENU_DOWN config = pause end begin prog = mplayer button = STOP_DOWN config = quit end begin prog = mplayer button = MUTE_DOWN config = mute end begin prog = mplayer button = 1_DOWN repeat = 1 config = seek -120 end begin prog = mplayer button = 3_DOWN repeat = 1 config = seek 120 end begin prog = mplayer button = REWIND_DOWN repeat = 1 config = seek -10 end begin prog = mplayer button = FORWARD_DOWN repeat = 1 config = seek 10 end begin prog = mplayer button = VOLUME_DOWN_DOWN repeat = 1 config = volume -1 end begin prog = mplayer button = VOLUME_UP_DOWN repeat = 1 config = volume 1 end begin prog = mplayer button = BLUE_BUTTON_DOWN config = osd end begin prog = mplayer button = POWER_DOWN config = quit 166 end begin prog = mplayer button = RED_BUTTON_DOWN config = menu toggle end begin prog = mplayer button = GREEN_BUTTON_DOWN config = set_menu open_file end begin prog = mplayer button = LEFT_MOUSE_BUTTON_TOUCH_DOWN config = menu ok end begin prog = mplayer button = MOUSE_S repeat = 0 config = menu cancel end begin prog = mplayer button = LEFT_MOUSE_BUTTON_DOWN config = menu up end begin prog = mplayer button = RIGHT_MOUSE_BUTTON_DOWN config = menu down end geexbox-1.1/packages/lirc/config/lircrc_askey0000644000175000017500000000340510641745505017470 0ustar benbenbegin prog = mplayer button = TV config = run /usr/bin/tvswitch end begin prog = mplayer button = 5 config = pause end begin prog = mplayer button = FREEZE config = pause end begin prog = mplayer button = 8 repeat = 1 config = seek -120 end begin prog = mplayer button = 2 repeat = 1 config = seek 120 end begin prog = mplayer button = 4 repeat = 1 config = seek -10 end begin prog = mplayer button = 6 repeat = 1 config = seek 10 end begin prog = mplayer button = 1 repeat = 1 config = volume 1 end begin prog = mplayer button = 7 repeat = 1 config = volume -1 end begin prog = mplayer button = VOL_UP repeat = 1 config = volume 1 end begin prog = mplayer button = VOL_DOWN repeat = 1 config = volume -1 end begin prog = mplayer button = VIDEO config = osd end begin prog = mplayer button = PREVIEW config = menu toggle end begin prog = mplayer button = PLAY config = set_menu open_file end begin prog = mplayer button = RECORD config = menu ok end begin prog = mplayer button = STOP config = menu cancel end begin prog = mplayer button = CH_UP repeat = 2 config = menu up end begin prog = mplayer button = CH_DOWN repeat = 2 config = menu down end begin prog = mplayer button = FINE_UP(PLUS) repeat = 2 config = menu down end begin prog = mplayer button = FINE_DOWN(MINUS) repeat = 2 config = menu up end begin prog = mplayer button = 3 config = audio_delay 0.1 end begin prog = mplayer button = 9 config = audio_delay -0.1 end begin prog = mplayer button = MUTE config = mute end begin prog = mplayer button = ZOOM config = vo_fullscreen end geexbox-1.1/packages/lirc/config/lircrc_atiusb0000644000175000017500000001126710641745505017650 0ustar benbenbegin prog = mplayer button = launch_setup config = run /usr/bin/tvswitch end begin prog = mplayer button = pause config = pause end begin prog = mplayer button = rewind repeat = 3 config = seek -120 end begin prog = mplayer button = fast_forward repeat = 3 config = seek 120 end begin prog = mplayer button = c repeat = 3 config = seek -10 end begin prog = mplayer button = d repeat = 3 config = seek 10 end begin prog = mplayer button = vol-down repeat = 2 config = volume -1 end begin prog = mplayer button = vol-up repeat = 2 config = volume 1 end begin prog = mplayer button = chan-down repeat = 2 config = tv_step_channel -1 end begin prog = mplayer button = chan-up repeat = 2 config = tv_step_channel +1 end begin prog = mplayer button = tv_on_demand config = osd end begin prog = mplayer button = power config = quit 166 end begin prog = mplayer button = dvd-root_menu config = menu toggle end begin prog = mplayer button = web config = set_menu open_file end begin prog = mplayer button = dvd config = menu hide\nplay_dvd end begin prog = mplayer button = tv config = set_menu tv_settings end begin prog = mplayer button = drag config = set_menu view_img end begin prog = mplayer button = play config = seek 0 end begin prog = mplayer button = ok config = menu ok end begin prog = mplayer button = cursor-right config = menu ok end begin prog = mplayer button = mouse-right config = menu ok end begin prog = mplayer button = cursor-left config = menu cancel end begin prog = mplayer button = mouse-left config = menu cancel end begin prog = mplayer button = cursor-up repeat = 2 config = menu up end begin prog = mplayer button = mouse-up repeat = 6 config = menu up end begin prog = mplayer button = cursor-down repeat = 2 config = menu down end begin prog = mplayer button = mouse-down repeat = 6 config = menu down end begin prog = mplayer button = a repeat = 3 config = sub_pos -1 end begin prog = mplayer button = b repeat = 3 config = sub_pos +1 end begin prog = mplayer button = e repeat = 3 config = sub_select end begin prog = mplayer button = f repeat = 3 config = switch_audio end begin prog = mplayer button = mute config = mute end begin prog = mplayer button = record config = record end begin prog = mplayer button = stop config = quit end begin prog = mplayer button = max_window config = set_menu aspect end begin prog = mplayer button = media_library config = set_menu jump_to end begin prog = mplayer button = 8 repeat = 2 config = dvdnav 2 end begin prog = mplayer button = 2 repeat = 2 config = dvdnav 1 end begin prog = mplayer button = 4 repeat = 2 config = dvdnav 3 end begin prog = mplayer button = 6 repeat = 2 config = dvdnav 4 end begin prog = mplayer button = 0 repeat = 2 config = dvdnav 5 end begin prog = mplayer button = 5 repeat = 2 config = dvdnav 6 end begin prog = mplayer button = 1 repeat = 2 config = sub_delay -0.1 end begin prog = mplayer button = 3 repeat = 2 config = sub_delay +0.1 end begin prog = mplayer button = 7 repeat = 2 config = pt_step -1 end begin prog = mplayer button = 9 repeat = 2 config = pt_step +1 end begin prog = irpty button = d config = p end begin prog = irpty button = c config = l end begin prog = irpty button = mouse-button_left config = set_menu properties end begin prog = fbi button = power config = q end begin prog = fbi button = cursor-right config = n end begin prog = fbi button = mouse-right config = n end begin prog = fbi button = fast_forward config = n end begin prog = fbi button = cursor-left config = b end begin prog = fbi button = mouse-left config = b end begin prog = fbi button = rewind