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 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 ) - 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 - added patch for DVD subtitles. Thanks to Stuart Daines - fixed memory leak in dxr3osd.c - Thanks to Miika Pekkarinen - 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 - added Finnish language support - thanks to Hannu Savolainen - added Swedish language support - thanks to Tomas Prybil 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 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 2008-04-06: Version 0.2.8 - 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) - Fix subtitles for VDR >= 1.5.11 (Luca Olivetti, Sami Sundell) - Include VDR 1.6+ subtitle hack patch in patches/ (Luca Olivetti) 2009-01-02: Version 0.2.9 - Update Italian translation (Diego Pierotto) - Error handling improvements (Ville Skyttä) - Add SVDRP commands for device release/reopen, audio output settings, brightness/contrast/saturation (Krzysztof Parma, Ville Skyttä) - Switch to VDR 1.6's i18n system (Ville Skyttä) - Drop support for VDR < 1.6.0 (Ville Skyttä) 200x-xx-xx: Version x.x.x - Apply brightness/contrast/saturation configuration settings when configuring the device, e.g. on VDR startup (Ville Skyttä) - Error handling improvements (Ville Skyttä) - Add French translation (#55, Michaël Nival) - Better defaults for FFmpeg and EM8300 in Makefile (#53, Ville Skyttä, Michaël Nival). - Code cleanups (Christian Gmeiner) - Add Ukrainian translation (#131, Yarema aka Knedlyk). - New SpuEncoder (Christian Gmeiner) - Fix bug #223 by adding a command line argument to enable automatic firmware loading: '-f --firmware-loading Enable automatic firmware loading' (Christian Gmeiner)