What's New for PSPRadio 
========================

0.37-Final (r706) (2006-01-16) (svn.berlios.de/svnroot/repos/pspradio/Releases/PSPRadio0.37/)
NEW FEATURES
(raf) TextUI: Added a new config element to specify the length of the metadata.
(raf) GraphicsUI: Removed from the build as it doesn't work correctly with the current core.
(raf) TextUI: Added config item/implementation to provide 24/12-hour clock configuration.
(raf) TextUI: Separate config files per screen
(raf) TextUI: Metadata color is now configurable (see bug #5907)
(raf) Core: Removed local LibPSPNet; using pspsdk's pspnet now.
(raf) Core: Added new LocalFiles screen.
(raf) TextUI: Using new screens by semtex199.
(raf) TextUI: Added configuration items to cfg file to configure the list's titles.
(raf) TextUI: -2 in the X position for configuration items makes the item not be printed (suggested by HalfastII)
(raf) TextUI: The config file is now partitioned into one section per screen (suggested by HalfastII)
(raf) TextUI: Added support for showing the time and the battery level.
(raf) TextUI: Now files defined in playlists are displayed without the path, and the extension is only shown if configured to in the config file.
(raf) Compiled against latest pspsdk (r1542). There should be some speed improvements, as things like memcpy are now optimized.
(raf) Core/TextUI: Added support to print text using pixel coordinates
(raf) TexUI: Removed cleaning code that was unnecessary in the options screen renderer. This should speed it up a bit.
(sandberg) Added support for showing the time and the battery level on the 3D UI.
(raf) Enabled pausing of local streams
(raf) Cleanup/robustness added for play/stop core.
(raf) Created playmodes; defaults to NORMAL (will play next track after current one ends), also has SINGLE and REPEAT modes.
(raf) Completely re-wrote buffering system. (Using stl lists, and optimized buffers). New change from one stream to the next is seamless.
(raf) Made font size configurable in the textui config file. If these settings are set correctly, then the artifacts produced when using outlined/shadowed text should go away. (The downside, is that the number of columns/rows is also modified as these values change.)
(sandberg) Added support for showing the battery status and the current local time.
(raf) TextUI is now more configurable (for listboxes/textmode(font modes))
(raf) Added shadowed font mode for textui.
(raf) Added option to select if file extensions should be displayed or not in textui.
(raf) Added pngs for startup/shutdown of PSPRadio
(raf) Now using pngs designed by Semtex/albadross/HalfastII
(raf) Added better support for suspending/resuming psp.
(Halfast) Minor tweaking of the textui.cfg
(raf) The initial screen can now be selected in the PSPRadio.cfg file, under SYSTEM/INITIAL_SCREEN
(raf) Can now refresh the playlists from the Options screen.
(raf) Options can now be saved from options screen.
(raf) 0.37-pre3c: Now you can save and restore USB autostart / wifi autostart / intial screen from the options screen
(raf) Added a genre processing/parsing stage for shoutcast.com database.
(raf) Changed the text ui layout a bit, so that the stream name has more room
(sandberg) Added a radial blur effect as a background effect on the 3D UI.
(raf) Added code to draw font with outline - thanks to Halfast for the idea.
(raf) Revamped code to handle playlists in memory. 
(raf) Now shoutcast.com entries are sorted by genre
(raf) Now will reload shoutcast.com db on download. Also now include a default db.xml

BUG FIXES
(raf) ScreenHandler: Now selecting to refresh playlists in Options screen will also refresh the local files screen virtual playlists. (Bug #5904).
(raf) Core: Corrected basename implementation bug #5982. (files shorter than 4 chars weren't getting displayed).
(raf) Core: Corrected bug #5924, if PSP/MUSIC folder was empty, the app would crash.
(raf) Core: Corrected problem where if no playlist or local files where present, the app would crash when the user tried to access the next track/playlist using UP/DOWN.
(sandberg) Core: VBlank fix.
(sandberg) Core: Updated to use socket headers from the new pspsdk.
(raf) TextUI: Fixed bug where localfiles where getting truncated as they were displayed.
(raf) Corrected logging timestamping, now using localtime (inspired by sandberg's code).
(raf) Core: Logging instantiated in the heap instead of the data segment.
(raf) Core: Modifications to make it compatible with the latest pspsdk (r1542)
(raf) Playback: Corrected bug that caused app to crash when a stream failed.
(raf) TextUI: Made the title shorter so it fits no matter what font is used.
(sandberg) Updated the 3D UI so all options are fitted to the screen.
(raf) Corrected log times now that clock changed in sdk
(raf) Corrected bug with playlists v2, where streams with spaces were getting truncated.
(raf) Fixed problem where PSPRadio was exiting when it went into screen blank mode.
(raf) Some refactoring of options code/pspapp_network. Corrections on loglevels.
(raf) 0.37-pre3b: Corrected the WIFI:AUTOSTARTing.
(raf) Corrected issue where SHOUTcast screen wasn't allocating memory for the lists, reusing the playlists' memory. This was causing instability in version 0.37-pre1.


--------------------------------------------------------------------------------

0.36-final (svn.berlios.de/svnroot/repos/pspradio/Releases/PSPRadio0.36/)
(raf) If AUTOSTART set to 1 in config file, App starts in Options screen, starts the network, then goes back to main screen.
(raf) Lots of cleanup / refactoring
(raf) Now downloads a compressed version of SHOUTcast.com's database instead. Thanks to echto again for providing the routines to do the zlib uncompression, and SHOUTcast.com db download URL service setup, etc!!
(sandberg) Added a particle system as a new background effect for the 3D UI.
(raf) Simplified wifi selection. One option to select profile or turn off.
(raf) Screens are classes now. If going back and forth between screens, they will retain their state.
(sandberg) Added support for taking screenshots. Use the Hold button to take a screenshot. When the LED stops flashing the screenshot is stored in the Screenshots folder (you need to create that folder, if you don't have it already).
(raf) Modified the pspsdk's text rendering system to allow for png backgrounds and transparent text.
(raf) Gave the TextUI a facelift by using backgrounds for the different screens.. This is configurable via the cfg file.
(raf) Fixed bug where if the playlist was empty, garbage was being used when the user pressed X or O.
(sandberg) Added support repeated and long key presses. The repeated key presses are usefull when navigating the playlists.
(sandberg) Moved the screenshot function to be activated on a long key press on Select (appr. 1 second). The screenshot will be taken when releasing the button.
(raf) Backup the db in case the download fails.
(raf) Disabled the HOME menu button for now. To exit PSPRadio, go to Options and select Exit.
(raf) Enabled the CPU speed change option.
(raf) Added 111MHz; which is not useful for MP3, but works for OGGs in the text ui, and can save battery.
(raf) Refactored PSPApp/PSPRadio so that it runs in USERMODE. The drivers for the network and USB are now started from a kernel thread during app construction.
This allows for DHCP to work! (thanks to PspPet and 'benji' for figuring this out.)
(raf) L and R now navigate like Page UP/Down.
(raf) Started adding SHOUTcast.com support
(sandberg) Implemented a VRAM memory manager, so all textures are now loaded from files
into VRAM.
(sandberg) Added full playlist and playlist entries support for the 3D UI.
(sandberg) made 2 minor error correction to the option menu.
(sandberg) Added rendering of the background effect to the option menu.
(jpfouch48) Re-vamped Grapics UI Theme class
(jpfouch48) Cleaned up theme implementation and theme file
(jpfouch48) Created icons for buffer display, network status, and stream status
(sandberg) Implemented support for using the Select(raf: changed to Start) button for entering the option menu.
The triangle button is only used for swapping between the playlist and Shoutcast list.
(raf) Now user needs to press X or O to go from playlist selection over to entries box.
(raf) Fixed crash on exit when logging is 80 or higher.
(raf) Added logging level selection and UI selection in Options menu.
(raf) Added option to download latest database from SHOUTcast.com (this is usable, but still work in progress. -- the app only lets you do this once a minute, not more often. (Shouldn't have to anyway))
(sandberg) Added support for the option menu in the 3D UI.
(jpfouch48) GraphicsUI playlist browser and playlist item browser is now functional
(jpfouch48) Made the text display funtions more modulare to make future enhancments easier
(jpfouch48) Added a unique ItemIndex to the MetaData structure and directorydata structure to make the browsable playlist integration a little bit easier
(raf) Some more work on the OGG decoder.
(raf) Now TextUI will display selectable lists for playlist and playlist entries
(raf) Made the current selections more dynamic so they follow the list.
(raf) Changed user interface for playlist access: User now uses UP/DOWN to select a playlist, then
press X or O to go and select an entry. Navigation in entries box is also with UP/DOWN.
User can also use <- or -> to go back and forth between List and Entries. (need to iron out)
(jpfouch48) Added options screen
(jpfouch48) Updated how playlist scrolls
(jpfouch48) Fixed problem with theme clipping song filename in upper pannel
(sandberg) Added support for displaying the MetaData in the 3D UI.
------------------------------------------------------------------------
r320 | rafpsp | 2005-10-17 02:19:15 -0400 (Mon, 17 Oct 2005) | 38 lines

svn merge -r305:319 branches/OGGSupportAddition to trunk/
----------------------------------------------------------------------
	r319 | rafpsp | 2005-10-17 01:52:33 -0400 (Mon, 17 Oct 2005) | 1 line
	
	Now if content type is not defined, it defaults to MPEG. Also added case for AAC (not supported yet)
	------------------------------------------------------------------------
	r318 | rafpsp | 2005-10-17 01:51:34 -0400 (Mon, 17 Oct 2005) | 1 line
	
	Added support for determining content types for ogg and aac.
	------------------------------------------------------------------------
	r317 | rafpsp | 2005-10-17 01:51:05 -0400 (Mon, 17 Oct 2005) | 1 line
	
	Added support for determining content types for ogg and aac.
	------------------------------------------------------------------------
	r316 | rafpsp | 2005-10-17 00:50:34 -0400 (Mon, 17 Oct 2005) | 2 lines
	
	Added support for different stream types in preparation for addition of new decoders. It detects the stream type (content type) from filename if local file, or
	from content-type: metadata from online stream response. (Some servers don't send the response.. so may want to default to MAD.
	------------------------------------------------------------------------
	r315 | rafpsp | 2005-10-16 04:07:39 -0400 (Sun, 16 Oct 2005) | 1 line
	
	More modularization in progress...
	------------------------------------------------------------------------
	r314 | rafpsp | 2005-10-16 03:23:21 -0400 (Sun, 16 Oct 2005) | 1 line
	
	More modularization in progress...
	------------------------------------------------------------------------
	r306 | rafpsp | 2005-10-16 00:17:10 -0400 (Sun, 16 Oct 2005) | 1 line
	
	Making decoder more modular..
	------------------------------------------------------------------------
	r305 | rafpsp | 2005-10-15 17:40:37 -0400 (Sat, 15 Oct 2005) | 1 line
	
	Redoing dir by using copy from branch
	------------------------------------------------------------------------
	Also fix to report stream info (like samplerate) everytime
	Also updated readme/whatsnew with what was actually released for 0.35.
------------------------------------------------------------------------
r322 | sandberg | 2005-10-17 04:22:14 -0400 (Mon, 17 Oct 2005) | 1 line

Added another background object and fixed the lights
------------------------------------------------------------------------
r323 | rafpsp | 2005-10-17 12:12:13 -0400 (Mon, 17 Oct 2005) | 1 line

Starting ogg decoder. PSPSound will instantiate it. Basing decoder class from MAD decoder. Now need to implement
------------------------------------------------------------------------
r324 | sandberg | 2005-10-17 16:26:39 -0400 (Mon, 17 Oct 2005) | 1 line

Playlist filename added.
------------------------------------------------------------------------
r325 | sandberg | 2005-10-17 17:51:28 -0400 (Mon, 17 Oct 2005) | 1 line

Added network, sound and loading buttons.
------------------------------------------------------------------------
r326 | jpfouch48 | 2005-10-17 18:52:54 -0400 (Mon, 17 Oct 2005) | 2 lines

Fixed selection box that was not the propper size

------------------------------------------------------------------------
r327 | sandberg | 2005-10-17 19:16:22 -0400 (Mon, 17 Oct 2005) | 1 line

Internal cleanup for the icon drawing. The start/stop buttons are now also drawn as normal icons.
------------------------------------------------------------------------
r328 | rafpsp | 2005-10-18 16:50:39 -0400 (Tue, 18 Oct 2005) | 1 line

Added support for ogg vorbis streams (files/online streams)
------------------------------------------------------------------------
r329 | rafpsp | 2005-10-19 00:08:12 -0400 (Wed, 19 Oct 2005) | 1 line

Moved metadata structure from CPlayList to CPSPSoundStream. Get current metadata from CurrentSoundStream using accessors (ie CurrentSoundStream.GetURI() or GetTitle(), etc)
------------------------------------------------------------------------
r330 | rafpsp | 2005-10-19 01:16:22 -0400 (Wed, 19 Oct 2005) | 2 lines

Moved currentmetadata copy from pspradio to CurrentSoundStream. Also metadata processing from pspradio to pspsounddecoder
Simplified metadata notification
------------------------------------------------------------------------
r331 | rafpsp | 2005-10-19 01:27:11 -0400 (Wed, 19 Oct 2005) | 1 line

Renamed Author to Artist
------------------------------------------------------------------------
r332 | rafpsp | 2005-10-19 01:27:44 -0400 (Wed, 19 Oct 2005) | 1 line

Populating more metadata fields for ogg: bitrate, title, artist
------------------------------------------------------------------------
r333 | rafpsp | 2005-10-19 01:36:56 -0400 (Wed, 19 Oct 2005) | 1 line

Display Artist
------------------------------------------------------------------------
r334 | rafpsp | 2005-10-19 02:25:35 -0400 (Wed, 19 Oct 2005) | 1 line

Refactoring to allow for oggs to set samplerate. SoundBuffer now gets samplerate from CurrentSoundStream instead of keeping its own copy
------------------------------------------------------------------------
r335 | rafpsp | 2005-10-19 02:28:32 -0400 (Wed, 19 Oct 2005) | 1 line

Show artist only if available
------------------------------------------------------------------------
r336 | rafpsp | 2005-10-19 02:38:54 -0400 (Wed, 19 Oct 2005) | 1 line

Updates to readme and whatsnew for 0.36-pre1
------------------------------------------------------------------------



0.35-final (r312)
-Refactored PSPSound/PSPSound_MP3. (lots of things are different. but one thing that is evident to the end 
user is that the buffers were reduced by a factor of 5. Next -pre release will allow for the 
buffers to be configurable).
-Added basic multiple samplerate support!
Supported rates:
8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000.
Any rate can be implemented, I just need to add it to the code, let me know if other rates are required.
Note that the samplerate conversion is really linear and simplistic, and hence the produced sound will not
be very good. Still, better than nothing.
-UI now displays buffer percentage (instead of in/out number)
-sound buffers configurable in .cfg file. Post your results!
-fixed bug where app would crash on exit if played a stream until end and then exited.
-Now the Text user interface is configurable, look at TextUI.cfg, play and post results!
-now multiple playlists are supported. The playlist configuration changed as well.. Now, you
need to put your playlist files under the PlayLists directory, and don't need to do anything
with the config file.
-The current playlist is selectable by using UP/DOWN
-cleaned up the display of playlist/stream, metadata. as 3 completely independent entities.
-Can browse playlists/entries while playing current stream. (It doesn't stop anymore when changing tracks)
-Refactoring of PSPSound/PSPSound_MP3 -> PSPSound/PSPSoundDecoder_MAD, internal OO changes.
-Thread priorities are now configurable in the .cfg file.
-Added message queue class for inter thread communications and synchronization.
-Revamped comm system for PSPApp (PSPRadio) using message q. This solves the problem with callback messaging 
(thread prio boosting/inheritance from caller, overhead on caller thread, etc. -- Also, now polling of buttons/vblank 
is done in a separate thread. -- still work in progress --).
-Message queue system renamed to event queue.. Everything is now using this, except for vblank.
-Changes to Logging to show time(in ms) and line numbers.
-Buffer Percentage is updated at 6fps max now (this to not overtax main thread+event handler)
-Now clear metadata on stream stop (including buffer %).
-more internal refactoring...
(sandberg)-Added button support to the 3D UI so it shows play/stop/pause.
(sandberg)-Added hprm (headphone remote control) support to PSPRadio. The keys are mapped to that forward/back
maps to Rtrigger/LTrigger. The Play/Pause button will start playing when stopped and stop when playing.
(jpfouch48)-Text items in GraphicsUI are now configurable thru the theme file.
(jpfouch48)-Cleaned up warning messages in GraphicsUI.
(sandberg) Added graphics for the button commands.
(raf)-added handler to have "multiple screens" - currently using for an options screen. Use TRIANGLE to get to options
screen. Only supported by text ui right now.
(raf)-The options menu is the only way for now to select a profile and start the network; so use network autostart in
the config file if using PSPRaio with another UI.
(raf)-Currently network and usb can be started from options screen. Will add CPU speed here also.
(raf)-Only restart stream on stop if different than the current stream
(raf)-(hopefully)Fixed bug where event queue was filling up causing PSPRadio to quit with event 0x31 (decoder done).
(raf)-Only display the filename for playlists now.
(raf)-Ignore buttons while HOME menu is up.

0.34 (r181)
-Corrected the mutex and semaphore implementations..
(Now logging needs more resources because of this though, so it's probably a good idea to keep high).
-Also found a bug that would cause the crash on exit (one at least).
(PSPSound's destructor was accessing the m_ThDecode without checkin if it existed first.)
-Also added USB support. Needs to be enabled in the config file. ([USB]ENABLED=1;)
-USB support is dangerous. Not recommended.
-Disabled pause for URL streams.
-Lots of internal refactoring.
-Support for playlists v2 was added.
-Now data from playlist v2 is shown, then updated when metadata arrives.
-Can force a profile now, look in the .cfg file to see how.
-Dropped the 'b' as is redundant with the -pre.
-Now when pressing L and R, the song only auto starts if the user was currently playing a song.
-Added thread exit synchronization using the semaphore. (Should help make sure the app exits correctly).
-Removed forced network profile code. (As users having problems where able to solve them themselves).
-Tweaked the playlist v2 support so that it (hopefully, test) works with winamp .pls files. (Now I just
ignore the "NumberOfEntries"/"numberofentries" tag.

0.33b (r130)
-Corrected logging, so that it won't double-line feed.
-Added connection timeout so that if the server is not respoding, PSPRadio will timeout after 5 seconds.
-The connection now sends a message (can and will be used for the gui) for now, a '.' is printed every second while trying to connect.
-New option in config file: WIFI-AUTOSTART if set to 0, then the user can select the WIFI profile from inside the app.
-Now reports an error if the user tries to start the network and the switch is off
-Metadata is now parsed
-Network profile selection now is limited to actual configured network profiles, plus it displays the network profile name.
-Reverted resolver ntoa / aton logic, to help ppl with DNS problems.
-UI now completely encapsulated as a separate object, and an interface created that all UI need to follow. - This will allow for multiple
user interfaces to coexist, and to ease transition to GUI.
-Text UI now follows the interface; was also cleaned up a bit during conversion.
-Added exit synchronization, to help prevent crashes on exit. This is done with a semaphore. 
-Keeping the loglevel at 20 seems to help prevent the app from crashing on exit also.

0.32b
-Reports of sound skipping on 0.31b. Looking at the code, I realize I forgot to do something when processing metadata.
Hopefully this is corrected now.
-Solved the problem with threads not logging. I needed to use an absolute path to the log file.
-Change your LOG_LEVEL to 50, (or more), so that it doesn't fill up your ms.
-Metadata is only logged (to log file) when it changes.
-Metadata should update faster on the screen now.


0.31b
-Corrected problem when PLAYLIST not defined in config file.
-Disabled feature to go to next song in list for now.


0.3b
-Added support for comments. Use ';' as the first character. (Blank lines are also ignored)
-Now urls with no path work (http://64.202.98.193:8000 didn't work, but http://64.202.98.193:8000/ did. Now both do).
-Now asking the server to send metadata.
-Metadata information is displayed for the current stream.
-Added a logging library
-Integrated logging with everything (framework, app, config)
-Added an event system
-Integrated the event system. This will be useful when the gui is developed.
-When a stream finishes, it goes on to the next on the playlist
-Fixed problem where the last entry in the playlist was getting inserted twice into the list.
-Having trouble getting the threads to log anything..
