VDR Plugin 'dxr3' Revision History
----------------------------------

2002-08-04: Version 0.0.1

- Initial revision.

2002-11-10: Version 0.1.0

- Rewritten Audio/Video-sync engine
- Changed OSD colors (but still limited to four colors)

2002-11-12: Version 0.1.1

- Changed Makefile (needed for vdr 1.1.15)
- The plugin should now work smoother under heavy system load
  (e.g. network traffic)

2002-12-23: Version 0.1.2
- Compiles now with gcc3.2.
- Fixed unsigned / signed bug in output thread (dxr3outputthread.c) which led
to sporadic resync (still frame and jump of about 1s).
- OSD is now as colorful as vdr with DVB-s
- OSD rescaling for channels with a lower horizontal resolution

2002-12-29: Version 0.1.3
- SPU write is now protected with a mutex by using the Dxr3AbstractionDevice.
- Fixed horizontal size detection.
- Added usleep call during still picture to reduce cpu load.
- Removed calls to WaitForSysClock in dxr3outputthread.c which led to problems
during replay on some systems (Thanks to Atte Manninen for reporting this).
- Did some minor changes to dxr3outputthread.c which hopefully will increase
reliability.
- Changed osd scale rule. Scaling now only happens if the horizontal size is
smaller than 700.

2003-01-05: Version 0.1.4
- Small bugfix in dxr3demuxdevice.c

2003-02-19: Version 0.1.5
- Support for MP3 plugin.
- Support for radio channels. Requested by Richard P. (???) who send me a
  sample code ... thanks.
- Some fixes to get along with corrupt pes data (which should actually be
  solved in a lower layer). Thanks to Teemu Rantanen.
- Changed sync buffer size during replay to reduce "jumps" in cutted streams.
  Thanks to Atte Manninen for the idea.
- Support for still frame handling. Now it is possible to move the editing
  marks with visible corresponding i-frames. Unfortunately this doesn't seem to
  work with finish dvb streams.
- Some tuning to reduce cpu load during replay.

2003-02-25: Version 0.1.6
- Added black frames between channel switches (which solves the frozen picture 
  'problem' when using the mp3-plugin, too).
- Increased thread priority of output threads which improves live stream
  quality on my system (K6II 350).

2003-03-23: Version 0.1.7
- Added unix domain server interface to close and reopen dxr3 devices without
  stopping vdr (see dxr3_ux_client.pl script on how to use this).
  Requested by Atte Manninen, thanks to him and Teemu Rantanen for testing
  and fixing some problems.
- Added support for external player mode.
- Some cosmetic changes.
- Some changes to reduce cpu load.
- Added workaround handling for osd crash (driver patch necessary; patch with
  em8300_patch.diff).
  Thanks to Teemu Rantanen and Malcolm Caldwell for testing this.
- Added buffered output for mp3-plugin audio data. This seems to improve audio
  quality significantly.
- Reduced count of audio errors (wrong data rate).
- Changed channel switch behavior (to remove audio disturbances => channel
  switching is a little bit slower now).
- Added exception handling for defect pes streams.
- Added more checks by introducing a new pes parsing class.
- Fixed buffer overrun problem. Because of the missing pll control a buffer
  overrun happens after staying for a long time on the same channel. In older
  versions the output stopped after a buffer overrun. Now the buffer will be
  cleared and the output will continue after about a second.
- New buffer handling in PlayVideo.

2003-03-23: Version 0.1.7a
- Bugfix in A/V-engine for audio output with less dropouts

2003-04-28: Version 0.1.8
- Added support for dvd-plugin (subtitles doesn't work properly so far).
- Added setup parameter to define the dxr3-card which shall be used  by vdr
  (thanks to Tobias Haustein).
- Added setup parameter to force letter box mode (for wrong aspect ratio coded
  in pes-stream). This parameter is not saved.
- Added support for video format setup parameter (no WSS support).
- Fixed external player support (thanks to Seppo Ingalsuo).
- Added volume support (thanks to Teemu Rantanen).
- Fixed I-Frame display problem (cutting and fast forward/backwards in some
  streams). Those who have problems with fast forward/backward might want to
  patch vdr (use vdr_iframe_patch.diff / for vdr-1.1.29).
- Reduced memory consumption.
- Fixed problem with digital output setup parameter.
- Fixed wrong bit error detection.
- Changed bit error handling.

2003-04-28: Version 0.1.8a
- Second trial to fix external player support (thanks to Jarkko Santala)

2003-05-07: Version 0.1.9
- Added support for AC3 streams (based on classes of
  the AC3overDVB Patch maintained by Stefan Huelswitt).
- Added DXR3 main menu entry. It's now possible to:
    - Reset DXR3-hardware.
    - Toggle Force LetterBox.
    - Switch to Digital Output.
    - Switch to AC3 Output (when already listening to digital output).
- Added short ac3 information text on channel switch.
- Reduced analog audio disturbances.
- Fixed audio initialization problem.

2003-05-07: Version 0.2.0
- Fixed compatibility problem with vdr version 1.1.31 and higher.
- Fixed analog audio problem (spurious disturbances).
- Added first cut mpeg1 support: It works quite good with vcd plugin. As far
  as I know this doesn't work reliable together with analog plugin. Thanks to
  Gavin Hamill for testing support and investigations with analog plugin.
  No osd scaling for mpeg1 at the moment.
- Changed channel switch behavior with respect to mpeg1 support (it doesn't
  seem to be possible to switch between mpeg1 and mpeg2 without closing and
  reopening the video device).
- Improved lib sync.

2003-08-10: Version 0.2.1
- Added setup entry to switch between ntsc and pal. This setting becomes active
  after restarting vdr and reseting the dxr3 card, respectively.
- Fixed uninitialized variable m_audioMode in dxr3abstractiondevice.c. Thanks 
  to Jon Burgess.
- Fixed incorrect ioctl-problem. Thanks to Jon Burgess.
- Fixed wrong scaled osd problem when starting vdr without live stream.
- Fixed external player problem when return to dxr3 output after using ac3
  output. Thanks to Jarkko Santala for reporting this one.
- Fixed wrong assert-call. Thanks to Andre Neumann.

2004-01-04: Version 0.2.2

- Some initialization fixes. Thanks to Jon Burgess.
- Added patch from Teemu Rantanen to emergency exit if
  the plugin is not able to recover from dxr3 driver crash.
- Fixed some osd problems (Elchi, Games, etc.).
- Changed Makefile to support vdr-1.3.0.

2004-06-22: Version 0.2.3-alpha1 (only for vdr-portal.de)

- we are using now <linux/em8300.h> instead of "em8300.h"
- updated multichannelaudio.h/c with newest AC3overDVB-Patch-Source (0.2.6)
- switched to new osd routines for vdr-1.3.7
- added dxr3singleton.h
- new interface to work with ffmpeg (chagned include to <avcodec.h>)
- added a lot of commments and cosmetic code cleanups
- using everywhere std::string - makes life nicer
- moved dxr3absdevice to dxr3interface
- rewritten some parts of dxr3interface
- added anti-glinsch-when-fast-forward-and-then-play-patch ;)
- killed DIAG and added a global logger, which is used only in
  a few functions and not in every like DIAG
- removed cDxr3StatusMonitor - i dont know why we need this
- cleaned out unneeded includes
- fixed memory leak in cDxr3Interface::UploadMicroCode:
  If uploading of the microcode failed, the allocated memory wasn't
  freed.
- If we are changing the audiooutput now the plugin will call an overworked
  AudioRepoen function, which does not shutdown the whole card.
- Things like VIDEOMODE and AUDIOMODE are now set only ONCE on plugin start!
- added check if memory in cDxr3SyncBuffer is allocated correct
- introced a 'ToDo-System'.
  in every *.c file there can be something like this at the top of the file:
  /*
	ToDo:
		- cDxr3SyncBuffer::Push: XXX This is only a workaround until
                  a sufficient control algorithm is implemented
  */

  So it is easier to keep track of stuff, which needs more work.
- some small changes in dxr3colormanger.h/c
- some small changes in dxr3pesframe.h/c
- some small changes in spuenc.h/c
- killed spu_dump in spuenc.h/c
- renamed spuenc.h/c to dxr3interface_spu_encoder.h/c
- changed dxr3audiodecoder to support the new ffmpeg interface
- renamed dxr3absspu/dxr3absspulist to dxr3interace_spu/dxr3interace_spu_list
- volume control logarithmic instead of linear. 
  This is a more natural sounding way of controlling the 
  volume. Thanks to Jon Burgess <mplayer@jburgess.uklinux.net>
- added patch for DVD subtitles. Thanks to Stuart Daines <s.daines@ntlworld.com>
- fixed memory leak in dxr3osd.c - Thanks to Miika Pekkarinen <miipekk@ihme.org>
- added Tools namespace, which has a fixed Rgb2YCrCb function in it
  (dxr3tools.h)
- kicked out Cmd in dxr3osd.h/c
- added dxr3i18n.h/c
- added Portuguese language support - thanks to Paulo Lopes <pmml@netvita.pt>
- added Finnish language support - thanks to Hannu Savolainen
  <hannu@opensound.com>
- added Swedish language support - thanks to Tomas Prybil <tomas@prybil.se>
NOTE: I havent found time to include all of the languages, will be done in pre2
- kicked out - i hope - some unneeded usleeps
- rewrote cSPUEncoder: Now we imitate the Cmd funtion form the dvb drivers. So
  we can use now the normal osd functions form dvbosd.c :)
- added support for vdr-1.3.11
- added videomode pal 60


2004-07-29: Version 0.2.3-pre2 (now aviable on SourceForge)

- fixed audio and video problems
- works now with vdr < 1.3.7
- added YUV2Rgb int dxr3tools.h (for dxr3spudecoder)
- added some more debug infos in dxr3outputthread.c
- added const keyword in dxr3configdata.h
- added EM8300 include define in Makefile
- added debuglevels, so we can define how much we want to log
- assimilated spudecoder from vdr's dvbspu.c/h -> nice nav in dvds
- kicked out cDxr3InterfaceSpu from dxr3interface.c/h
- a little fix for cDxr3Interface::ResampleVolume
- kicked out dxr3interface_spu.c/h and dxr3interface_spu_list.c/h, because
  the new spudecoder dont need it anymore.
- added dxr3cpu.c/h to get some infos about the cpu
- added dxr3memcpy.c/h to get a little speedup - i hope
- maybe a little audiofix: lastHeader in cDxr3AudioDecoder will now set to 0
  with the constr. and not via Init()-function. So there should be less audio
  scratches now.
- osd works now on every resolution (viva, viva plus,...)
- added main-menu-entry
- added in some parts some memory allocation tests
- added fix for Makefile from vdr-portal.de -> should compile on more machines
- added Tools::WriteInfoToOsd(...) - now some info like "Releasing devices"
  are shown on the osd again
- fixed dxr3osd_subpicutre.c - thanks to Paavo Hartikainen <pahartik@sci.fi>


2005-08-07: Version 0.2.3

- fixed output of anamorphic video when tv aspect is configured to 16:9 in
  DVB setup menu (Seppo Ingalsuo)
- rewrote i18n support, improved Finnish translation and other bits
  (Christian Gmeiner, Ville Skyttä)
- fixed void cDxr3Interface::SetAudioDigitalPCM() (Stephan Skrodzki)
- added many comments into source (Christian Gmeiner)
- using doxygen for docs (Christian Gmeiner)
- made path to microcode configurable in Makefile (Sascha Volkenandt)
- better default directories in Makefile (Christian Gmeiner, vdr-wiki.de folks)
- use std:: instead of namespace std
  (bug #1044069, Christian Gmeiner, Ville Skyttä)
- fixed #includes: moved #include "dxr3osd.h" from dxr3interface.h to
  dxr3interface.c, removed not needed #includes (Christian Gmeiner)
- added support for VDR 1.3.13 and later (Luca Olivetti, Peter Dittmann)
- fixed checking of return falues when opening the em8300-* fifos
  (Christian Gmeiner, Ville Skyttä)
- removed explicit linking with zlib (Christian Gmeiner)
- compiles now with 3.4.x gcc's (Christian Gmeiner, Ville Skyttä)
- use $CXX for generating dependencies instead of hardcoded g++ (Ville Skyttä)
- added descriptions to audio and video output threads
  (#1112673, Ville Skyttä)
- fixed audio and video thread deletion in demux device destructor
  (#1112674, Ville Skyttä)
- made "all" the default target in Makefile (Ville Skyttä)
- avoid hang in pause mode with VDR >= 1.3.18 (Luca Olivetti)
- avoid high CPU usage in pause mode (Luca Olivetti, Klaus Schmidinger)
- improved GetSTC(): fixes DVB subtitles sync problems (Mikko Tuumanen)
- limit OSD flush rate: prevents OSD from going berserk due to being
  refreshed too often, see plugin settings (Luca Olivetti, Ville Skyttä)
- borrow better OSD scaling routines from the Xine plugin (Luca Olivetti)
- improve original OSD scaler for small resolutions (#1014339, Luca Olivetti)
- improve error checking, eliminate some compiler warnings (Ville Skyttä)
- fix OSD going pink after returning from the MPlayer plugin; while at it,
  remove dxr3palettemanager.* and use VDR's cPalette
  (Ville Skyttä, Martin Cap, Luca Olivetti)
- remove unused dxr3unixserversocket.* from 0.2.x (Ville Skyttä)
- fix sound with the MP3 plugin and VDR >= 1.3.18 (Antti Järvinen)
- set aspect ratio and audio mode to unknown when releasing devices, fixes
  the setup eg. after returning from the MPlayer plugin
  (Luca Olivetti, Kimmo Vuorinen)
- rework OSD color management, fixes eg. color "bleeding"
  (Luca Olivetti, Thomas Husterer)
- sync SPU decoder with VDR 1.3.23 (Ville Skyttä)
- register only needed ffmpeg codec(s) (Marco Schlüßler)
- fix crash at exit (Marco Schlüßler)
- add support for mandatory subtitles (Marco Schlüßler)
- avoid crashing with some corrupted streams (Jon Burgess)
- remove optimized memcpy routines and related stuff, just use the glibc
  one (Ville Skyttä)
- clean up dead code for old VDR versions that hasn't worked for some time
  anyway, VDR >= 1.3.11 is now required (Ville Skyttä)
- improve recovery and avoid lockups caused by bad streams (Jon Burgess)
- use VDR's facilities for logging (no more dxr3plugin.log), make it less
  noisy (Ville Skyttä, Christian Gmeiner)
- add setup option for hiding the main menu entry (Ville Skyttä)
- implement stereo/left/right audio channel switching (Malcolm Caldwell)
- limit card number to sane values in config (Ville Skyttä)
- added Italian, Spanish and Catalan translations (Luca Olivetti)
- don't override OSD's {Save,Restore}Region with dummies (Luca Olivetti)

2005-08-27: Version 0.2.4

- don't abort with lpcm frames containing an odd number of bytes, drop
  the frame instead (Ville Skyttä)
- fix crash on audio sync buffer push timeouts (Jon Burgess)
- make the device class call cDevice's Mute() and Clear() (Ville Skyttä)

2006-01-08: Version 0.2.5

- sync default microcode location with em8300 0.15.2+ (Ville Skyttä)
- improve device reset and error recovery, try to preserve aspect ratio and
  audio mode etc (Luca Olivetti, Ville Skyttä)
- remove image grab code, it's broken (crashes vdr) and would cause
  maintenance problems with various 1.3.x vdr versions (Ville Skyttä)

2006-04-30: Version 0.2.6

- adapt to VDR 1.3.42-1.4.0, oldest supported is now 1.3.42 (Ville Skyttä)
- clean up leftovers from the image grab code removal in 0.2.5 (Ville Skyttä)
- add Czech i18n placeholders (Ville Skyttä)
- be less noisy about audio mode (non-)changes (Ville Skyttä)
- add work-in-progress AC3 patch to patches/ (Agneau Egare, Ville Skyttä)
- use VDR's thread activity control features instead of our own (Luca Olivetti)

2007-05-08: Version 0.2.7

- add Polish translation (Mikolaj Tutak)
- sync "make install" with VDR 1.4.2-2 (Ville Skyttä)
- use cCondWait::SleepMs() instead of usleep (Ville Skyttä)
- avoid deprecation warnings with newish libavcodec (Ville Skyttä)
- add brightness/contrast/saturation settings to setup (Ville Skyttä)
- apply more settings immediately from setup menu (Ville Skyttä)
- apply AC3 and WSS patches which were in patches/ in previous releases
- add setup option for enabling/disabling WSS (Ville Skyttä)
- various minor tweaks

200x-xx-xx: Version x.x.x

- Fix build with ffmpeg >= ~2007-07 (Ville Skyttä)
- Fix build with VDR >= 1.5.9 (Ville Skyttä)
- Drop support for VDR < 1.4.0 (Ville Skyttä)
- Implement OSD level for VDR >= 1.5.9 (Luca Olivetti)
