1. 05 Dec, 2011 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.22 · 5a28d999
      Klaus Schmidinger authored
      Original announce message:
      VDR developer version 1.7.22 is now available at
      A 'diff' against the previous version is available at
      MD5 checksums:
      b9c0fe1aac8e653c0d0234bc72c2bb2c  vdr-1.7.22.tar.bz2
      868bb332342c9a78beda17cc85e0bb93  vdr-1.7.21-1.7.22.diff
      This is a developer version. Even though I use it in my productive
      environment. I strongly recommend that you only use it under controlled
      conditions and for testing and debugging.
      From the HISTORY file:
      - Fixed scaling subtitles in case the primary device's GetVideoSize() function doesn't
        return actual values (thanks to Luca Olivetti).
      - The DiSEqC codes are now copied in the call to cDiseqc::Execute().
      - VDR now supports "Satellite Channel Routing" (SCR) according to EN50494 (based on
        the "unicable" patch from Lars Hanisch).
        Since "Unicable" is a registered trademark and stands for only one of many
        implementations of SCR, the following changes have been made compared to the patch,
        which need to be taken into account by people who have set up their system using
        the patch:
        - The 'U' parameter in the diseqc.conf file has been changed to 'S' ("Scr").
        - The configuration file name has been changed from "unicable.conf" to "scr.conf".
      - Updated sources.conf (thanks to Arthur Konovalov).
      - The SVDRP command LSTC now also accepts channel IDs (thanks to Dominic Evans).
      - Fixed handling DVB subtitles and implemented decoding textual DVB subtitles (thanks
        to Rolf Ahrenberg).
      - Added cap_net_raw to the capabilities that are not dropped (thanks to Dominic Evans).
      - Fixed setting the start time of an edited recording (thanks to Christoph Haubrich).
      - Temporarily switching free devices to transponders in order to have their running
        status updated is now done by marking the devices as "occupied" for a certain
        amount of time.
      - The new setup options "LNB/Device n connected to sat cable" can be used to define
        which DVB-S devices are connected to the same sat cable and are therefore "bonded".
        This obsoletes the LNBSHARE patch. Users of the LNBSHARE patch will need to newly
        set up their sat devices with the above options.
      - Fixed a crash when deleting a recording while cutting it (thanks to Ville Skyttä).
      - Fixed several spelling errors (thanks to Ville Skyttä).
      - The new SVDRP command UPDR can be used to trigger an update of the list of
        recordings (thanks to Lars Hanisch).
      - Added generating a pkg-config file to the Makefile (thanks to Ville Skyttä).
      - Removed the '.pl' suffix from all scripts (thanks to Ville Skyttä).
      - Changed the default location for the LIRC socket to /var/run/lirc/lircd (thanks
        to Ville Skyttä).
      - Added file name and line number to LOG_ERROR_STR() (thanks to Rolf Ahrenberg).
      - Replaced all calls to sleep() with cCondWait::SleepMs() (thanks to Rolf Ahrenberg).
      - Fixed a crash with malformed SI data (patch from vdr-portal).
  2. 04 Sep, 2011 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.21 · 0c96d6b6
      Klaus Schmidinger authored
      Original announce message:
      VDR developer version 1.7.21 is now available at
      A 'diff' against the previous version is available at
      MD5 checksums:
      7300bfd997db1a848bd774fefe4aec80  vdr-1.7.21.tar.bz2
      c4e745939f31543dd607b97d58fc86be  vdr-1.7.20-1.7.21.diff
      This is a developer version. Even though I use it in my productive
      environment. I strongly recommend that you only use it under controlled
      conditions and for testing and debugging.
      This version contains functions to determine the "signal strength"
      and "signal quality" through cDevice. If you are using a DVB card that
      contains an stb0899 frontend chip (like the TT-budget S2-3200) you may
      want to apply the patches from
      to the LinuxDVB driver source in order to receive useful results from
      that frontend.
      From the HISTORY file:
      - Fixed detecting frames for channels that split frames into several payloads
        (reported by Derek Kelly).
      - Now initializing Setup.InitialChannel to an empty string to avoid problems in
        case there is no setup.conf.
      - The start time of an edited recording is now set to the time of the first
        editing mark (thanks to Udo Richter).
        This obsoletes the CUTTIME patch.
      - Direct access to the members start, priority, lifetime, and deleted of cRecording
        as well as to position and comment of cMark is now deprecated. Plugin authors
        should switch to the new access functions for these members. For now the macro
        __RECORDING_H_DEPRECATED_DIRECT_MEMBER_ACCESS is defined in recording.h, which
        exposes these members, so that existing plugins will still compile. Comment out
        this #define to check whether a particular plugin needs to be modified.
        This #define may be removed in a future version.
      - The new functions cRecording::NumFrames() and cRecording::LengthInSeconds() return
        the number of frames and length (in seconds) of a recording (suggested by Steffen
      - The subtitle PIDs are now stored in the channels.conf file as an extension to the
        TPID field (thanks to Rolf Ahrenberg).
      - The new function cDevice::ProvidesEIT() is used to determine whether a device can
        provide EIT data and will thus be used in cEITScanner::Process() to receive EIT
        data from the channels it can receive (suggested by Rolf Ahrenberg). Note that by
        default it is assumed that a device can't provide EIT data, and only the builtin
        cDvbDevice returns true from this function.
      - The Audio and Subtitles options are now available through the Green and Yellow
        keys in the Setup/DVB menu (thanks to Rolf Ahrenberg). This is mainly for remote
        controls that don't have dedicated keys for these functions.
      - The SVDRP command HITK now accepts multiple keys (up to 31).
      - The Recordings menu now displays the length (in hours:minutes) of each recording
        (thanks to Rolf Ahrenberg). Note that the "new" indicator has been moved from the
        recording time to the length column. This new format is also used by the SVDRP
        command LSTR, so in case you have an application that parses the LSTR output,
        you will need to adjust it to the new format.
      - The dvbsddevice plugin now supports the new option --outputonly, which disables
        receiving on SD FF devices and uses the device only for output (thanks to Udo
      - Fixed detecting frames on radio channels (reported by Chris Mayo).
      - Revoked the changes to cFrameDetector that have been introduced in version 1.7.19.
        Detecting frames in case the Picture Start Code or Access Unit Delimiter
        extends over TS packet boundaries is now done by locally skipping TS packets
        in cFrameDetector.
  3. 16 Aug, 2011 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.20 · 7df66b05
      Klaus Schmidinger authored
      Original announce message:
      VDR developer version 1.7.20 is now available at
      A 'diff' against the previous version is available at
      MD5 checksums:
      eda2911fff1715ba5b1482b20ad18188  vdr-1.7.20.tar.bz2
      a8f5bcaf3294cc9fce87283a618d5ce1  vdr-1.7.19-1.7.20.diff
      This is a developer version. Even though I use it in my productive
      environment. I strongly recommend that you only use it under controlled
      conditions and for testing and debugging.
      This version contains functions to determine the "signal strength"
      and "signal quality" through cDevice. If you are using a DVB card that
      contains an stb0899 frontend chip (like the TT-budget S2-3200) you may
      want to apply the patches from
      to the LinuxDVB driver source in order to receive useful results from
      that frontend.
      From the HISTORY file:
      - Added some missing 'const' to tChannelID (reported by Sundararaj Reel).
      - The isnumber() function now checks the given pointer for NULL (thanks to Holger
      - Now checking Setup.InitialChannel for NULL before using it (reported by
        Christoph Haubrich).
      - cSkins::Message() now blocks calls from background threads (thanks to Michael
        Eiler for reporting a crash in such a scenario).
      - Fixed the return value of the svdrpsend.pl script in case of an error (thanks to
        Jonas Diemer).
      - Increased MAXCAIDS to 12 (thanks to Jerome Lacarriere).
      - Fixed handling DiSEqC codes (thanks to Mark Hawes for reporting the bug, and
        Udo Richter for suggesting the fix).
      - Added a mechanism to defer timer handling in case of problems (reported by
        Frank Niederwipper).
      - Fixed distortions that happened when splitting recording into several files
        (was a side effect of "Fixed detecting frames in case the Picture Start Code or
        Access Unit Delimiter extends over TS packet boundaries" in version 1.7.19).
        cRecorder::Action() now buffers TS packets in case the frame type is
        not yet known when a new payload starts. This adds no overhead for channels
        that broadcast the frame type within the first TS packet of a payload; it only
        kicks in if that information is not in the first TS packet.
      - Fixed handling the channelID in cMenuEditChanItem (thanks to Udo Richter).
      - cStringList::Sort() can now be called with a boolean parameter that controls
        case insensitive sorting (suggested by Sundararaj Reel).
      - Now scanning new transponders before old ones, to make sure transponder changes
        are recognized (thanks to Reinhard Nissl).
      - Implemented static cIndexFile::IndexFileName().
      - The length (as number of frames) of a recording's index file can now be determined
        by a call to cIndexFile::GetLength() (suggested by Christoph Haubrich).
      - Fixed some crashes in subtitle display (thanks to Rolf Ahrenberg).
      - Made DELETENULL() thread safe (reported by Rolf Ahrenberg).
      - The pic2mpg script of the 'pictures' plugin now generates HD images (thanks to
        Andre Weidemann for his support in using convert/ffmpeg). The old SD version is
        still available as pic2mpg-sd.
      - Added a mutex to protect cOsd::Osds from simultaneous access from different threads
        (reported by Rolf Ahrenberg).
      - The cutter now sets the 'broken link' flag for MPEG2 TS recordings (thanks to
        Oliver Endriss).
      - Fixed language code entry for Portuguese.
      - The new command line options --filesize (suggested by Marco Göbenich) and --split
        can be used together with --edit to set the maximum video file size and turn on
        splitting edited files at the editing marks. These options must be given before
        --edit to have an effect.
      - cTimeMs is no longer initialized to the current time if the value given to the
        constructor is negative (avoids the "cTimeMs: using monotonic clock..." log message
        before VDR's starting log message).
  4. 19 Jun, 2011 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.19 · bd61fee1
      Klaus Schmidinger authored
      Original announce message:
      VDR developer version 1.7.19 is now available at
      A 'diff' against the previous version is available at
      MD5 checksums:
      1eb04ecdc2b11ab8641ebfaa2cb93f42  vdr-1.7.19.tar.bz2
      db16ce7bb51e0db837ed56ef4744a67e  vdr-1.7.18-1.7.19.diff
      This is a developer version. Even though I use it in my productive
      environment. I strongly recommend that you only use it under controlled
      conditions and for testing and debugging.
      This version introduces functions to determine the "signal strength"
      and "signal quality" through cDevice. If you are using a DVB card that
      contains an stb0899 frontend chip (like the TT-budget S2-3200) you may
      want to apply the patches from
      to the LinuxDVB driver source in order to receive useful results from
      that frontend.
      Since apparently the various frontend drivers return different maximum
      values in their FE_READ_SIGNAL_STRENGTH and FE_READ_SNR functions (some
      deliver a value in the range 0x0000...0xFFFF, while others return values
      as "dB/10" or "dBm/10" (the latter with an offset to make the value positive,
      since the parameter is unsigned), the functions cDvbTuner::GetSignalStrength()
      and cDvbTuner::GetSignalQuality() use the device's "subsystem ID" to
      map these values into the range 0...100, which is the normalized return
      value of these functions.
      Take a look at these two functions and maybe remove the comment characters
      from the lines
      in dvbdevice.c to get some debug output if your device doesn't return any
      directly useful values and may have to be added appropriately to the
      'switch (subsystemId)' statement.
      The channel display of the 'sttng' skin uses these values to implement
      a signal strength/quality display.
      From the HISTORY file:
      - Fixed cString's operator=(const char *String) in case the given string is the
        same as the existing one (thanks to Dirk Leber).
      - Avoiding a gcc 4.6 compiler error in the skincurses plugin (thanks to Tobias Grimm).
      - TsGetPayload() now checks if there actually is a payload in the given TS packet
        (reported by Dirk Leber).
      - Now sorting the source file names in the call to xgettext, to make sure the results
        are not dependent on the sequence of the files.
        Plugin authors may want to change the line containing the xgettext call in their
        Makefile accordingly by changing "$^" to "`ls $^`".
      - The primary device is now only avoided for recording if it is an old SD full
        featured card. This is done through the new function cDevice::AvoidRecording().
      - Subtitle PIDs are now also decrypted (thanks to Reinhard Nissl).
      - Fixed a possible race condition in cDiseqc::Execute() (reported by Marco Göbenich).
        The return value of cDiseqcs::Get() is now const, so plugin authors may need to
        adjust their code if they use this function.
      - The new functions cDevice::SignalStrength() and cDevice::SignalQuality() can be
        used to determine the signal strength and quality of a given device (thanks to
        Rolf Ahrenberg for some input on how to use BER and UNC values to generate a
        "quality" value).
      - The 'sttng' skin now displays two colored bars at the bottom of the channel display,
        indicating the strength (upper bar) and quality (lower bar) of the received signal.
        The number to the left of these bars indicates the actual device the current
        channel is being received with.
      - Fixed detecting frames in case the Picture Start Code or Access Unit Delimiter
        extends over TS packet boundaries (reported by Johan Andersson).
        In order to fix this, the semantics of cFrameDetector had to be changed a little.
        See cRecorder::Action() and cIndexFileGenerator::Action() on how to use the new
        cFrameDetector::NewPayload() function.
      - The frame detector now only starts collecting PTS values after it has seen the
        first I-frame, otherwise it might get MaxPtsValues values and stop analyzing
        even though the incoming data is still garbage (reported by Derek Kelly).
      - The info file of a recording is now only overwritten with a new fps value if
        that new value is not the default value (thanks to Derek Kelly for reporting a
        problem with the fps value being overwritten in case a recording was interrupted
        and resumed, and the fps value could not be determined after resuming recording).
      - The initial channel is now stored by the channel ID in the setup.conf file, in
        order to avoid problems in case channels are reordered or deleted (reported by
        Lars Bläser).
      - Added support for "content identifier descriptor" and "default authority descriptor"
        to 'libsi' (thanks to Dave Pickles).
  5. 17 Apr, 2011 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.18 · 8b9350c0
      Klaus Schmidinger authored
      - Changed -O2 to -O3 in Make.config.template (reported by Matti Lehtimäki).
      - Added a missing 'default' case in cPixmapMemory::DrawEllipse().
      - Fixed some direct comparisons of double values.
      - Fixed detecting frames on channels that broadcast with separate "fields" instead
        of complete frames.
      - Made updating the editing marks during replay react faster in case the marks
        file has just been written (with a patch from Udo Richter).
      - Fixed horizontal scaling of subtitles (reported by Reinhard Nissl).
      - Stripped the note "The data returned by this function is only used for informational
        purposes (if any)" from the description of cDevice::GetVideoSize(). The VideoAspect
        is now used to properly scale subtitles.
      - Fixed cUnbufferedFile::Seek() in case it is compiled without USE_FADVISE (thanks
        to Juergen Lock).
      - Fixed the Language header of the Serbian translation file (thanks to Ville Skyttä).
      - Added anti-aliasing when upscaling bitmaps, which improves the display of SD subtitles
        when replayed on an HD OSD (thanks to Reinhard Nissl for his help in debugging).
      - Renamed cBitmap::Scale() to Scaled(), because it doesn't modify the bitmap itself,
        but rather returns a scaled copy.
      - Fixed the description of cReceiver in PLUGINS.html, regarding detaching a receiver
        from its device before deleting it (reported by Winfried Köhler). This change in
        behavior was introduced in version 1.5.7.
      - Fixed scaling subtitles in case the OSD size is exactly the same as the display
        size of the subtitles.
      - Added a missing initialization to sDvbSpuRect (reported by Sergiu Dotenco).
      - Replaced "%lld" and "%llX" print format specifiers with "PRId64" and "PRIX64" to
        avoid compiler warnings with gcc 4.5.2 (thanks to Sergiu Dotenco).
        On a personal note: I find it a step in the totally wrong direction that there
        have been macros introduced to work around this problem in the first place. There
        should have been "real" format specifiers defined that address this. These macros
        are nothing but an ugly workaround.
      - Added Cancel(3) to ~cTrueColorDemo() in the "osddemo" plugin (thanks to Reinhard Nissl).
      - Added a missing font deletion in cTrueColorDemo::Action() in the "osddemo" plugin
        (thanks to Reinhard Nissl).
      - Fixed a buffer overflow in cFont::Bidi() (thanks to Reinhard Nissl).
      - Added HD stream content identifiers to vdr.5 (thanks to Christoph Haubrich).
      - Made cRecordingInfo::Read(FILE *f) private to avoid calls to it from outside
        cRecordingInfo or cRecording (reported by Mika Laitio).
      - The dvbhddevice plugin is now part of the VDR distribution archive (thanks to
        Andreas Regel).
      - Removed an obsolete local variable in dvbsdffosd.c (thanks to Paul Menzel).
      - Fixed a possible NULL pointer dereference in osddemo.c (reported by Paul Menzel).
      - Now using pkg-config to get fribidi, freetype and fontconfig cflags and libs (thanks
        to Ville Skyttä).
      - The Makefile now also installs the include files (thanks to Ville Skyttä).
      - Added handling of "ANSI/SCTE 57" descriptors (thanks too Rolf Ahrenberg).
      - Avoiding an unecessary call to Recordings.ResetResume() (thanks to Reinhard
  6. 19 Mar, 2011 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.17 · 5619c060
      Klaus Schmidinger authored
      - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
      - Fixed following symbolic links in RemoveFileOrDir() (cont'd) (thanks to
        Steffen Barszus).
      - Changed the description of cDevice::GetSTC() to make it mandatory for devices
        that can replay.
      - Removed the check for positive STC values from cDvbSubtitleConverter::Action().
      - Added cString::operator=(const char *String) (suggested by Antti Seppälä).
      - Some spelling fixes (thanks to Ville Skyttä).
      - Passing package name and version to xgettext (thanks to Ville Skyttä).
      - Made 'dist' target dependent on up to date *.po (thanks to Ville Skyttä).
      - Added Language and fixed Language-Team header of *.po (thanks to Ville Skyttä).
      - Updated the Lithuanian OSD texts (thanks to Valdemaras Pipiras).
      - Fixed detecting frames on channels that broadcast with 50 or 60 fps.
        This avoids artifacts during fast forward/rewind when replaying recordings from such
        channels. To fix the index of existing recordings from such channels, just delete the
        'index' file of the recording and VDR will generate a new one the next time you play it.
        You should also change the line "F 25" to "F 50" in the 'info' file of that recording.
      - Added support for "registration descriptor" to 'libsi' and using it in pat.c (thanks
        to Rolf Ahrenberg).
      - Fixed unjustified log entries about changed channel pids (reported by Derek Kelly).
      - Added an include of VDR's 'Make.global' to libsi's Makefile (thanks to Rolf
      - Removed displaying the "contents" information from the "Classic VDR" and
        "ST:TNG Panels" skins, because it is often wrong and nothing but irritating.
      - Added typecasts to avoid gcc 4.5 warnings in switch statements on eKeys
        variables where additional 'k_...' flags are used.
      - Fixed inclusion of <stdarg.h> (thanks to Henning Heinold).
      - Changed "frame duration" to "frame rate" in vdr.5 (reported by Tobias Grimm).
      - Removing a cRemote from the Remotes list in case its initialization failed (thanks
        to Dominik Strasser).
      - Added LDFLAGS to the linker calls in the Makefiles (thanks to Joerg Bornkessel and
        Paul Menzel).
      - Now updating the 'frames per second' data in the list of recordings when a new
        recording is started that has a frame rate other than the default.
      - The include path to the freetype2 header files is now retrieved via a call to
        'pkg-config --cflags freetype2' (suggested by Andreas Oberritter).
      - The OSD now has full TrueColor support. There can be several "pixmaps" that can
        be overlayed with alpha blending. All existing skins should work out of the box
        with the TrueColor OSD - the only exception being cOsd::GetBitmap(). Since the
        TrueColor OSD doesn't use bitmaps, this function will return a dummy bitmap, which
        may not be what the plugin expects. As long as this bitmap is only used for setting
        the palette, there is no problem. However, any other operations on this bitmap will
        have no effect. See the description of the cPixmap functions in osd.h for details
        about the new functionalities.
        The "ST:TNG Panels" skin has been enhanced to automatically use the TrueColor OSD
        if available.
        The "osddemo" plugin has been extended to show some of the possibilities of the
        TrueColor OSD if it is run on a system that actually provides TrueColor support.
        Thanks to Reinhard Nissl for some valuable input, help with debugging, and an
        implementation of the AlphaBlend() function.
      - Updated the Slovakian language texts (thanks to Milan Hrala).
      - Added Serbian language texts (thanks to Milan Cvijanovic).
      - Fixed reallocating memory in the "pictures" plugin (reported by Paul Menzel, with
        input from Oliver Endriss).
      - Fixed reallocating memory in cTsToPes::PutTs() (suggested by Oliver Endriss).
      - Now checking the result of all realloc() calls.
      - Fixed setting up the 'Recordings' menu in case there are several recordings
        with exactly the same name (reported by Marcus Hilbrich).
      - Setting the audio type of language descriptors to 0x00 in the PAT/PMT generator
        (thanks to Anssi Hannula).
      - Changed the compiler optimization flag to -O3, which gives quite a performance
        boost in the AlphaBlend() function.
      - While replaying, the editing marks are now updated every 10 seconds (based on a
        patch from Manuel Reimer).
      - Now reducing the thread and I/O priority cCuttingThread::Action() to make the
        foreground process more responsive (suggested by Frank Neumann).
      - Removed checking for minimum line length of 21 characters in the LIRC receiver code
        (reported by Gerald Dachs).
      - Updated the Romanian OSD texts (thanks to Lucian Muresan).
      - Now storing the original display size when handling DVB subtitles (thanks to
        Reinhard Nissl).
      - The original display size of subtitles is now used to scale them properly when
        displaying them on an HD OSD.
  7. 19 Sep, 2010 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.16 · 58db0244
      Klaus Schmidinger authored
      - Updated the Italian OSD texts (thanks to Diego Pierotto).
      - Added missing Dtypes for ATSC (thanks to Alex Lasnier).
      - Updated the Portuguese language texts (thanks to Cristiano A. Silva).
      - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
      - Fixed the array size of Atypes in cPatFilter::Process() (thanks to
        Rolf Ahrenberg).
      - Added locking to the cCutter functions to avoid a crash in case CutRecording()
        is called from a plugin (reported by Andreas Mair).
      - Fixed DDS detection for HD resolution subtitles (thanks to Reinhard Nissl).
      - Fixed following symbolic links in RemoveFileOrDir().
      - Added support for languages that are written right-to-left (based on a patch
        from Osama Alrawab). See INSTALL for information on how to turn this on.
      - Added Arabian language texts (thanks to Osama Alrawab).
  8. 06 Jun, 2010 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.15 · c2c45d68
      Klaus Schmidinger authored
      - Added Macedonian language texts (thanks to Dimitar Petrovski).
      - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
      - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
      - Added handling of EnhancedAC3DescriptorTag (thanks to Eric Valette).
      - The default SVDRP port is now 6419 (registered with ICANN/IANA by Christian Tramnitz).
        Use '-p 2001' to switch back to the old port if necessary.
      - Updated the Italian OSD texts (thanks to Diego Pierotto).
      - cDvbDevice::ProvidesTransponder() now checks the modulation capabilities of the
        device (as far as the driver allows this).
      - Fixed cFrameDetector::Analyze() in case part of the data has been processed and
        there is less than MIN_TS_PACKETS_FOR_FRAME_DETECTOR left (reported by Derek Kelly).
      - Added a note about not deleting cDeviceHook objects to device.h.
      - Added user defined key kUser0 (suggested by Ulf Kiener).
      - Include paths are now added instead of overwriting INCLUDES in the Makefile (thanks
        to Paul Menzel).
      - The various modulation types are now taken into account when selecting a device for
        a recording or live viewing, so that devices that provide more capabilities are
      - Fixed generating PMT language descriptors for multi language PIDs (thanks to Rolf
      - Transponders that use "8psk turbo fec" (a non-standard mode used by North American
        providers) are now identified by assuming that all 8psk transponders on DVB-S use
        "turbo fec". In order to determine whether a certain device can handle "turbo fec",
        the new driver flag FE_CAN_TURBO_FEC is checked. If your device can handle "turbo
        fec", and your driver doesn't have that flag, yet, you can apply the patch from
        ftp://ftp.tvdr.de/vdr/Developer/v4l-dvb-add-FE_CAN_TURBO_FEC.diff. A temporary
        macro in dvbdevice.c defines the flag for all those who don't need this in the
        driver, so that they can continue using an unmodified driver.
        Thanks to Derek Kelly for testing this.
      - Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
      - Fixed handling "none" color entries in XPM files (thanks to Thomas Günther).
      - Fixed a crash when creating a new channel if the channel list is empty (reported
        by Halim Sahin).
      - Updated the Czech OSD texts (thanks to Radek Stastny).
      - Fixed a possible out of buffer memory access in case of bad TS data (reported
        by Rolf Ahrenberg).
      - Implemented handling of HD resolution subtitles according to v1.3.1 of
        ETSI EN 300 743, chapter 7.2.1 (thanks to Rolf Ahrenberg).
      - The EPG data now handles stream components 5 (H.264-video) and 6 (HEAAC-audio).
      - Fixed a problem with external Dolby Digital processing via the '-a' option in live
        mode and with TS recordings (reported by Christopher Reimer).
      - Added handling MPEG audio types "ISO/IEC 14496-3 Audio with LATM transport syntax"
        and "ISO/IEC 13818-7 Audio with ADTS transport syntax" (suggested by Luis Fernandes).
        See man vdr(5) on how the APID section of channels has been extended to store
        this information.
      - Added detecting channels that use service type 0x16.
      - Added full handling of the stream types of Dolby Digital pids
        (thanks to Jose Alberto Reguero).
      - The new setup option "OSD/Number keys for characters" can be used to control whether
        the number keys can be used to enter characters in a text input field (suggested
        by Stefan Huskamp).
  9. 14 Mar, 2010 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.14 · 1eb12b49
      Klaus Schmidinger authored
      - Fixed handling empty strings in cSource::FromString().
      - Assigned the source character 'I' to "IPTV" (suggested by Rolf Ahrenberg).
      - Assigned the source character 'V' to "Analog Video" (suggested by Lars Hanisch).
        This obsoletes the ANALOGTV patch.
      - Added support for ATSC devices (thanks to Alex Lasnier).
        This obsoletes the ATSC patch.
      - The "Source" item in the "Edit channel" menu now wraps around the list of sources
        (suggested by Halim Sahin).
      - Fixed editing channel parameters.
      - The new setup option "Recording/Delete timeshift recording" controls whether a timeshift
        recording is automatically deleted after viewing it.
        This obsoletes the DELTIMESHIFTREC patch.
        Note that the meaning of the values for this option is different from the DELTIMESHIFTREC
        patch: 0 means timeshift recordings are not automatically deleted (the default behavior
        as in previous versions), while 1 means to ask the user whether the recording shall be
      - Added cChannel::IsSourceType() to test if a channel's source is of a given type.
      - Changed the polarization characters in cDvbSourceParam::GetOsdItem() to uppercase.
      - The full timer file name is now displayed if it ends with "TITLE" or "EPISODE"
        (pointed out by Udo Richter).
      - Fixed "attempt to drop wrong frame from ring buffer" when skipping +/- one minute
        during replay.
      - The new setup option "Folders in timer menu" controls whether the file names in
        the timer menu are shown with their full folder path.
  10. 28 Feb, 2010 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.13 · 5ce592e5
      Klaus Schmidinger authored
      - Updated the Italian OSD texts (thanks to Diego Pierotto).
      - Changed the position of Sirius 4 to S4.8E in sources.conf (thanks to Alexander Gross).
      - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
      - Moved the declaration of cMenuCommands to menu.h, so that plugins can use it.
      - Added a note to the MANUAL, saying that adding new transponders only works if the
        "EPG scan" is active (suggested by Halim Sahim).
      - Improved handling frames at the beginning and end of a recording in cDvbPlayer for
        devices with large buffers (thanks to Reinhard Nissl).
      - Implemented cDeviceHook to allow plugins more control over which device can
        provide which transponder (thanks to Reinhard Nissl).
      - Implemented cDevice::GetCurrentlyTunedTransponder() (thanks to Reinhard Nissl).
      - Moved strictly necessary Makefile options into Make.global, which is included
        by all plugins (thanks to Paul Menzel). The Makefiles of existing plugins should be
        modified like this:
        --- PLUGINS/src/hello/Makefile  2009/10/18 14:00:07      2.1
        +++ PLUGINS/src/hello/Makefile  2010/02/06 14:50:03      2.2
        @@ -18,7 +18,7 @@
         ### The C++ compiler and options:
         CXX      ?= g++
        -CXXFLAGS ?= -fPIC -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses
        +CXXFLAGS ?= -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses
         ### The directory environment:
        @@ -26,6 +26,10 @@
         LIBDIR = ../../lib
         TMPDIR = /tmp
        +### Make sure that necessary options are included:
        +include $(VDRDIR)/Make.global
         ### Allow user defined options to overwrite defaults:
         -include $(VDRDIR)/Make.config
      - Added device definitions to the diseqc.conf file format, so that certain satellite
        positions can be limited to a given list of devices.
        This obsoletes the SOURCECAPS patch.
      - Keeping subtitles visible when pausing replay (thanks to Rolf Ahrenberg).
      - Fixed adding new transponders in case there is only a single channel in the
        channel list (reported by Halim Sahin).
      - The file name in the "Timers" menu now shows only the base name of the recording
        without the folder path (if any). Otherwise with long folder paths the actual
        recording name was not visible at all.
      - Updated the Romanian OSD texts (thanks to Lucian Muresan).
      - Exported some libsi functions (thanks to Lucian Muresan).
      - Improved scalability of the default skins.
      - Fixed the German translation of "Folder name must not contain '%c'!" (thanks to
        Frank Schmirler).
      - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
      - Plugins can now define new sources. In order to implement this, the following
        changes were made:
        + The transponder parameter string is no longer interpreted by cChannel, but rather
          stored as is and used only by the respective device. That way plugins can use a
          channel's parameter string to store arbitrary data (see vdr.5).
        + The new class cSourceParam can be used by plugins to define new sources, and to
          implement OSD items that will be used in the channel editor for editing the source
          specific parameters of a channel (see dvbdevice.c for an example of how this is
          done for the default DVB devices).
        + Purely numerical values are no longer accepted in the 'source' parameter of a
        This obsoletes the PLUGINPARAM patch.
      - Updated the Lithuanian OSD texts (thanks to Valdemaras Pipiras).
      - cSafeFile::Close() now flushes the file (suggested by Stephan Austermühle).
      - The option "Setup/DVB/Use Dolby Digital" now only controls whether Dolby Digital
        tracks appear in the "Audio" menu. Dolby Digital is always recorded.
        This obsoletes the DOLBYINREC patch.
  11. 31 Jan, 2010 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.12 · 09a17d56
      Klaus Schmidinger authored
      - Changed the EVCONTENTMASK_* macros to enums and changed "mask" to "group".
      - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
      - The "Edit timer" menu can now set the folder for the recording from a list of
        folders stored in "folders.conf".
      - Updated the Italian OSD texts (thanks to Diego Pierotto).
      - If svdrphosts.conf contains only the address of the local host, the SVDRP port
        is opened only for the local host (thanks to Manuel Reimer).
      - Renamed 'runvdr' to 'runvdr.template' and no longer copying it to the BINDIR
        in 'make install' (thanks to Martin Dauskardt).
      - Added plain text error messages to log entries from cOsd::SetAreas() (suggested
        by Rolf Ahrenberg).
      - cPalette::ClosestColor() now treats fully transparent colors as "equal"; improved
        cDvbSpuBitmap::getMinBpp() (thanks to Matthieu Castet and Johann Friedrichs).
      - The new setup option "Miscellaneous/Channels wrap" controls whether the current
        channel wraps around the beginning or end of the channel list when zapping (thanks
        to Matti Lehtimäki).
      - Fixed determining the frame duration on channels where the PTS deltas jitter by
        +/-1 around 1800.
      - The PCR pid in generated PMTs is now set to the channel's PCR pid again.
      - Fixed determining the frame duration on channels where the PTS deltas jitter by
        +/-1 around 3600.
      - The PCR pid is now recorded for channels where this is different from the video
        PID. To facilitate this, the interfaces of cTransfer, cTransferControl, cRecorder
        and cReceiver have been modified, so that the PIDs are no longer given in separate
        parameters, but rather the whole channel is handed down for processing. The old
        constructor of cReceiver is still available, but it is recommended to plugin authors
        that they switch to the new interface as soon as possible.
        When replaying such a recording, the PCR packets are sent to PlayTsVideo()
      - The files "commands.conf" and "reccmd.conf" can now contain nested lists of
        commands. See vdr.5 for information about the new file format.
  12. 06 Jan, 2010 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.11 · 939081e2
      Klaus Schmidinger authored
      - Fixed resetting the file size when regenerating the index file.
      - The new function cDevice::PatPmtParser() can be used in derived devices to access
        the PAT/PMT of the currently replayed material.
      - Updated the Italian OSD texts (thanks to Diego Pierotto).
      - The PCR pid in generated PMTs is now set to 0x1FFF ("no PCR pid") in
        cPatPmtGenerator::GeneratePmt(), because VDR doesn't record the PCR pid.
      - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
      - The 'sky' plugin is no longer part of the VDR source.
      - Improved SPU handling on devices with limited OSD capabilities (thanks to
        Matthieu Castet).
      - Several code modifications to avoid compiler warnings (thanks to Winfried Köhler).
      - Added stream type 11172 AUDIO to cPatPmtParser::ParsePmt() (thanks to Johann
      - Removed debug output of '-' from cTransfer::Receive().
      - Added defines for large files to the 'newplugin' script (reported by Udo Richter).
      - Removed the workaround for short channel names of "Kabel Deutschland", because
        apparently they now have their data according to the DVB standard (thanks to
        Johann Friedrichs).
      - Some fixes to dvbspu.[hc] (thanks to Johann Friedrichs).
      - Fixed a busy loop when moving editing marks (thanks to Johann Friedrichs).
      - Updated sources.conf (thanks to Derek Kelly).
      - Modified cCharSetConv so that it can be used to convert from "whatever VDR uses"
        to a given code (thanks to Joachim Wilke).
      - Channel names containing commas are now handled correctly in channels.conf.
        If a channel's short name contains a comma, it is replaced with a '.'.
      - cDevice now logs the device number when a new device is created.
      - Fixed handling STREAMTYPE_11172_AUDIO in cPatPmtParser::ParsePmt().
      - cParsePatPmt now has functions to retrieve the audio, dolby and subtitle pids.
      - cPatFilter::Process() now only stores CA descriptors for video and audio pids
        (thanks to Francesco Saverio Schiavarelli for reporting a problem with channels
        that have some encrypted components that VDR doesn't use).
      - cDevice::AddPid() now stores the stream type of the given pid (thanks to Andreas
      - Added cFont::FontName() and cFont::Size() (thanks to Andreas Regel).
      - cPatPmtParser now also stores the audio stream types.
      - The support for full featured DVB cards of the TT/FuSi design has been moved
        into the new plugin 'dvbsddevice'. On systems that use such a card as their
        primary device, this plugin now needs to be loaded when running VDR in order
        to view live or recorded video. If the plugin is not loaded, the card will
        be treated like a budget DVB card, and there will be no OSD or viewing
      - Fixed handling the "CA PMT" generation (revised a change not mentioned in version
        1.7.9's changes, which caused a malfunction with Conax and Viaccess CAMs).
      - Fixed stopping subtitle display when switching the primary device (thanks to
        Anssi Hannula).
        IMPORTANT NOTE TO PLUGIN AUTHORS: a plugin that implements a derived cDevice
        class that can replay video must now call the MakePrimaryDevice() function of
        its base class.
      - Fixed compiler warnings "format not a string literal and no format arguments"
        in some syslog calls (thanks to Rolf Ahrenberg).
      - The new command line options --edit and --genindex can be used to edit a
        recording or generate its index without actually starting the entire VDR
        (based on a patch from Helmut Auer).
      - Improved the description of the transponder parameters in vdr.5 (thanks to
        Winfried Köhler).
      - Avoiding setting the video stream type to 2 if the vpid is 0 (problem reported
        by Arthur Konovalov).
      - Implemented handling the "Content Descriptor" (based on a patch from Rolf
        Ahrenberg). The 'classic', 'sttng' and 'curses' skins display the textual
        representation of the content descriptors as "genre". The epg.data file stores
        the genre using the tag character 'G'.
      - Implemented handling the "Parental Rating Descriptor" (based on a patch from Rolf
        Ahrenberg). The 'classic', 'sttng' and 'curses' skins display the parental
        rating (if given) in their event displays. The epg.data file stores
        the parental rating using the tag character 'R'.
        IMPORTANT NOTE: if VDR doesn't display a parental rating, this does not
        necessarily mean that the given programme is suitable for all audiences!
      - Rearranged cEvent members to minimize memory waste.
      - After a CLRE command, no further EPG processing is now done for 10 seconds,
        so that data sent with subsequent PUTE commands doesn't interfere with data
        from the broadcasters (suggested by Helmut Auer).
      - Added support for DVB cards with multiple fontends. Note that this only
        works for DVB cards where each frontend can be used independently of all
        the others on the same adapter.
      - Fixed plugin arguments corruption with glibc 2.11 on x86_64 (thanks to
        Anssi Hannula).
  13. 22 Nov, 2009 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.10 · ea01358b
      Klaus Schmidinger authored
      - Updated the Italian OSD texts (thanks to Diego Pierotto).
      - Fixed wrong bracketing in cChannel::SubtitlingType() etc.
        (thanks to Rolf Ahrenberg).
      - Fixed not logging changes for channels that have no number
        (reported by Timothy D. Lenz).
      - Changed the project's URLs and email to tvdr.de.
      - Added Lithuanian language translations (thanks to Valdemaras Pipiras).
      - Updated Chinese language texts (thanks to Nan Feng).
      - Only checking DVB_API_VERSION to be >=5 in order to stay compileable in case
        the DVB API version number is increased (the API claims to always be backward
      - Fixed saving terminal settings when running in background (thanks to Manuel
      - Fixed cFrameDetector::Analyze() to handle video streams where the frame type
        is not detectable from the first TS packet of a frame.
      - Fixed writing the PCR pid into the PMT in cPatPmtGenerator::GeneratePmt()
        (reported by Rene van den Braken).
      - Added Slovakian language texts (thanks to Milan Hrala).
      - Fixed EntriesOnSameFileSystem() to avoid using f_fsid, which may be 0 (thanks
        to Frank Schmirler).
      - Fixed starting a recording at an I-frame.
      - Fixed generating the index for recordings from channels that put a whole
        GOP into one payload unit.
      - The index file for TS recordings is now regenerated on-the-fly if a
        recording is replayed that has no index. This can also be used to
        re-create a broken index file by manually deleting the index file and then
        replaying the recording (at least until the index file has been generated).
      - The cRingBufferLinear::Read() function now returns -1 and sets errno to
        EAGAIN if the buffer is already full.
      - Fixed handling DVB subtitles for PES recordings (thanks to Rolf Ahrenberg).
      - Added the audio id to the call of PlayAudio() in cDevice::PlayTsAudio()
        (thanks to Andreas Schaefers).
      - Fixed references to old *.vdr file names in MANUAL (reported by Arthur Konovalov).
      - Reverted "Removed limitation to PAL resolution from SPU handling" because it
        cause nothing but trouble. Besides, the core VDR doesn't use this, anyway.
      - Fixed the default value for "Pause key handling" in the MANUAL (reported by
        Diego Pierotto).
  14. 23 Aug, 2009 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.9 · 06bf4c45
      Klaus Schmidinger authored
      - Fixed storing the current OSD size in case the device has
        changed it in its setup menu (reported by Reinhard Nissl).
      - Fixed cDevice::PlayTsVideo() and cDevice::PlayTsAudio() in case only part of the
        buffer has been accepted by the device (reported by Udo Richter).
      - Changed the EIT filter setup to save a few handles on devices that do hardware
      - Fixed deleting expired timers if they have the VPS flag set, but the event they
        are assigned to doesn't have a VPS tag.
      - Fixed handling file name length on VFAT systems in case they
        contain UTF-8 characters (thanks to Rolf Ahrenberg).
      - Fixed generating CaPmts in case audio and video are encrypted using different
        ECM pids.
      - Updated vdr.1 to use the new file names in recording directories.
      - Fixed cRecordings::DelByName() to avoid compilation errors with gcc 4.4
        (thanks to Matthias Schwarzott).
      - Increased the value of MAXFRAMESIZE to better suit HD recordings (thanks to
        Reinhard Nissl).
      - Implemented full handling of subtitling descriptors (thanks to Mikko Tuumanen).
  15. 14 Jun, 2009 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.8 · ab6f2ccf
      Klaus Schmidinger authored
      - The name of the function cDevice::GetVideoSize() wasn't very well chosen
        for its purpose of defining the optimum size of the OSD for the current
        output device. Therefore a new function named cDevice::GetOsdSize() has
        been introduced (suggested by Rolf Ahrenberg). Plugin authors should
        implement this function in classes derived from cDevice, if they are able
        to replay video. cDevice::GetVideoSize() still exists and should return the
        actual size of the video material that is currently replayed. Note that
        because of the many possible aspect ratios for video material, the type
        of the Aspect parameter of GetVideoSize() has been changed to 'double',
        and the Aspect parameter in both functions is named differently, because
        it returns different values (suggested by Reinhard Nissl).
        Thanks to Oliver Endriss for his input on calculating the Aspect factor in
      - Fixed the way the OSD size is determined on full featured DVB cards (thanks
        to Oliver Endriss).
      - Increased MAXOSDHEIGHT to 1200 (suggested by Nicolas Huillard).
      - Removed limitation to PAL resolution from SPU handling.
      - Checking fd_video in cDvbDevice::GetVideoSize() to avoid error messages on
        systems with no real primary replay device (reported by Martin Neuditschko).
      - Added a note to cTsToPes::GetPes() about having to call it repeatedly, once
        it has returned a non-NULL value.
      - Added MPEG 1 handling to remux.c (thanks to Ales Jurik).
      - Fixed use of time_t in cEIT::cEIT() (thanks to Tobias Bratfisch).
      - Added missing update of lastOsdSizeUpdate.
      - EIT events are now only processed if a plausible system time is available, to
        avoid wrong handling of PDC descriptors (thanks to Tobias Bratfisch).
      - Removed unused 'synced' member from cTsToPes (reported by Christoph Haubrich).
      - Added a note to cTsToPes about all TS packets having to belong to the same PID,
        and that for video data GetPes() may only be called if the next TS packet that
        will be given to PutTs() has the "payload start" flag set (suggested by Christoph
      - Added a note about the meaning of PERCENTAGEDELTA in cRingBuffer::UpdatePercentage()
        (thanks to Rolf Ahrenberg).
      - The new setup option "Recording/Pause key handling" can be used to define
        what happens if the Pause key on the remote control is pressed during
        live tv (thanks to Timo Eskola).
      - Added a note about cFont::GetFont() not being thread-safe.
      - Fixed generating PAT/PMT version numbers in case the PIDs change during
        recording (reported by Reinhard Nissl).
      - Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
      - Fixed a memory leak when reaching the end of a recording during replay (reported
        by Reinhard Nissl).
      - Fixed calling close(-1) in cUnbufferedFile::Close() (reported by Reinhard Nissl).
      - Added a workaround for the broken linux-dvb driver header files (based on a patch
        from Tobias Grimm).
      - Fixed handling the length of DiSEqC command sequences (reported by Reinhard Nissl).
      - Fixed cOsdMenu::Display() in case the menu size has changed (thanks to
        Reinhard Nissl).
      - Added some missing 'const' keywords to avoid compilation errors with gcc 4.4
        (thanks to Ville Skyttä and Ludwig Nussel).
      - Modified cSVDRP::CmdGRAB() to avoid writing into const data (reported by
        Ludwig Nussel).
      - Fixed calculating menu colum widths in case the font has a size other than the
        default size (reported by Reinhard Nissl).
      - Added a plausibility check for the OSD percentage parameters
        to avoid problems in case the values are stored in the setup.conf
        file in a  wrong way.
      - Fixed variable types in cIndexFile (reported by Udo Richter).
  16. 03 May, 2009 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.7 · 991eda00
      Klaus Schmidinger authored
      - The new function cDevice::GetVideoSize() returns the size and aspect ratio
        of the video material currently displayed. This function is used to determine
        the proper size of the OSD. Plugin authors should implement this function in
        classes derived from cDevice, if they are able to replay video.
      - The OSD and font sizes are now defined in percent of the actual video display
        size. The maximum OSD size has been raised to 1920x1080, to allow full
        screen OSD on HD systems.
      - The OSD size is now automatically adjusted to the actual video display
        (provided the output device implements the GetVideoSize() function).
      - cFrameDetector::Analyze() now syncs on the TS packet sync bytes (thanks to
        Oliver Endriss for reporting broken index generation after a buffer overflow).
  17. 26 Apr, 2009 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.6 · 733a2bec
      Klaus Schmidinger authored
      - cDevice::PlayTs() now syncs on the TS packet sync bytes.
      - Made MAXFRAMESIZE a multiple of TS_SIZE to avoid breaking up TS packets.
      - No longer resetting the patPmtParser in cDevice::PlayTs(), because this
        caused the selected audio and subtitle tracks to fall back to the default.
      - The SVDRP command PUTE now supports reading the EPG data from a given file
        (thanks to Helmut Auer).
      - Added cThread::SetIOPriority() and using it in cRemoveDeletedRecordingsThread
        (thanks to Rolf Ahrenberg).
      - Fixed the MEGABYTE() macro to make it correctly handle parameters resulting in
        values larger than 2GB.
      - Added cDevice::NumProvidedSystems() to PLUGINS.html (was missing since it had
        been implemented).
      - Fixed distortions when switching to the next file during replay.
      - Fixed detecting the frame rate for streams with PTS distances of 1800, which
        apparently split one frame over two payload units.
      - Added missing 'const' to cRecording::FramesPerSecond() (thanks to Joachim Wilke).
      - Any TS packets in the first "frame" after a cut in an edited recording that don't
        belong to a payload unit that started in that frame now get their TEI flag set,
        so that a decoder will ignore them together with any PES data collected for that
        PID so far (thanks to Oliver Endriss for reporting chirping sound disturbences at
        editing points in TS recordings).
      - cDvbPlayer::Empty() subtracts 1 from readIndex, because Action() will first
        increment it.
      - Only storing non-zero Pts values in ptsIndex.
      - Added a note to the INSTALL file about using subdirectories to split a large
        disk into separate areas for VDR's video data and other stuff (suggested by
        Udo Richter).
  18. 12 Apr, 2009 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.5 · 1aadb31f
      Klaus Schmidinger authored
      - Fixed a hangup when replaying a TS recording with subtitles activated (reported
        by Timo Helkio).
      - Fixed handling the 'new' indicator in the recordings menu for TS recordings
        (thanks to Derek Kelly).
      - Added cap_sys_nice to the capabilities that are not dropped (thanks to Rolf
      - Updated the Italian OSD texts (thanks to Diego Pierotto).
      - Added cRecordingInfo::GetEvent() (thanks to Marcel Unbehaun).
      - Improved synchronizing the progress display, trick modes and subtitle display
        to the actual audio/video. This now works independent of any buffer sizes the
        output device might use.
        + The cBackTrace class has been replaced with cPtsIndex, which keeps track
          of the PTS timestamps of recently played frames.
        + cDevice::GetSTC() is now required to deliver the STC even in trick modes.
          It is sufficient if it returns the PTS of the most recently presented
          audio/video frame.
        + The full-featured DVB cards need an improved firmware in order to return
          proper STC values in trick modes (thanks to Oliver Endriss for enhancing the
          av7110 firmware).
      - Adapted cFrameDetector::Analyze() to HD NTSC broadcasts that split frames over
        several payload units (thanks to Derek Kelly for reporting this and helping in
      - Modified cFrameDetector::Analyze() to make it process whole frames at once, so
        that file I/O overhead is minimized during recording (reported by Günter
      - Added command line help for the '-i' option.
      - Fixed cDvbPlayer::NextFile() to handle files larger than 2GB (thanks to Jose
        Alberto Reguero).
      - Improved replay at the begin and end of a recording. The very first and very last
        frame is now sent to the output device repeatedly until GetSTC() reports that it
        has been played. cDvbPlayer::Action() no longer calls DeviceFlush() (thanks to
        Reinhard Nissl for making sure vdr-xine no longer needs this).
      - Added missing '[]' to the delete operator in cMenuEditStrItem::~cMenuEditStrItem().
      - Added missing virtual destructor to cPalette.
      - Now freeing configDirectory before setting it to a new value in
      - Fixed a crash when jumping to an editing mark in an audio recording.
      - Fixed the 'VideoOnly' condition in the PlayPes() and PlayTs() calls in
        cDvbPlayer::Action() (thanks to Reinhard Nissl).
      - cDevice::PlayTs() now plays as many TS packets as possible in one call.
      - Making sure any floating point numbers written use a decimal point (thanks to
        Oliver Endriss for pointing out a problem with the F record in the info file of
        a recording).
      - Fixed detecting the frame rate for radio recordings.
      - Added missing AUDIO_PAUSE/AUDIO_CONTINUE calls to cDvbDevice (thanks to Oliver
      - No longer writing the video type into channels.conf if VPID is 0 (thanks to
        Oliver Endriss for reporting this).
      - Improved efficiency of cEIT::cEIT() (thanks to Tobias Bratfisch).
  19. 25 Jan, 2009 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.4 · 084e16c0
      Klaus Schmidinger authored
      - Removed the '#define FE_CAN_2ND_GEN_MODULATION', since it was wrong and the
        flag is now in the driver, anyway.
      - The full-featured DVB cards are now given the TS data directly for replay
        (thanks to Oliver Endriss for enhancing the av7110 driver to make it replay
        TS data). The patch from ftp://ftp.cadsoft.de/vdr/Developer/av7110_ts_replay__1.diff
        implements this change in the driver.
        The patch av7110_v4ldvb_api5_audiobuf_test_1.diff mentioned in version 1.7.2
        is still necessary to avoid audio and video glitches on some channels.
      - Added a typecast in cUnbufferedFile::Write() to avoid an error message when
        compiling on 64 bit systems.
      - Added some missing 'const' statements to cBitmap (thanks to Andreas Regel).
      - Fixed returning complete PES packets in cTsToPes::GetPes() (thanks to Reinhard
      - Added a missing Detach() in cTransfer::Activate() (thanks to Marco Schlüßler).
      - Added clearing the TS buffers in cDevice::Detach() (thanks to Marco Schlüßler).
      - Fixed incrementing the continuity counter in cPatPmtGenerator::GetPmt() (thanks
        to Johann Friedrichs).
      - Fixed removing deleted recordings in case there is a problem. Once a recording
        caused a problem with removing, no others were removed any more and an ongoing
        recording could fill up the disk and cause other recordings to be deleted
        automatically (reported by Reinhard Nissl).
        to Make.config.template (thanks to Johann Friedrichs for pointing this out).
        Plugin authors should add this line to their Makefile or Make.config if they use
        file access functions that need special versions for 64 bit offsets.
      - The new command line option -i can be used to set an "instance id", which will
        be used to distinguish recordings of the same broadcast made by different instances
        of VDR (suggested by Frank Schmirler). This replaces the use of the "resume id"
        that was introduced in version 1.7.3.
      - Added checking mutexCurrentAudioTrack to cDevice::PlayTs() (thanks to Reinhard
        Nissl for pointing this out).
      - Fixed handling the pointer field in cPatPmtParser::ParsePmt() (thanks to Frank
        Schmirler - sorry I swapped two lines when adopting the original patch).
      - Checking the remaining packet length after processing the pointer field in
        cPatPmtParser::ParsePat() and cPatPmtParser::ParsePmt() (suggested by Frank
      - Checking the pointer field in cPatPmtParser::ParsePmt() only in 'payload start'
        packets (suggested by Frank Schmirler).
      - Changed cPatPmtGenerator to make sure the PMT pid doesn't collide with any of
        the actual pids of the channel.
      - Fixed cDevice::PlayTsAudio() and made cDevice::PlayTsVideo() return 0 if
        PlayVideo() didn't play anything.
      - Added an 'int' typecast to calculations involving FramesPerSecond() to avoid
        compiler warnings (reported by Winfried Koehler).
      - Fixed detecting frames for pure audio recordings.
      - Fixed editing PES recordings. The frame type in the index.vdr file generated for
        the edited PES recording is set to 1 for I-frames and 2 for all others (P- and
        B-frames). The exact frame type doesn't matter for VDR, it only needs to know if
        it's an I-frame or not.
      - The PAT/PMT is now only processed if its version changes (reported by Reinhard
      - Fixed handling the maximum video file size (reported by Udo Richter).
      - Improved fast-forward/-rewind for audio recordings. The actual data is now sent
        to the output device, so that it can be replayed and thus cause the proper delay.
        For pure audio recordings the audio is no longer muted in fast-forward/-rewind
        mode, so that some orientation regarding the position within the recording is
        possible. There may still be some offset in the replay position displayed by the
        progress indicator when switching from fast-forward/-rewind to play mode, as well
        as in the current position during normal play mode. This is due to the various
        buffers between the player and the output device and will be addressed later.
        Note the new function cDevice::IsPlayingVideo(), which is used to inform the
        player whether there is video data in the currently replayed stream. If a derived
        cDevice class reimplements PlayTs() or PlayPes(), it also needs to make sure this
        new function works as expected.
  20. 06 Jan, 2009 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.3 · c2966475
      Klaus Schmidinger authored
      - Updated the Russian OSD texts (thanks to Oleg Roitburd).
      - Fixed handling the 'pointer field' in generating and parsing PAT/PMT (thanks to
        Frank Schmirler).
      - Fixed handling modulation types for DVB-S transponders when processing the NIT.
      - Changed cDvbDevice::GrabImage() to use V4L2 (thanks to Marco Schlüßler).
      - Added a poll to cDvbDevice::PlayVideo() and cDvbDevice::PlayAudio() to avoid
        excessive CPU load (this is just a makeshift solution until the FF DVB cards
        can play TS directly).
      - The recording format is now Transport Stream. Existing recordings in PES format
        can still be replayed and edited, but new recordings are done in TS.
        All code for recording in PES has been removed.
        The following changes were made to switch to TS recording format:
        + The index file format has been changed to support file sizes of up to 1TB
          (previously 2GB), and up to 65535 separate files per recording (previously
        + The recording file names are now of the form 00001.ts (previously 001.vdr).
        + The frame rate is now detected by looking at two subsequent PTS values.
          The "frame duration" (in multiples of 1/90000) is stored in the info.vdr
          file using the new tag F (thanks to Artur Skawina for helping to get the
          IndexToHMSF() calculation right).
        + Several functions now have an additional parameter FramesPerSecond.
        + Several functions now have an additional parameter IsPesRecording.
        + The functionality of cFileWriter was moved into cRecorder, and cRemux is
          now obsolete. This also avoids one level of data copying while recording.
        + cRemux, cRingBufferLinearPes, cTS2PES and all c*Repacker classes have been
        + A PAT/PMT is inserted before every independent frame, so that no extra
          measures need to be taken when editing a recording.
        + The directory name for a recording has been changed from
          YYYY-MM-DD-hh[.:]mm.pr.lt.rec (pr=priority, lt=lifetime) to
          YYYY-MM-DD-hh.mm.ch-ri.rec (ch=channel, ri=resumeId).
          Priority and Lifetime are now stored in the info.vdr file with the new
          tags P and L (if no such file exists, the maximum values are assumed by
          default, which avoids inadvertently deleting a recording if disk space
          is low). No longer storing Priority and Lifetime in the directory name
          avoids starting a new recording if one of these is changed in the timer
          and the recording is re-started for some reason.
          Instead of Priority and Lifetime, the directory name now contains the
          channel number from which the recording was made, and the "resume id" of
          this instance of VDR. This avoids problems if several VDR instances record
          the same show on different channels, or even on the same channel.
          The '-' between channel number and resumeId prevents older versions of
          VDR from "seeing" these recordings, which makes sure they won't even try
          to replay them, or remove them in case the disk runs full.
        + The semantics of PlayTs*() have been changed. These functions are now
          required to return the given Length (which is TS_SIZE) if they have
          processed the TS packet.
        + The files "index", "info", "marks" and "resume" within a TS recording
          directory are now created without the ".vdr" extension.
        + The "resume" file is no longer a binary file, but contains tagged lines
          to be able to store additional information, like the selected audio or
          subtitle track.
        + cDevice::StillPicture() will now be called with either TS or PES data.
        + cDvbPlayer::Goto() no longer appends a "sequence end code" to the data.
          If the output device needs this, it has to take care of it by itself.
      - Fixed cPatPmtParser::ParsePmt() to reset vpid and vtype when switching from
        a video to an audio channel (thanks to Reinhard Nissl).
      - cDvbDevice now uses the FE_CAN_2G_MODULATION flag to determine whether a device
        can handle DVB-S2. The #define is still there to allow people with older drivers
        who don't need DVB-S2 to use this version without pathcing.
  21. 14 Dec, 2008 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.2 · 1834751c
      Klaus Schmidinger authored
      - Added a note about 'Id' being obsolete to the description of cDevice::PlayAudio().
      - Switched to the new S2API driver API, which was decided to become the official
        DVB API in the kernel (based on patches from Igor M. Liplianin, Niels Wagenaar
        and Edgar Hucek). VDR now uses the S2API driver from http://linuxtv.org/hg/v4l-dvb.
        In order to correctly detect DVB-S2 capable devices, you need to apply the patch
        from ftp://ftp.cadsoft.de/vdr/Developer/v4l-dvb-s2api-add-s2-capability.diff to
        the driver source, because the S2API doesn't provide a way of telling whether a
        device can handle DVB-S2 transponders.
      - The cDvbTuner::IsTunedTo() function now also checks the symbol rate in case of
        DVB-S and DVB-C.
      - Improved handling PES video packets with zero length when converting from TS to PES.
        For good replay in Transfer Mode on full featured DVB cards you may want to apply
        the patch from ftp://ftp.cadsoft.de/vdr/Developer/av7110_v4ldvb_api5_audiobuf_test_1.diff
        to the driver (thanks to Oliver Endriss).
  22. 06 Sep, 2008 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.1 · c848ab79
      Klaus Schmidinger authored
      - Adapted the tuning code to the new DVBFE_SET_DELSYS API (thanks to Reinhard Nissl).
        VDR now uses the driver from http://jusst.de/hg/multiproto_plus.
      - Updated the Italian OSD texts (thanks to Diego Pierotto).
      - Removed obsolete $(NCURSESLIB) from the Makefile.
      - Implemented handling the standard component descriptor for AC3 (stream=4), as it
        will soon be used by the German ARD channels (thanks to Michael Pennewiß for
        advance information about this change). The previously used "Premiere pseudo
        standard" (stream=2, type=5) still works, but has apparently been wrongfully used
        by broadcasters from the beginning.
      - Added missing description of the 'S' channel parameter to vdr.5 (reported by
        Reinhard Nissl).
      - The SVDRP signon message now indicates the character encoding in use, as in
        "220 video SVDRP VideoDiskRecorder 1.7.1; Fri May  2 16:17:10 2008; ISO-8859-1".
        This may be useful for instance for external tools that provide EPG data, so that
        they can correctly encode the strings.
      - No longer calling FcFini() to avoid problems with older (broken) versions of
        fontconfig (suggested by Edgar Toernig).
      - Removed the compile time option VFAT to allow users of precompiled binary
        distributions to have full control over whether or not to use the --vfat option
        at runtime (suggested by Michael Nork).
      - First step towards switching to TS (Transport Stream) as recording format:
        + The new function cDevice::PlayTs() is used to play TS packets.
        + The new functions cDevice::PlayTsVideo() and cDevice::PlayTsAudio()
          are used to play video and audio TS packets, respectively.
        + The new function cAudio::PlayTs() is used to play audio TS packets.
        + The new class cPatPmtGenerator is used to generate a PAT/PMT pair that precedes
          the TS data in Transfer Mode.
        + The new class cPatPmtParser is used by cDevice to parse the PAT/PMT data in a
          TS in order to find out which streams it contains.
        + The new class cTsToPes is used to convert TS packets to a PES packet.
        + cTransfer no longer uses cRemux, and doesn't run a separate thread any more.
          It just generates a PAT/PMT and sends all received TS packets to the primary
          device's PlayTs().
        + Live subtitle display no longer uses a ring buffer and separate thread.
        + cPesAssembler has been removed. Old VDR recordings only contain complete PES
        + Since a TS needs to have a PAT/PMT, which requires the video stream type to
          be explicitly given, the format of the VPID field in the channels.conf file
          and the SVDRP commands NEWC/MODC/LSTC has been extended. The video stream type
          now follows the VPID and optional PPID, separated by an '=' sign.
      - Updated the sources.conf file (thanks to Oleg Roitburd).
      - Fixed a possible integer overflow in GetAbsTime() (thanks to Alexander Rieger).
      - Fixed a problem with calling isyslog() from within the SignalHandler() (thanks
        to Udo Richter).
      - Replaced the Finnish language code "smi" with "suo" (thanks to Rolf Ahrenberg).
      - Fixed wrong value for TableIdBAT in libsi/si.h (thanks to Winfried Köhler).
      - Errors in config files no longer keep VDR from starting.
      - Removed unneeded include files <linux/dvb/dmx.h> und <time.h> from remux.h
        (reported by Tobias Grimm).
  23. 13 Apr, 2008 1 commit
    • Klaus Schmidinger's avatar
      Version 1.7.0 · 771986b8
      Klaus Schmidinger authored
      - Re-implemented handling of DVB-S2, which first appeared in version 1.5.14, but was
        revoked in version 1.5.15 in favor of making a stable version 1.6.0. VDR now
        requires the "multiproto" DVB driver, e.g. from http://jusst.de/hg/multiproto.
        Note that the channels.conf file now supports additional parameters, so you may
        want to make sure you have a backup of this file in case you need to go back to
        the previous version of VDR!
      - Fixed displaying transponder data when it is modified (thanks to Reinhard Nissl).
      - Fixed handling the counter in detection of pre 1.3.19 PS data (thanks to Reinhard
      - Improved logging system time changes to avoid problems on slow systems under
        heavy load (suggested by Helmut Auer).
      - Now setting the thread name, so that it can be seen in 'top -H' (thanks to Rolf
      - Fixed initializing the timer's flags in the cTimer copy constructor (thanks to
        Andreas Mair).
      - Fixed setting the OSD level in the 'osddemo' example (thanks to Wolfgang Rohdewald).
      - Increased the time between checking the CAM status to 500ms to avoid problems
        with some CAMs (reported by Arthur Konovalov).
  24. 23 Mar, 2008 1 commit
    • Klaus Schmidinger's avatar
      Version 1.6.0 · fa56503b
      Klaus Schmidinger authored
      - Updated the Croatian language texts (thanks to Adrian Caval).
      - Added Chinese language texts (thanks to Nan Feng).
      - Updated the Portuguese language texts.
      - Added a note about VDR_CHARSET_OVERRIDE to the INSTALL file.
  25. 16 Mar, 2008 1 commit
    • Klaus Schmidinger's avatar
      Version 1.5.18 · 7ba8708b
      Klaus Schmidinger authored
      - Added a missing reset of maxNumber in cChannels::Renumber() (reported by Sundararaj
      - Revoked the fixed change of the default character set for SI data and introduced
        an environment variable to control it (thanks to Ales Jurik for reporting broken
        SI data on the Czech/Slovak channels, which actually do follow the standard).
        Users who want to set the default character set to something different can do this
        by setting the environment variable VDR_CHARSET_OVERRIDE to something like
      - Fixed a signed character used as index in cBase64Encoder::NextLine() (thanks
        to Tobias Grimm).
      - Updated the Spanish and Catalanian OSD texts (thanks to Luca Olivetti).
      - Fixed automatically selecting the preferred subtitle language (based on a patch
        from Rolf Ahrenberg).
      - Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
      - Updated the Italian OSD texts (thanks to Diego Pierotto).
      - Updated the Polish OSD texts (thanks to Michael Rakowski).
      - Fixed formatting the name section in the VDR man pages (thanks to Tobias Grimm).
      - Updated the Swedish OSD texts (thanks to Magnus Andersson).
      - Added Russian translations to the 'skincurses' and 'pictures' plugins (thanks
        to Alexander Gross).
      - Fixed displaying the free disk space when entering the recordings menu where the
        last replayed recording was in a subdirectory, and pressing Back (thanks to Rolf
      - Fixed tuning to a live channel after a recording has been stopped using the
        'Back' key.
      - Resetting a timer's 'pending' flag when it has ended.
  26. 02 Mar, 2008 1 commit
    • Klaus Schmidinger's avatar
      Version 1.5.17 · 0872cba0
      Klaus Schmidinger authored
      - Updated the Swedish OSD texts (thanks to Tomas Berglund).
      - Made the 'pic2mpg' script of the 'pictures' plugin work with uppercase filename
        extensions and relative paths (thanks to Stefan Wagner for reporting this one).
      - Updated the Romanian OSD texts (thanks to Lucian Muresan).
      - Updated the Dutch OSD texts (thanks to Johan Schuring).
      - Stripping control codes 0x86 and 0x87 from SI strings.
      - Updated French language texts (thanks to Jean-Claude Repetto).
      - Fixed handling 3 and 4 byte UTF-8 symbols in Utf8CharGet() (thanks to Andreas
      - Fixed a crash in cFreetypeFont::DrawText() if an unknown symbol is encountered
        (thanks to Tobias Grimm). Unknown symbols are replaced with a '?'.
      - Updated the Slovenian OSD texts (thanks to Matjaz Thaler).
      - Updated the Czech OSD texts (thanks to Vladimír Bárta and Jiri Dobry).
      - Updated the Turkish OSD texts (thanks to Oktay Yolgeçen).
      - The 'plugins' target in the Makefile now returns an error exit code if one of the
        plugins failed to compile (suggested by Tobias Grimm).
      - Rendering the non-breaking space symbol as a blank (thanks to Tobias Grimm).
      - Changed the default character set for SI data from ISO6937 (as required by the DVB
        standard ETSI EN 300 468) to ISO-8859-9, in order to work around the stupidity of
        some providers, who actually use ISO-8859-9, but fail to correctly announce that.
  27. 24 Feb, 2008 1 commit
    • Klaus Schmidinger's avatar
      Version 1.5.16 · 83d7a4b7
      Klaus Schmidinger authored
      - Fixed setting the current subtitle track in Transfer-Mode (reported by Petri Helin,
        thanks to Reinhard Nissl for pointing out that cDevice::Transferring() doesn't
        return the right value in the early stage of channel switching).
      - Updated the Danish OSD texts (thanks to Mogens Elneff).
      - Updated the Dutch OSD texts (thanks to Carel Willemse).
      - Fixed various spelling errors and improved PLUGINS.html (thanks to Ville Skyttä).
      - Updated the Italian OSD texts (thanks to Diego Pierotto).
      - Fixed the format in cRemote::Put() to use "%016llX" instead of "%016LX" (thanks
        to Ludwig Nussel for pointing this out).
      - Revised the fix of calculating the scrollbar height in the skins. The scrollbar
        handle now always has a height that is at least the width of the scrollbar.
      - When switching the device that's used for live viewing away from the current
        transponder in favor of an upcoming recording, an attempt is now made to stay
        on the current channel by possibly going into 'Transfer Mode'.
      - The CAM menu now stays open as long as it is automatically updated, even without
        pressing a remote control key. This is important when updating the CAM firmware
        from the transponder.
      - No longer trying to switch to an available channel if the primary device has
        no valid programme and a menu is open (avoids interference with the CAM in
        case a CAM menu is open).
      - Increased the valid range of the "Subtitle offset" setup option to -100...100
        (thanks to Rolf Ahrenberg).
      - Added the backslash ('\') to the list of characters that need to be escaped
        when executing external commands (thanks to Peter Bieringer for reporting this one).
  28. 17 Feb, 2008 1 commit
    • Klaus Schmidinger's avatar
      Version 1.5.15 · 9279cb21
      Klaus Schmidinger authored
      - Updated the Italian OSD texts (thanks to Diego Pierotto).
      - Added option -i to the pictures plugin's pic2mpg to ignore unknown file types.
      - Revoked the switch to the "multiproto" driver in order to make a new stable
        version before making this big switch and forcing all users to install a
        driver that is not yet in the kernel source. The removed code will reappear
        in version 1.7.0.
        Note that you may need to switch back to an older version of your channels.conf
        file if you have already used version 1.5.14, because it introduced new parameters.
      - Added the new command line option --userdump to enable core dumps in case VDR
        is run as root with option -u (thanks to Hans-Werner Hilse).
      - Speeded up anti-aliased font rendering by caching the blend indexes (based on
        a suggestion by Martin Wache).
      - Fixed setting the OSD area in the pictures plugin.
      - Ignoring "repeat" and "release" keys in the time search entry mode during replay,
        to avoid inadvertently leaving it in case a key is pressed too long (suggested
        by Andreas Brugger).
      - Improved sending all frames to devices that can handle them in fast forward
        trick speeds, including subtitles (thanks to Timo Eskola).
      - The section handler is now stopped before the device is destroyed, to avoid
        accessing file handles after they have become invalid (thanks to Reinhard
        Nissl for reporting an invalid access when ending VDR, and to Deti Fliegl for
        a patch that was used to implement StopSectionHandler()).
      - Fixed setting the date in the channel display of the classic and sttng skins,
        to avoid unnecessary OSD access (thanks to Marco Schlüßler).
      - The free disk space is now also displayed in the title of the "Recordings"
        menu (suggested by Walter Koch).
      - Changed the message "Upcoming VPS recording!" to "Upcoming recording!" because
        it applies to non-VPS recordings as well.
      - Fixed a loss of a timer's 'recording' flag after modifying it via MODT.
      - Fixed detecting directories in cFileNameList::Load().
      - Running the thread that removes deleted recordings at a low priority to (maybe)
        avoid stuttering replay in case the thread is run during replay.
      - Limiting the length of the recording name in timers in case VDR is run with
        --vfat, in order to avoid names that are too long for Windows (suggested by Rolf
      - Using cString::sprintf() instead of asprintf() (thanks to Wolfgang Rohdewald
        for pointing out a possible problem if the return value is not checked).
        Plugin authors may want to consider doing the same. For convenience there is now
        an additional version of cString::sprintf() that accepts a va_list parameter.
      - When deleting the recording that is currently replayed, the replay is now
        stopped immediately (thanks to Mikko Matilainen for reporting a possible crash
        if the Info key is pressed after deleting the currently replayed recording).
      - Updated the Russian OSD texts (thanks to Oleg Roitburd).
      - When determining the amount of free disk space, any deleted (but not yet removed)
        recordings on different file systems (that are mounted under the video directory)
        are no longer taken into account.
      - When running out of disk space during a recording, only such deleted or old
        recordings are removed, that actually are on the video directory file system(s).
        This prevents VDR from accidentally deleting recordings on other file systems,
        which would not add any free space to the video directory.
      - Implemented the cStatus, cDevice and cPlayer functions for setting subtitle tracks
        in plugins (thanks to Petri Hintukainen).
      - Added cStatus::TimerChange() to inform plugins about changes to the list of timers
        (based on a patch from Benedikt Elser).
      - Added new cStatus functions to the 'status' plugin.
      - Added missing #include <limits.h> to epg.c and menuitems.h (thanks to Ville Skyttä).
      - The new function cSkin::SetScrollbar() can be implemented by skins to display
        a scrollbar in every list menu. The 'classic' and 'sttng' skins have been
        changed accordingly, as well as the 'skincurses' plugin.
      - Introduced 'operator const void * ()' in cString to catch cases where operator*()
        should be used.
      - Fixed calculating the scrollbar sizes in the skins.
  29. 27 Jan, 2008 1 commit
    • Klaus Schmidinger's avatar
      Version 1.5.14 · e3887083
      Klaus Schmidinger authored
      - Fixed the Play function in the pictures plugin.
      - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
      - Updated the Makefile of the skincurses plugin (thanks to Rolf Ahrenberg).
      - The new option --localedir can be used to set the locale directory at runtime
        (based on a patch from Stefan Huelswitt).
      - Fixed finding new transponders (thanks to Winfried Köhler).
      - Implemented handling of DVB-S2 (thanks to Marco Schlüßler and Reinhard Nissl
        for a patch that was used to implement this). VDR now requires the "multiproto"
        DVB driver, e.g. from http://jusst.de/hg/multiproto.
      - Removed switching to the next higher or lower channel if the current channel
        is not available, in order to allow staying on an encrypted channel that takes
        a while for the CAM to start decrypting.
  30. 13 Jan, 2008 1 commit
    • Klaus Schmidinger's avatar
      Version 1.5.13 · fc4c8740
      Klaus Schmidinger authored
      - Fixed the declaration of cSubtitleObject::Decode8BppCodeString() (thanks to
        Gregoire Favre).
      - The new setup option "Miscellaneous/Emergency exit" can be used to turn off
        the automatic restart of VDR in case a recording fails for some reason.
      - The kInfo key is now propagated to any open menu, so that it can react to it
        in a context sensitive manner (suggested by Andreas Brugger). If there is
        no menu open it will show the info of the current broadcast or replay.
      - cTimeMs now uses the monotonic clock, if available (thanks to Petri Hintukainen).
      - Fixed cVector::Clear() and cStringList::Clear().
      - Added cString::Truncate().
      - Fixed the "i18n:" target in the "newplugin" script, so that it can create the
        initial *.pot file.
      - Fixed handling the '-l' option.
      - Fixed error handling in cCuttingThread::Action() (thanks to Udo Richter).
      - Fixed a loss of the date display in the "classic" skin's main menu (reported by
        Andreas Brugger).
      - Added a missing setting of lastFreeMB in cMenuMain::Update() (reported by
        Andreas Brugger).
      - Added '-Wno-parentheses' to the compiler options in order to avoid silly compiler
        warnings for expressions like 'a || b && c', where GCC 4.3 wants to force the
        programmer to write 'a || (b && c)', while everybody knows that '&&' links
        stronger than '||' (reported by Tobias Grimm).
      - Updated the Hungarian language texts (thanks to István Füley).
      - Fixed displaying weekday names in the Schedule menu if the system uses UTF-8
        (reported by Jiri Dobry).
      - The new plugin "pictures" implements a simple picture viewer.
        See PLUGINS/src/pictures/README for details.
      - The automatic shutdown is now suppressed if the remote control is currently
        disabled (suggested by Helmut Auer, implemented by Udo Richter).
      - Added a section about "Logging" to PLUGINS.html (suggested by Torsten Kunkel).
      - Enhanced the SVDRP command CLRE to allow clearing the EPG data of a particular
        channel (thanks to Benjamin Hess).
  31. 18 Nov, 2007 1 commit
    • Klaus Schmidinger's avatar
      Version 1.5.12 · 29b2d48b
      Klaus Schmidinger authored
      - Fixed assembling PS1 packets in cTS2PES::instant_repack() (thanks to Reinhard
      - Updated the Russian OSD texts (thanks to Oleg Roitburd).
      - Fixed handling small PES packets that caused subtitles to be displayed late
        in live mode (based on a patch from Reinhard Nissl).
      - Fixed stopping live subtitles when a player is attached to the device.
      - Fixed suddenly stopping subtitles in live mode.
  32. 04 Nov, 2007 1 commit
    • Klaus Schmidinger's avatar
      Version 1.5.11 · 182cd78a
      Klaus Schmidinger authored
      - Fixed checking compatibility mode for old subtitles plugin (thanks to Marco
      - Updated the French OSD texts (thanks to Michael Nival).
      - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
      - Updated the Italian OSD texts (thanks to Diego Pierotto).
      - The "Play" key now starts replay of the selected recording in the Recordings
        menu (thanks to Ville Skyttä);
      - Improved shutdown handling (thanks to Udo Richter).
      - Housekeeping now waits for a while after a replay has ended (thanks to Udo Richter).
      - Added more special characters to the list of allowed characters when entering
        strings (thanks to Thomas Günther).
      - Added Ukrainian language texts (thanks to Yarema Aka Knedlyk).
      - Added a workaround for recovering from wrongfully interpreted "pre 1.3.19 PS1 packets".
      - Fixed a possible blocking in replay when subtitles are active.
      - Fixed displaying subtitles in live mode.
      - Fixed handling CONFDIR (thanks to Rolf Ahrenberg).
      - Added some missing 'const' keywords (thanks to Sascha Volkenandt).
      - The 'Allowed' parameter in cMenuEditStrItem() is now NULL by default, which results
        in using tr(FileNameChars) (suggested by Thomas Günther).
      - Added a missing '.' to the date returned by DayDateTime() (thanks to Lauri Nurmi).
      - Improved the 'i18n' target in the Makefile to avoid unnecessary work (thanks to
        Stefan Huelswitt). The 'newplugin' and 'i18n-to-gettext.pl' scripts have been
        changed accordingly. Plugin authors may want to adjust the 'i18n' target
        of their Makefiles.
      - Fixed a crash if no fonts are found (thanks to Mario Ivankovits and Clemens
      - Fixed decoding filename characters in case there are not two hex digits after
        the '#' (reported by Helmut Auer).
  33. 14 Oct, 2007 1 commit
    • Klaus Schmidinger's avatar
      Version 1.5.10 · dbf38b7c
      Klaus Schmidinger authored
      - Implemented handling DVB subtitles (thanks to Marco Schlüßler, and also to
        Pekka Virtanen for writing the subtitle plugin, which helped in implementing
        subtitle handling in VDR).
      - The new remote control key "Subtitles" can be used to bring up the list
        of available subtitles.
      - The new setup option "DVB/Subtitle languages" can be used to define the
        preferred languages for subtitles.
      - Fixed selecting the audio track when pressing Ok in the Audio menu (thanks
        to Marco Schlüßler).
      - Implemented display of DVB subtitles in live viewing mode.
      - Implemented subtitle track selection.
      - Implemented bitmap color reduction and shrinking to display subtitles even
        on devices that can't display the necessary number of colors.
      - Added compatibility mode for playback of recordings made with the subtitles
        plugin (with some help from Rolf Ahrenberg).
      - The new setup option "DVB/Subtitle offset" can be used to shift the location
        of the subtitles in the vertical direction.
      - The new setup options "DVB/Subtitle foreground/background transparency"
        define an additional level of transparency for the foreground and background
        color of subtitles.
      - Existing recordings made with the subtitle plugin can be given an 'X' record
        in their info.vdr file, so that subtitles can be automatically selected upon
        replay, according to the preferred language setup, as in
        X 3 03 ger deutsch
        (see vdr.5). Note that these entries need to be added in the proper sequence,
        so that they correspond with the actual track languages in the recording.
      - Now generating translation files without line numbers to avoid unnecessarily
        large diffs. Plugin authors may want to replace the -F option with
        --no-location in the xgettext and msgmerge calls in their Makefiles.
      - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
      - Added a missing Channels.SetModified(true) call when deleting or moving a
        channel in the Channels menu (reported by Halim Sahin).
      - Fixed a missing '-' at the next to last line of SVDRP help texts (reported by
        Denis Knauf).
      - Added a missing SetVolumeDevice() call in cDevice::SetPrimaryDevice() (reported
        by Reinhard Nissl).
      - Fixed a crash when pressing Left while at the first character of a cMenuEditStrItem
        (thanks to Christian Wieninger).
      - Only creating a new cDvbOsdProvider in cDvbDevice::MakePrimaryDevice() if 'On'
        is true (i.e. this device is being made the primary device).
      - Updated the Italian OSD texts (thanks to Diego Pierotto).
      - Fixed handling reallocated memory in cCharSetConv::Convert() (reported by Udo
      - Fixed a new[]/delete mismatch in cMenuEditStrItem::LeaveEditMode() (thanks to
        Udo Richter).
      - Implemented sending all frames to devices that can handle them in fast forward
        trick speeds (thanks to Timo Eskola).
      - Updated the Hungarian language texts (thanks to Thomas Günther).
      - Fixed description of DeviceSetAvailableTrack() and cReceiver(), and added an
        example ~cMyReceiver() in PLUGINS.html (thanks to Marco Schlüßler).
      - Improved the description of where logging goes in the INSTALL file (thanks to
        Elias Luttinen).
      - Added a note about how to initiate internationalization support to the
        README.i18n file. The Makefile generated by the 'newplugin' script now has the
        'i18n' target automatically create an initial 'po/pluginname.pot' file.
        Plugin authors may want to add the '$(I18Npot)' dependency to the 'i18n'
        target in their Makefiles, as in
        i18n: $(I18Npot) $(I18Nmo)
        (based on a suggestion by Torsten Kunkel).
      - Removed a duplicate ',' from the ca_ES.po file (thanks to Thomas Günther).
      - Added the 'ß' character to the "allowed characters" in the de_DE.po file
        (suggested by Thomas Günther).
      - Made the default copy ctor of cRecording private (thanks to Markus Hahn).
        Same for the assign operator.
      - Added cRecording::Undelete() (based on a patch from Markus Hahn).
      - Added cDevice::CloseFilter() to allow a device to have complete control over
        both opening and closing section filters (thanks to Rolf Ahrenberg).
      - Some fixes to PLUGINS.html (thanks to Rolf Ahrenberg).
  34. 26 Aug, 2007 1 commit
    • Klaus Schmidinger's avatar
      Version 1.5.9 · 46c882c0
      Klaus Schmidinger authored
      - Fixed handling locale directories with a large number of entries (thanks to
        Anssi Hannula).
      - Updated Turkish language texts (thanks to Oktay Yolgeçen).
      - Fixed stripping the context in I18nTranslate() (reported by Christian
      - Fixed detecting whether a particular locale is actually supported.
      - Added a note about LANG having to be set to a valid locale in INSTALL
        (suggested by Matthias Fechner).
      - Fixed some compiler warnings with gcc-4.2.0 (thanks to Matthias Schwarzott).
      - Fixed setting the locale file name in i18n-to-gettext.pl (thanks to Matthias
      - Changed the default for LOCDIR in Makefile and Make.config.template to
        "./locale", so that internationalization works by default when running VDR
        from within its source directory (suggested by Anssi Hannula).
      - Added the new i18n macro trVDR(), which can be used by plugins to mark
        texts they want to reuse from VDR's core translations (suggested by Matthias
      - VDR now uses the default configuration directory as defined in the CONFDIR
        varable in the Makefile (thanks to Thomas Schmidt).
      - The SVDRP command LSTC can now list the channels with group separators if the
        option ':groups' is given (thanks to Andreas Mair).
      - Added a missing error report to cCuttingThread::Action() (thanks to Udo
      - There can now be more than one OSD at the same time. At any given time,
        however, only one of them can be active (and thus visible). This is to
        allow displaying things like subtitles in an easy way. A cOsd therefore
        now has a "Level", and only the OSD with the smallest level will be
        displayed. The level 0 OSD is special, and there can only be one with
        this level. If there is more than one OSD with a particular level, only
        the one that was created first will be displayed.
        Plugins that provide an OSD need to adjust their cOsdProvider::CreateOsd()
        function to hand through the Level.
      - Fixed checking for ttDolbyLast in cDevice::SetCurrentAudioTrack() (thanks
        to Marco Schlüßler).
  35. 19 Aug, 2007 1 commit
    • Klaus Schmidinger's avatar
      Version 1.5.8 · e5a2aa41
      Klaus Schmidinger authored
      - Added missing install-i18n to the install target in the Makefile (reported
        by Joachim Wilke).
      - Fixed a faulty comment in Make.config.template (reported by Marco Schlüßler).
      - Improved i18n-to-gettext.pl (thanks to Matthias Schwarzott).
      - Moved the "all" target in plugin Makefiles before the "Implicit rules",
        so that a plain "make" will compile everything (suggested by Matthias
        Schwarzott). The "newplugin" script has been changed accordingly.
        Plugin authors may want to change their Makefiles, too.
      - Added DESTDIR and PREFIX handling to the Makefile (thanks to Matthias
      - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
      - Added internationalization to the "skincurses" plugin (thanks to Rolf
      - Checking the string for NULL in I18nTranslate().
      - Updated the French OSD texts (thanks to Bruno Roussel).
      - Some optimizations in cDvbDevice::SetChannelDevice() (thanks to Tobias Bratfisch).
      - Optimized cMenuEditChrItem::Set() (thanks to Tobias Bratfisch).
      - Optimized cNitFilter::Process() (thanks to Tobias Bratfisch).
      - Reduced the number of time(NULL) calls in vdr.c's main loop to a single call
        (thanks to Tobias Bratfisch).
      - Changed cBitmap::DrawText() to always draw the background unless ColorBg
        is clrTransparent (thanks to Christoph Haubrich).
      - The "Setup/OSD/Language" menu now only shows those languages that actually
        have a locale (suggested by Anssi Hannula).
      - Now using setenv() instead of setlocale() to set the language for gettext()
        (suggested by Anssi Hannula; thanks also to Ludwig Nussel for a hint on using
      - When scanning the locale directory, VDR now explicitly looks for a file named
        vdr.mo. Text files for plugins are now named "vdr-name.mo", when "name" is the
        name of the plugin. The "newplugin" script has been changed accordingly, and
        plugin authors should change their Makefiles, too.
  36. 12 Aug, 2007 1 commit
    • Klaus Schmidinger's avatar
      Version 1.5.7 · 4c65b525
      Klaus Schmidinger authored
      - All logging now goes to LOG_ERR, because some systems split error, info and
        debug messages into separate files, which repeatedly caused extra efforts to
        find out when incomplete log excerpts were attached to problem reports in
        the past.
      - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
      - Fixed a problem with characters >0x7F in the modified version of skipspace()
        (thanks to Marco Schlüßler).
      - Fixed a bug I introduced when simplifying the original patch for detecting
        Premiere NVOD channel links (crash reported by Malte Schröder).
      - Internationalization is now done with 'gettext' (following a suggestion by
        Lucian Muresan). Plugin authors may want to use the Perl script
        'i18n-to-gettext.pl' to convert their internationalized texts to the gettext
        format (see the instructions inside that script file). The function
        cPlugin::RegisterI18n() is still present for compatibility, but doesn't
        have any more functionality. So plugins that don't convert their texts to
        the gettext format will only present English texts.
        See PLUGINS.html, section "Internationalization", for instructions on how
        to make strings in arrays translatable.
        See README.i18n for information on how to create new or maintain existing
      - The three letter language codes and their aliases are stored in i18n.c, and
        each translation file only contains one of them to link that language name
        to the code.
      - The 'newplugin' script has been extended to generate the Makefile section
        for i18n support.
      - The parameter OSDLanguage in 'setup.conf' is now a string and holds the locale
        code of the selected OSD language (e.g. en_US). If Setup.OSDLanguage is not
        set to a particular locale that is found in VDR's locale directory, the
        locale as defined in the system environment is used by default.
      - The list of tracks given in cStatus::SetAudioTrack() is now NULL terminated,
        so that plugins can actually use all the strings in the list, not just the
        one pointed to by Index (thanks to Alexander Rieger).
      - Fixed handling kLeft in the calls to cStatus::MsgOsdTextItem() (thanks to
        Alexander Rieger).
      - Added the "...or (at your option) any later version" phrase to the license
        information of all plugins, and also the 'newplugin' script (suggested by
        Ville Skyttä). Plugin authors may want to consider doing the same.
      - Fixed the link to the GPL2 at http://www.gnu.org in vdr.c (thanks to Ville
      - cBitmap::SetXpm() now checks whether the given Xpm pointer is not NULL, to
        avoid a crash with files that only contain "/* XPM */" (suggested by Andreas
      - Added a debug error message to cReceiver::~cReceiver() in case it is still
        attached to a device (thanks to Reinhard Nissl).
  37. 22 Jul, 2007 1 commit
    • Klaus Schmidinger's avatar
      Version 1.5.6 · 8849308c
      Klaus Schmidinger authored
      - Fixed a buffer overflow in initializing the system character table (thanks
        to Marco Schlüßler).
      - Updated the Russian OSD texts (thanks to Oleg Roitburd).
      - Fixed handling single byte characters >0x7F in Utf8ToArray() (thanks to Udo
      - Improved numdigits(), isnumber() and strreplace() (thanks to Tobias Bratfisch).
      - Fixed clearing color buttons in the 'curses' skin (thanks to Udo Richter).
      - Fixed a typo in the function name of cOsd::SetOsdPosition() and added a range
        check to it (thanks to Christoph Haubrich).
      - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
      - Improved cControl::Launch() to keep 'control' from pointing to uninitialized
        memory (thanks to Rolf Ahrenberg).
      - Made skipspace() an inline function (suggested by Tobias Bratfisch) and changed
        it to handle the most common case of 'no leading space' very fast, and avoid
        calling isspace(), which made the whole function a lot faster.
      - Fixed detection of Premiere NVOD channel links (thanks to Markus Hahn).
      - Added a table of the used trick speed values to the description of
        cDevice::TrickSpeed() (suggested by Martin Dauskardt).
      - Added a missing 'P' to vdr.c's SHUTDOWNCANCELROMPT macro (reported by Marco
  38. 23 Jun, 2007 1 commit
    • Klaus Schmidinger's avatar
      Version 1.5.5 · a9c7f0de
      Klaus Schmidinger authored
      - Fixed a name clash between skincurses.c and the new cOsd position functions.
      - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
      - Changed the parameter "OSD font size" to "Default font size" in "Setup/OSD".
      - Fixed handling address masks in SVDRP host settings (thanks to Frank Schmirler).
      - Fonts can now be created with a width that overwrites the default width (thanks
        to Andreas Mair).
      - Added full weekday names to i18n.c for plugins to use (thanks to Patrice Staudt).
        The new function WeekDayNameFull() can be used to get these names from integer
        values (just like the abbreviated weekday names).
      - Fixed stripping i18n stuff from font names (reported by Anssi Hannula).
      - Improved performance of the SVDRP commands LSTC and CHAN when used with a
        channel name.
  39. 17 Jun, 2007 1 commit
    • Klaus Schmidinger's avatar
      Version 1.5.4 · b1e4da3b
      Klaus Schmidinger authored
      - Increased APIVERSION (forgot to do that in 1.5.2 and 1.5.3).
      - Fixed a crash in i18n character set conversion (thanks to Alexander Riedel,
        Jose Alberto Reguero and Christian Wieninger for patches that cured part of
        the problem).
      - Adjusted the 'skincurses' plugin to UTF-8 handling.
      - Using nl_langinfo(CODESET) to determine the local codeset to use (thanks to
        Thomas Günther). The codeset names in 'libsi/si.c' have been changed to the
        canonical spelling with '-' (thanks to Ludwig Nussel for pointing this out).
      - Modified handling invalid characters in VFAT mode.
      - Replaced strn0cpy() with Utf8Strn0Cpy() where necessary.
      - Now using 'fontconfig' to determine which fonts to use (thanks to Anssi Hannula
        for code and hints on how to do this).
      - If no fonts are installed, VDR now uses a dummy font that doesn't actually draw
        any text, and logs an error message.
      - The new function cFont::CreateFont() can be used by plugins to create and use
        fonts of their own, independent of VDR's standard fonts.
      - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
      - Changed the parameter "OSD font" to "Default font" in "Setup/OSD" (suggested
        by Rolf Ahrenberg).
      - Fixed handling detached processes in SystemExec() (thanks to Udo Richter).
      - The info.vdr file now also stores the name of the channel, and the new function
        cRecordingInfo::ChannelName() returns this information if available (based on
        a patch from Alexander Hans).
      - The new function cOsd::SetOsdPosition() can be used to dynamically change the
        position and size of the OSD (based on a request from Christoph Haubrich).
        Plugins that implement skins should no longer use Setup.OSDWidth etc. directly,
        but should rather use cOsd::OsdWidth() etc. instead.
        Currently a change to the OSD position will only apply to newly opened OSDs.
  40. 10 Jun, 2007 1 commit
    • Klaus Schmidinger's avatar
      Version 1.5.3 · b9b9ace9
      Klaus Schmidinger authored
      - Fixed some spelling errors in 'newplugin' (thanks to Ville Skyttä).
      - Fixed a busy loop in fast forward if the next video data file is missing
        (thanks to Reinhard Nissl).
      - Fixed handling frequencies in NitFilter::Process() (thanks to Anssi Hannula).
      - Fixed a race condition with signal handlers at program exit (thanks to Udo
      - Non-primary devices in Transfer mode are now also used for recording (thanks
        to Anssi Hannula).
      - Fixed handling ChannelUp/Down keys if there is currently a replay running
        (thanks to Marco Schlüßler).
      - The new SVDRP command REMO can be used to turn VDR's remote control off and
        on in case other programs need to be controlled (based on patches from Krzysztof
        Parma and Helmut Auer).
      - Increased the maximum number of CA system ids to cope with the AlphaCrypt
        CAM's version 3.11 firmware.
      - Fixed getting the code setting from the locale (thanks to Matthias Schwarzott).
      - Implemented support for Freetype fonts (based on a patch from Alexander Riedel).
        The font names and sizes can be adjusted in the "Setup/OSD" menu.
        Note that VDR now requires freetype fonts to be installed in
      - If the OSD device in use has at least 8bpp bitmap depth and this is also
        used by the current skin, Freetype fonts are displayed "anti-aliased".
        The new setup parameter "OSD/Anti-alias" can be used to turn this off.
      - The new function cOsd::SetAntiAliasGranularity() can be used to help the OSD
        in managing the available color palette entries when doing anti-aliasing.
        Skins that use 8bpp bitmaps can call this function with the maximum number
        of colors used, and the maximum number of color combinations. The OSD will
        then evenly split the available palette entries between the various colors
        combinations, so that fonts can be "anti-aliased". By default a total of
        10 colors and 10 combinations is assumed.
      - The pixel fonts have been completely removed from the VDR source.
      - VDR is now "UTF-8 aware". It handles strings according to the character
        encoding used on the user's system. All internationalization strings and
        incoming SI data are converted to the system encoding.
      - Plugins that handle strings need to be aware that on systems with UTF-8
        encoding a "character symbol" may consist of more than a single byte in
        memory. The functions and macros named Utf8...() can be used to handle
        strings without needing to care about the underlying character encoding
        (see tools.h for details).
      - Even though the weekdays of repeating timers are presented to the user as UTF-8
        characters in the OSD, the timers.conf file and the SVDRP timer commands still
        use single byte characters ("MTWTFSS") to make sure this information is handled
        correctly between systems with different character encodings.
      - Added a missing i18n string for "CAM" in the Turkish OSD texts.
      - Improved editing strings that are too long to fit into the editable area.
      - Changes to the OSD settings in the "Setup/OSD" menu now immediately take effect
        when the "Ok" key is pressed.