It’s been some time since I wrote about my little digital video disk recorder project and I think it’s time to wrap up some things. First of all I am using this software myself on a daily basis, having recorded about 1000 recordings in the last 4 months alone tells something. YAPS now is capable of handling multiple users – with each one having their own recordings and play-stop-positions.
Here are the new features in a short list:
- Electronic Program Guide (EPG) Integration (multiple transponders/streams if you like)
- Session Announcement Protocol / Session Description Protocol Integration
- Multi-User support with capability checking
- Cassini / ASP.NET Integration to allow ASP.NET web applications to run on YAPS
- WCF Webservice interface to expose video disk recorder internal data (recordings list, event list,…)
- Automatic and Reoccuring recordings
- several new graphics
The daily-build system is broken as of now but you can always grab the latest sourcecode from here.
For a complete changelog hit the jump.
Here’s the complete changelog since the last article about yaps:
13.04.2008
- added %render_automatic_and_reoccuring_recording_table% keyword; the other recording table keywords don’t display automatic/reoccuring events
- added canAccessOthersRecordings capability and capability handling
- added %holdingtime%, %comment% and %elapsed_holdingtime% to the Recording/Recorded/AutomaticReoccuringRecording table
- added %render_currently_running_epg_events_table% keyword
06.04.2008
- added Session Description Protocol parser
- added Session Announcement Protocol setting data (SAP_IPAdress, SAP_Port)
- added Session Announcement Protocol processor
- bugfix attempt to fix a race condition that leads to no RecordingList rendering and no more recordings…
03.04.2008
- added WCF Service Host to allow self hosting of data
- switched to .NET Framework 3.5
23.03.2008
- added feature that automatic EPG recordings end when they do end on the channel – Event EndTime is used now
- rewrote Cassini Webserver integration
- fixed a bug in the Template Processor that caused a display of the runtime as fraction of minutes…
15.03.2008
- automatic epg recordings are now looking at the channel id and if it’s set they only record events on that channel
- automatig epg recordings are now looking for a timespan in which they are active
- recorded listing template processor is now aware of automatic recordings (icon, time rendering)
- added automatic epg wait icon on recordingslist html page
- changed automatic epg recording to take the real name from the epg instead of the one that was entered
14.03.2008
- Recording data structure changed to reflect new “automatic epg based recording” feature
- added automatic EPG recording feature; based on “AutomaticEPGRecordingKeywords”
- changed Tuxbox Implementation to show channel ID on Xbox Media Center
- changed addrecording.html and http vcr command handling (addrecording) to reflect automatic epg recording feature
- implemented automatic epg based recording; just enter keywords + recordingtime + name + isAutomatic=true –> Automatic recording
13.03.2008
- changed EPG error handling to only stop listening to EPG events when 25 errors in a row occur
- changed EPG handling to display new events on unknown service ids
14.01.2008
- fixed holding-time bug
13.01.2008
- updated neu.png
- added Holding-Time Handling
12.01.2008
- added reoccuring event handling in VCRScheduler
- added reoccuring event handling in HTML page AddRecordings
- updated years and version numbers
- bugfixed RecordingsPlayed statistics
- updated Recordings-Table to reflect status if recording is reoccuring or not
- added SVG Files for all YAPS graphics
03.01.2008
- updated solutions to Visual Studio 2008
17.11.2007
- Added HoldingTime to make “forget to delete a recording” impossible; HoldingTime of 0 is indefinite, everything else means hold n+1 days
- Changed behaviour of Recordings Streaming: The StopPosition Counter is updated in realtime which means: You don’t have to close a recording to watch it from the current Position
- added Cassini Wrapper
8.11.2007
- integration of Cassini v2 into YAPS
- added some statistics
22.10.2007
- added a new management data structure to the data structures/Recording.cs that holds a list of UserStopPosition; Each User now has his own LastStoppedPosition for each recording.
08.05.2007
- added RecordingsThumbnail class to generate a Thumbnail picture for a recording
- added generateThumbnailFilename to XBMCPlaylistFilesHelper
- added thumbnail creation and deletion routines to multicast_vcr and others
- udpating thumbnail when playcounter/position is updated…
- added “Updating recording…” console output
- added isRTP property to channelist (default value is false); you can determine if RTP header should be stripped or not for a specific channel
07.05.2007
- fixed a bug in the /xml/CurrentServiceData section that caused an exception when no EPG data was known
- added error handling to the EPG Processor Thread; after 25 errors a thread will be shut down
06.05.2007
- added /cgi-bin/zapto to http handling
- added /xml/streaminfo to http handling
- added Name2ServiceID to ChannelAndStationMapper
- added TuxboxCurrentServiceData structure and handling
- added /xml/currentservicedata method to http server
- added /xml/boxinfo method to http server
- added boxinfo data structure
05.05.2007
- several changes for debugging purposes to the YAPS multicast processor to debug a specific problem
- fixed a thread unsafe bug in multicast processor
- fixed several more thread unsafe things in multicast processor and vcrscheduler
- changed behaviour: If a streaming client now refuses to accept data packets he will be disconnected after 1 second (until timeshift is implemented)
01.05.2007
- fixed a bug in VCRScheduler that could lead to a crash on startup (was not threadsafe)
24.04.2007
- added %rendertransformation($input_url,$xslt_url)% keyword to the TemplateProcessor
21.04.2007
- fixed a memory leak in the rss generator
- added TuxBoxServices data structure
- added tuxbox /xml/services call handler to http processor
- changed the MulticastEPG source data handling so that the multicastEPG Sources are now stored in the settings.dat.xml (misc settings) file
- fixed a bug in the EPGProcessor that caused an empty CurrentlyPlayingList
- added small testing portion
- fixed some bugs in http server
- rewrote tuxbox services data structure and handling (helping hand: Andreas Heil)
18.04.2007
- reimplemented the whole Channel-Name-Picture-ServiceID-MulticastIP-MulticastPort Mapping and created a new data structure and XML file that holds that data
- added filtering functionality to the EPG Processor that filters only known channel EPG data and discards data for unkown channels
- fixed the XBMCSyncProcessor bug; I had the file deletion functionality disabled….
17.04.2007
- added the multicastedEPGProcessor Implementation, does maintain a CurrentlyRunning List but is not used yet (Implementation just for leak and stability testing)
- added new Channel/StationID mapping data structure
13.04.2007
- removed JMS/DVB subproject
- several changes to the JMS/EPG subproject to make JMS/DVB obsolete
- working EPG implementation (not yet activated) — need to get working
02.04.2007
- now displaying associated username instead of IP address in the http logfile
- added EPG Processor startup to YAPS.cs
01.04.2007
- fixed a design bug in console_output.html
- fixed a false css reference in all templates
- added JMS Namespace DVB.NET Libraries (http://www.psimarron.net/DVBNET/html/download.html)
- added EPGProcessor
30.03.2007
- fixed a bug in the XBMC Playlist File branch; XBMC Playlistfiles respect now a port number setting != default port 80
29.03.2007
- changed multicast behaviour: we don’t use RTP from now on; there’s just plain UDP
- added new EPG test data
- fixed a bug in multicast_vcr
- fixed DeleteRecordings; did not work for several versions – you can now delete scheduled recordings
- fixed a bug in the ConsoleOutputLogger that leads to a “Collection was modified after the enumerator was instantiated.” exception when the logoutput is accessed while it’s written
Source 1: http://www.dotnetcommunity.de/yaps/yaps_daily_source.zip
Source 2: http://www.schrankmonster.de/PermaLink,guid,71a24ec5-8576-4fe6-b5f5-8607017e5f00.aspx