You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(9) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(2) |
Feb
(39) |
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(4) |
Sep
|
Oct
|
Nov
|
Dec
|
From: J?rg P. <jp...@us...> - 2001-12-15 21:22:09
|
Update of /cvsroot/njbfs/njbfs In directory usw-pr-cvs1:/tmp/cvs-serv26953 Modified Files: proc.c Log Message: patch for 'sscanf' extended Index: proc.c =================================================================== RCS file: /cvsroot/njbfs/njbfs/proc.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** proc.c 2001/12/14 23:16:23 1.4 --- proc.c 2001/12/15 21:22:07 1.5 *************** *** 954,957 **** --- 954,1003 ---- + + /** + * simple_strtoull - convert a string to an unsigned long long + * @cp: The start of the string + * @endp: A pointer to the end of the parsed string will be placed here + * @base: The number base to use + */ + unsigned long long simple_strtoull(const char *cp,char **endp,unsigned int base) + { + unsigned long long result = 0,value; + + if (!base) { + base = 10; + if (*cp == '0') { + base = 8; + cp++; + if ((*cp == 'x') && isxdigit(cp[1])) { + cp++; + base = 16; + } + } + } + while (isxdigit(*cp) && (value = isdigit(*cp) ? *cp-'0' : (islower(*cp) + ? toupper(*cp) : *cp)-'A'+10) < base) { + result = result*base + value; + cp++; + } + if (endp) + *endp = (char *)cp; + return result; + } + + /** + * simple_strtoll - convert a string to a signed long long + * @cp: The start of the string + * @endp: A pointer to the end of the parsed string will be placed here + * @base: The number base to use + */ + long long simple_strtoll(const char *cp,char **endp,unsigned int base) + { + if(*cp=='-') + return -simple_strtoull(cp+1,endp,base); + return simple_strtoull(cp,endp,base); + } + + static int skip_atoi(const char **s) { |
From: J?rg P. <jp...@us...> - 2001-12-14 23:16:25
|
Update of /cvsroot/njbfs/njbfs/docs In directory usw-pr-cvs1:/tmp/cvs-serv23353/docs Modified Files: towards-a-linux-kernel-audio-track-subsystem.txt Log Message: 'sscanf' missing symbol compatibility hack Index: towards-a-linux-kernel-audio-track-subsystem.txt =================================================================== RCS file: /cvsroot/njbfs/njbfs/docs/towards-a-linux-kernel-audio-track-subsystem.txt,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** towards-a-linux-kernel-audio-track-subsystem.txt 2001/12/11 11:00:18 1.1 --- towards-a-linux-kernel-audio-track-subsystem.txt 2001/12/14 23:16:23 1.2 *************** *** 59,63 **** will always be the loser. This is where Linux starts. - 2. Linux can offer the most effective MP3 portable device support --- 59,62 ---- *************** *** 99,103 **** portable audio track device, this device could have superior connectivity and interoperability in comparison to other proprietary ! embedded systems. Independent software vendors can also be encouraged to develop software --- 98,105 ---- portable audio track device, this device could have superior connectivity and interoperability in comparison to other proprietary ! embedded systems. There has been some effort going on in the Embedded ! Linux MP3 Player Project [7] in 1999, where old PCs are used to build ! MP3 player hardware, but it would be a challenge to construct ! a real Linux MP3 portable device ready for mass production. Independent software vendors can also be encouraged to develop software *************** *** 109,115 **** the open source audio kernel subsystem. ! 3. The basic design of a Linux kernel audio track subsystem In this section, the design of a Linux kernel audio track subsystem is being discussed. --- 111,225 ---- the open source audio kernel subsystem. + 3. Status of MP3 portable device support for Linux today ! In this section, the status of the Linux support for MP3 portable devices ! will be described. A lot of projects started years ago, but there ! has never been a framework as a basis for all the efforts. It would ! be reasonable to pick up the best from all these efforts in order to ! get a state-of-the-art audio track kernel subsystem. ! ! Diamond Rio [1] + One of the first MP3 players, without harddisk. + The Diamond Rio 500 has 64 MB built-in flash memory, expandable with + SmartMedia cards, over 12 hours of continuous playback on 1 AA alkaline + battery, weighs 2.7 ounces, has a USB port connector for downloads, + and the functions repeat one track, all tracks, or random a customizable + EQ, and playlists. + + Cesar Miquel <mi...@df...>, Keith Clayton <kcl...@jp...> and + Bruce Tenison <bte...@di...> have developed a set of drivers + and tools for the Rio 500. There is also a Gnome-Rio GUI written by + Cesar Miquel and Till Harbaum. + + A couple of Rio tools has been developed since 1999. Interestingly, + the developers had future plans about file systems, and loadable + modules. David Weekly has packaged The Snowblind Alliance's Rio Utilities + program which lets people use the Rio as a secure storage device []. + + Personal Jukebox [2] + + The Personal Jukebox (PJB) is a portable mp3 player with an IBM 6 GB, + 2.5 inch hard drive. It can store about 1500 mp3 songs, the equivalent + of about 150 cds. The Personal Jukebox was originally designed and + developed by the Compaq Computer Corporation's Corporate Research Labs. + The original Personal Jukebox came with a 4.8 GB hard drive. + + Alexander Mosley (aj...@ne...) is working on a GNOME/Gtk+ GUI + Personal Jukebox Manager for Linux. This application has a + similar interface and functionality to the Windows 98 application + supplied with the Personal Jukebox. The latest release implements + all the vital functions. The Personal Jukebox is a USB device and + therefore requires USB support. The software runs on a small USB + kernel module based on 2.4.x kernels. + + Archos JukeBox 6000 [3] + + The Archos Jukebox 6000 comes with a USB interface. It has 4 x AA + rechargeable NiMH Batteries, the battery range is up to 8 hours. + + The harddisk capacity is 6GBand the memory Buffer used is 2 MB. + It supports only MP3. Dimensions are 115 x 82 x 34mm (4.5" x 3.2" x 1.3") + The weight is 290g (12 oz.) + + Since the Archos disk is mountable as a USB mass storage device, + there was a need of Linux support of USB storage adapter products. + The ISD-200 is a widespread ASIC USB to ATA adapter and part of the Archos. + Björn Stenberg (bj...@ha...) developed the Linux driver and it is now + part of the official Linux kernel. Because of this, there shoudn't be the + need of extra Linux software. The Archos find automatically all MP3 files + on the disk. Anyway, this means the audio track subsystem should be able to + find audio tracks automatically on connected devices. + + Treó 10 [4] + + The Treó 10 is a digital music jukebox with the capacity of 10 GB. + Made in the USA, the Treó 10 features an aluminum case, a rechargeable + lithium-ion battery and an LCD display. + + It has a 10 GB embedded hard drive, supports MP3 and Windows Media files, + got a fully upgradeable firmware, USB interface, + e.Digital's Smart Song Selection, + Battery capable of playing for approximately 11 hours with a single charge + The capacity can be used to store and/or transfer data files as well as music. + + It is unknown if there is special Linux software needed for the Treó. + + Creative Nomad Jukebox [5] + + The Creative Nomad Jukebox has a 20GB + storage space. The original came with 6GB. The weight is 14 ounces, + the USB interface enables file transfers, and the dual Stereo Line Out + support front and rear speakers. It has Creative's EAX, parametric EQ, + adjustable playback speed, and line-in for direct stereo audio recording + in WAV format from external devices. It has 2MB memory buffer for up to + 5 minutes of shock protection. + + The OS is flashable and extended features such as new DSP algorithms, + security features, auto play lists generators are planned, beside + SDMI support for accessing future label released SDMI compliant content. + + John Mechalas (se...@ar...) implemented a Linux/FreeBSD + library for USB/NJB with a documentation of the NJB USB protocol + at http://libnjb.sourceforge.net + + Neo Jukebox 2200 [6] + + The Neo Jukebox has 10, 20+ GB hard disk and supports .mp2; .mp3 file + types, and .m3u playlists. The MP3 files can have 8-320 Kbps bitstream + rates, and VBR is supported. The connection is USB. The firmware can be + flashed. The buffer size is 2 MB, that is 40 seconds of constant play time. + It weighs 7.7 oz. / 218g (without battery & HDD) + The dimensions are 142.5 x 120.8 x 27mm (5.5" x 4.7" x 1.1"). + The size of the LCD is 64 x 128 pixels (56 x 32 mm) and is backlit. + The rechargeable Lithium-Ion battery specification is 3.6V 1500mA/H, + that gives 4 hours. + + It seems that the Neo Jukebox is a USB mass storage device, much like + the Archos. For this, no extra Linux drivers seem to be required. + + + 4. The basic design of a Linux kernel audio track subsystem + In this section, the design of a Linux kernel audio track subsystem is being discussed. *************** *** 157,160 **** --- 267,277 ---- The audio track subsystem uses a system-wide configuration. + Since currently there is a lack of support for flash memory and drivers, + the most promising approach to a common audio track system will be + the support of MP3 portables with USB equiped with disks that can be + configured using standard file systems. If flash memory or other memory + systems for portable memory are supported by Linux, there should be + no problem to build audio track driver for more MP3 portable devices. + The following Linux resources will be very useful for the audio track subsystem: *************** *** 200,202 **** device capabilities completely. ! (to be continued) --- 317,347 ---- device capabilities completely. ! ! ! Resources ! ! [1] The Linux Rio500 kernel driver: http://rio500.sourceforge.net ! The Snowblind Alliance has closed down their activities due to the DMCA: ! http://www.world.co.uk/sba/rio.html ! Snowstar Tcl&Tk interface for Rio: ! http://www.daft.com/~armadilo/projects/snowstar/snowstar.html ! David Weekly's RPMs for Rio v1.06: http://david.weekly.org/code/ ! ! [2] The Personal Jukebox: http://www.pjbox.com ! Linux driver: http://www.mews.org.uk/pjb ! ! [3] Archos JukeBox 6000: http://www.archos.com/us/products/product_500096.html ! Linux ISD-200 USB-to-ATA driver: http://bjorn.haxx.se/isd200/ ! ! [4] Treó 10: http://www.treoplayer.com ! ! [5] Creative Nomad Jukebox: http://www.nomadworld.com ! NJB Library for Linux/FreeBSD: http://libnjb.sourceforge.net ! ! [6] The Neo Jukebox 2200 (USA): http://www.ssiamerica.com/products/neojukebox/ ! IOMagic page: http://www.iomagic.com/products/neo-index.htm ! ! [7] The Embedded Linux MP3 Player: http://zephyr.unl.edu/~spawn/elmp/ ! ! [8] Yahoo MP3 portables discussion groups: ! http://dir.groups.yahoo.com/dir/Computers___Internet/Hardware/MP3_Players |
From: J?rg P. <jp...@us...> - 2001-12-14 23:16:25
|
Update of /cvsroot/njbfs/njbfs In directory usw-pr-cvs1:/tmp/cvs-serv23353 Modified Files: proc.c Log Message: 'sscanf' missing symbol compatibility hack Index: proc.c =================================================================== RCS file: /cvsroot/njbfs/njbfs/proc.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** proc.c 2001/12/04 21:09:31 1.3 --- proc.c 2001/12/14 23:16:23 1.4 *************** *** 947,950 **** --- 947,1171 ---- } + /* + * 2.4.10- kernel compatibility hack for missing 'sscanf' symbol + * The following lines are copied from 2.4.10+ Linux kernel lib/vsprintf.c + * They can be removed if people get used to kernel 2.4.10+ + */ + + + static int skip_atoi(const char **s) + { + int i=0; + + while (isdigit(**s)) + i = i*10 + *((*s)++) - '0'; + return i; + } + + /** + * + * vsscanf - Unformat a buffer into a list of arguments + * @buf: input buffer + * @fmt: format of buffer + * @args: arguments + */ + int vsscanf(const char * buf, const char * fmt, va_list args) + { + const char *str = buf; + char *next; + int num = 0; + int qualifier; + int base; + int field_width = -1; + int is_sign = 0; + + while(*fmt && *str) { + /* skip any white space in format */ + /* white space in format matchs any amount of + * white space, including none, in the input. + */ + if (isspace(*fmt)) { + while (isspace(*fmt)) + ++fmt; + while (isspace(*str)) + ++str; + } + + /* anything that is not a conversion must match exactly */ + if (*fmt != '%' && *fmt) { + if (*fmt++ != *str++) + break; + continue; + } + + if (!*fmt) + break; + ++fmt; + + /* skip this conversion. + * advance both strings to next white space + */ + if (*fmt == '*') { + while (!isspace(*fmt) && *fmt) + fmt++; + while (!isspace(*str) && *str) + str++; + continue; + } + + /* get field width */ + if (isdigit(*fmt)) + field_width = skip_atoi(&fmt); + + /* get conversion qualifier */ + qualifier = -1; + if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L' || *fmt == 'Z') { + qualifier = *fmt; + fmt++; + } + base = 10; + is_sign = 0; + + if (!*fmt || !*str) + break; + + switch(*fmt++) { + case 'c': + { + char *s = (char *) va_arg(args,char*); + if (field_width == -1) + field_width = 1; + do { + *s++ = *str++; + } while(field_width-- > 0 && *str); + num++; + } + continue; + case 's': + { + char *s = (char *) va_arg(args, char *); + if(field_width == -1) + field_width = INT_MAX; + /* first, skip leading white space in buffer */ + while (isspace(*str)) + str++; + + /* now copy until next white space */ + while (*str && !isspace(*str) && field_width--) { + *s++ = *str++; + } + *s = '\0'; + num++; + } + continue; + case 'n': + /* return number of characters read so far */ + { + int *i = (int *)va_arg(args,int*); + *i = str - buf; + } + continue; + case 'o': + base = 8; + break; + case 'x': + case 'X': + base = 16; + break; + case 'd': + case 'i': + is_sign = 1; + case 'u': + break; + case '%': + /* looking for '%' in str */ + if (*str++ != '%') + return num; + continue; + default: + /* invalid format; stop here */ + return num; + } + + /* have some sort of integer conversion. + * first, skip white space in buffer. + */ + while (isspace(*str)) + str++; + + if (!*str || !isdigit(*str)) + break; + + switch(qualifier) { + case 'h': + if (is_sign) { + short *s = (short *) va_arg(args,short *); + *s = (short) simple_strtol(str,&next,base); + } else { + unsigned short *s = (unsigned short *) va_arg(args, unsigned short *); + *s = (unsigned short) simple_strtoul(str, &next, base); + } + break; + case 'l': + if (is_sign) { + long *l = (long *) va_arg(args,long *); + *l = simple_strtol(str,&next,base); + } else { + unsigned long *l = (unsigned long*) va_arg(args,unsigned long*); + *l = simple_strtoul(str,&next,base); + } + break; + case 'L': + if (is_sign) { + long long *l = (long long*) va_arg(args,long long *); + *l = simple_strtoll(str,&next,base); + } else { + unsigned long long *l = (unsigned long long*) va_arg(args,unsigned long long*); + *l = simple_strtoull(str,&next,base); + } + break; + case 'Z': + { + size_t *s = (size_t*) va_arg(args,size_t*); + *s = (size_t) simple_strtoul(str,&next,base); + } + break; + default: + if (is_sign) { + int *i = (int *) va_arg(args, int*); + *i = (int) simple_strtol(str,&next,base); + } else { + unsigned int *i = (unsigned int*) va_arg(args, unsigned int*); + *i = (unsigned int) simple_strtoul(str,&next,base); + } + break; + } + num++; + + if (!next) + break; + str = next; + } + return num; + } + + /** + * sscanf - Unformat a buffer into a list of arguments + * @buf: input buffer + * @fmt: formatting of buffer + * @...: resulting arguments + */ + int sscanf(const char * buf, const char * fmt, ...) + { + va_list args; + int i; + + va_start(args,fmt); + i = vsscanf(buf,fmt,args); + va_end(args); + return i; + } + + /* end of 'sscanf' kernel compatibility hack */ EXPORT_SYMBOL(njbfs_open); |
From: J?rg P. <jp...@us...> - 2001-12-11 11:00:21
|
Update of /cvsroot/njbfs/njbfs/docs In directory usw-pr-cvs1:/tmp/cvs-serv4677 Added Files: towards-a-linux-kernel-audio-track-subsystem.txt Log Message: white paper initial version added --- NEW FILE: towards-a-linux-kernel-audio-track-subsystem.txt --- White paper: Towards a Linux kernel audio track subsystem by Jörg Prante 9 December, 2001 1. A new world of freedom - listening to music on portable MP3 devices Music is for free distribution and use. The development of music compression and audio signal transmission during the last decade enables a wide variety of available music on digital devices. MP3 and the Internet developed rapidly, many people enjoy the new technologies, and they get used to audio media transfers without almost any loss of quality. It's a world of freedom, where everybody shall be allowed to listen to music whenever he or she wants to. Portable MP3 devices with hard disks can be accessed as a storage for audio tracks, but could also save ordinary files. Some of those act as a USB mass storage device like the Archos Jukebox 6000, some come with a proprietary file system like the Creative Nomad Jukebox or the Personal Jukebox, some are equipped with IEEE 1394 like the Apple iPod. Others just arrived, like the Treo, or will arrive soon. With so many new MP3 portable audio devices, new standards, new architectures, and vendors appear on the market, which is a new challenge for the music listener. How can it be guarantueed that everybody can listen to a favorite song on a favorite device? Once bought in a music CD shop, or recorded by yourself, an audio track has to be transferred to the new portable devices. So, many vendors provide a variety of user interface software to support the transfer of audio tracks. Unfortunately in many cases, the vendor-specific software is restricted to proprietary hardware and platforms. It's difficult to use, has many flaws, and most important, it's buggy and not powerful enough. It's not even open source. Protocols are kept as company secrets. This proprietary approach steals freedom from the music listener. The freedom of the music listener to get control of the music is restricted due to the choice of vendor-specific software. The vendor puts the risk totally to the music listener, because in a market economy it is open whether an MP3 portable device will still be supported through the years or not. Because vendors operate on their own, a user can't copy audio tracks in a transparent way from one device of a vendor to one of another vendor, or vice versa. Each vendor dominates and isolates the user in that way, and the consequence is the user is only allowed to do something with his digital audio track what the vendor wants. Without open protocols and open source software, the music listener will always be the loser. This is where Linux starts. 2. Linux can offer the most effective MP3 portable device support Linux, a free operating system, can enable music listeners to get back into control. Device drivers and file systems allow the Linux user transferring files from one device to another vendor-independently, and, most important, the operating system allows full control of all resources. The source of the device drivers and file systems are published under the GNU public license. Everybody can look at the code, modify it, and submit it to the public. Today, if you own one or more MP3 portable devices, you can't connect them to your Linux host, since most vendors refuse to support Linux. And even if a Linux device driver can be installed to get access to one specific MP3 device, you can get into trouble if you want to manage two or even more MP3 devices, together with your audio CD, or other audio track sources. It's not only technical trouble, you also become an object of the music industry's conspiracy theories and paranoia that you might copy music illegally. Two or even more audio track sources connected to a Linux box can be realized today, but is unsatisfiable and not well supported by a specific architecture. There should be an audio track kernel subsystem for the tasks of up- and downloading audio tracks from a variety of file systems and device drivers for different buses and protocols. Common audio track management services could be established as a basic service, shareable by all devices. The notion of an audio track kernel subsystem can motivate vendors to switch their marketing strategy from promising support for Linux to really support Linux. They would only need to define a module for their product, and it could profit from the advantages of the whole Linux operating system. There is a huge Linux community all over the world, and each portable audio track device vendor could use the popularity of Linux and increase market shares in this way. The audio track kernel subsystem could enhance the development of embedded Linux systems. If Linux is chosen as operating system for a portable audio track device, this device could have superior connectivity and interoperability in comparison to other proprietary embedded systems. Independent software vendors can also be encouraged to develop software which is compatible to the audio track kernel subsystem, because the standards are open and no longer vendor-specific. Last not least, individuals who work as engineers for companies that produce mobile audio track devices could be empowered to refuse signing non-disclosure-agreements with the knowledge of the existence of the open source audio kernel subsystem. 3. The basic design of a Linux kernel audio track subsystem In this section, the design of a Linux kernel audio track subsystem is being discussed. An "audio track" is the notion of a file that can be retrieved and stored on an arbitrary audio device for the purpose of listening. An audio track is defined by naming the artist(s), the title, the codec and either the size in bytes or the length in seconds plus the playback rate given in kilobits per second. The Linux kernel audio track system is a framework of file systems, device drivers, buses and protocols for managing audio tracks from different sources in a standard way. The audio tracks are managed by reading, writing, modifying, creating and removing the corresponding files. Moreover, the architecture supports audio track specific operations, such as keeping track of artists, titles, genres, albums, etc. in a transparent way. The architecture defines an API so that new hardware drivers which support audio tracks can be developed in a standard way. In order to provide audio track management services, the Linux kernel audio track system must offer a broad range of support for different hardware of different vendors, protocols, and formats. MP3 will be supported as the default audio track format, and MP3 devices can be dynamically added and removed on USB and IEEE 1394 buses. The audio track management subsystem registers and unregisters the appropriate kernel modules and resources. The audio track subsystem integrates technologies like ID3 tagging, audio CD track recognition, and more. The central philosophy is "kernel modules as much as necessary, user applications as much as possible". User applications should not deal with the details of protocols, or on which bus the device is present. The basic design is as follows: - a common module which registers and unregisters audio track devices - a audio track basic service module (MP3, artist, title, codec, length, genre, title etc.) - a generic bus driver module - a generic protocol implementation - and a pair of modules for a single device: a) a bus specific driver module b) a device specific protocol implementation The audio track subsystem uses a system-wide configuration. The following Linux resources will be very useful for the audio track subsystem: - audio libraries, modules etc. helping to implement the audio track service module - the USB driver kernel subsystem to implement the USB specific part of the MP3 devices - IEEE 1394 driver kernel subsystem to implement the Firewire specific part of the MP3 devices - device drivers for Rio 500, Nomad II, etc. to be integrated into the audio subsystem - optionally the code for accessing audio tracks on CDROM (cdparanoia) could be integrated Standards to be defined: - a file naming convention for audio tracks - /proc services to display information about the driver status etc. Strategy to add new audio track devices to the subsystem: 1. Implement the file system and the device driver for the Linux kernel if they don't already exist for the hardware. If a hardware does not provide audio track access with an existing file system, but it is known how to access the tracks, a virtual file system should be implemented using the existing audio track modules. 2. Set up all audio tracks so they appear as files in the file system. File systems are preferred since one of Unix' philosophy is "everything is a file". Obey to the audio track file name convention. 3. Take full control the audio track device. If a device can't be fully controlled, it's useless. If the device commands and protocol are known, a specific driver should be implemented. The existing modules must be reused. 4. If a driver, bus, or protocol can't be found in the audio track subsystem, it must be implemented. 5. If a new device can't be configured to operate smoothly, the audio track subsystem configuration must be extended in order to support the device capabilities completely. (to be continued) |
From: Danish Q. <dq...@us...> - 2001-12-09 23:12:27
|
Update of /cvsroot/njbfs/njbfs In directory usw-pr-cvs1:/tmp/cvs-serv23205 Modified Files: README Log Message: Testing the commit mailing list :) Index: README =================================================================== RCS file: /cvsroot/njbfs/njbfs/README,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** README 2001/12/09 23:09:54 1.3 --- README 2001/12/09 23:12:25 1.4 *************** *** 122,123 **** --- 122,124 ---- njb...@li... + |