the Quake family tree

If you ever were into egoshooter / games you would come across the different game engines that are used to create games. One of them is the Quake engine which in fact is one of the most successful. This is the “family tree” of the Quake engine:

“Most games rely on enhanced versions of the original Quake engine with better lighting, more complex model support, better netcode and other modifications.”

g2750

Source: Quake

YAPS progress (epg, sap / sdp, asp.net integration,…)

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
yaps_frontpage

yaps_add_recording

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

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