Skip to content

Releases: bbc/pydvbcss

pypi packaging bugfix

15 Feb 14:01
Compare
Choose a tag to compare

This is a minor release that fixes a packaging bug that may cause pydvbcss
to be unable to install correctly unless CherryPy and ws4py packages are
already installed.

  • Fixed missing requirements.txt in pypi package (c696395)

Installation bugfixes

24 Nov 16:52
Compare
Choose a tag to compare

This is a minor release containing a temporary workaround for installation
problems caused by changes to packages this library depends on (cherrypy).

  • Temporary fix for bug due to changes in cherrypy (f5bb1b1 and 7ad71e9).
    Will be reverted once resolved by dependencies

CII server improvement and fix for ws4py 0.3.6

15 Nov 00:27
Compare
Choose a tag to compare

This is a minor release containing mostly maintenance fixes arising from
recent changes to cherrypy/ws4py, some small documentation improvements,
and an enhancement to CII server support for when bound to multiple
network interfaces.

  • Enhancement: CII server can transparently rewrite wcUrl, tsUrl and
    teUrl to take account of the network interface the client has connected
    to - enabling it to work when bound to multiple interfaces.
    (#14)
  • Docs: README.md improvements.
  • Switch from temporary to permanent fix due to cherrypy/ws4py bugs that have now been
    fixed. (#13)

Bugfixes and new clock object type

09 Mar 12:30
Compare
Choose a tag to compare

This is a minor release that includes a temporary workaround for a problem
ith dependencies (cherrypy and ws4py) when installing. It also includes
various bug fixes and a new type of Clock object that is useful when
compensating for rendering latencies.

  • Bugfix: fixed semantics on calcWhen(), toParenTicks() and toRootTicks()
    when clock speed is 0.` (32256b6)
  • API addition: new OffsetClock class to make it easy to compensate for rendering latencies.
  • Temporary fix for bug due to changes in cherrypy (f8ec3f6). Will be reverted once resolved by dependencies.

Bugfixes and Bugfixes and overhaul of clock object model (new-clock-model)

01 Sep 13:16
Compare
Choose a tag to compare

This release contains a significant internal upgrade to the dvbcss.clock
module with minor knock-on effects on other packages - particularly wall clock
client and server code and algorithms. The changes have been implemented to
be mostly backwardly compatible, so existing code should continue to work. The
only exception will be any custom wall clock client algorithms.

Clock objects can now calculate dispersion (error bounds). Clocks can also
track clock availability (mirroring the concept of timeline availability).

Wall clock client algorithms have been switched from measuring and adjusting
the same clock (representing the wall clock) to instead measuring its parent
and setting the correlation. Any custom wall clock client algorithms will
not work and will need to be updated.

How to 'upgrade' existing code

  • Use a CorrelatedClock instead of a TunableClock to model a wall clock.
    and set the "maximum frequency error" when initialising the SysClock
    instead of passing it to a WallClockClient or WallClockServer.
  • Use a Correlation object instead of a tuple (parentT,childT) to represent
    correlations for a CorrelatedClock
  • Control and check timeline availability of clock objects instead of setting
    or querying the availability of the TS protocol server or client.
  • Update any custom algorithms you might have created for wall clock clients.
    • Candidate objects now represent the relationship between the parent
      of the local wall clock (instead of the local wall clock itself)
      and the server's wall clock.`
    • Algorithms and Filters now receive a single Candidate object in units of
      nanoseconds. They no longer receive a Candidate converted to units of
      clock ticks.
    • Predictors should return a Correlation instead of an adjustment value.
  • DispersionCalculator is being deprecated. It still exists, but you should
    stop using it and instead use Candidate.calcCorrelationFor function to
    create a correlation which you then put into a CorrelatedClock and call
    the dispersionAtTime function.

Examples of old way (0.3.x and earlier):

s = SysClock()
wallClock = TunableClock(s, tickRate=1000000000)

algorithm = LowestDispersionCandidate(wallClock,repeatSecs=1,timeoutSecs=0.5, localMaxFreqErrorPpm=500)
wc_client=WallClockClient(bind, dest, wallClock, algorithm)
wc_client.start()

timeline = CorrelatedClock(wallClock, tickRate=1000, (10,20))

timeline.correlation = ( timeline.correlation[0], timeline.correlation[1] + 50)

ts = TSClientClockController(tsUrl, contentIdStem, timelineSelector, timeline)
print ts.available

Equivalent new way (0.4 and later):

s=SysClock(maxFreqErrorPpm=500)
wallClock=CorrelatedClock(s,tickRate=1000000000)

algorithm = LowestDispersionCandidate(wallClock,repeatSecs=1,timeoutSecs=0.5)
wc_client=WallClockClient(bind, dest, wallClock, algorithm)
wc_client.start()

timeline = CorrelatedClock(wallClock, tickRate=1000, Correlation(10,20))

timeline.correlation = timeline.correlation.butWith(childTicks=timeline.childTicks + 50)

ts = TSClientClockController(tsUrl, contentIdStem, timelineSelector, timeline)
print timeline.isAvailable()

Summary of changes:

Main changes in new clock model (da846a9):

  • API addition: can setParent() on CorrelatedClock, RangeCorrelatedClock and TunableClock.
  • API change: All clock objects modified to be able to track error values and calculate dispersions and clock availability
  • API change: CorrelatedClock class modified to use a Correlation object instead of a tuple.
  • API change: TunableClock reimplemented as subclass of CorrelatedClock
  • API change: WallClockClient, WallClockServer initialisation arguments - precision and maxfreqerror now optional. Now, by default, taken from the clock.
  • API change: Wall clock client algorithms (dispersion, filtering, prediction) changed to update a CorrelatedClock and to measure the parent of the clock representing the wall clock. Review the documentation to understand how to update any algorithms you might have implemented.
  • API change: DispersionCalculator class deprecated (but still available). Use Candidate.calcCorrelationFor and CorrelatedClock.dispersionAtTime instead.
  • Tests: Updated to reflect changes.
  • Docs: Updated to reflect changes.

Other improvements/bugfixes:

  • Bugfix: Tracking of number of connections to CSS-CII and CSS-TS had a leak (4c76042)
  • API addition: setParent() on CorrelatedClock (d4576d7)
  • Bugfix: NotImplemented exception used incorrectly (d4576d7)
  • Bugfix: Workaround for OSX 10.11 SIP for monotonic clock module (P-R #6 and P-R #7)
  • Improvement: Support for monotonic clock on Android.
    (P-R #5 by Jack Jansen)
  • Bugfix: clock.getEffectiveSpeed() stuck in infinite loop. (ceb3f33)
  • Docs: Now correctly links to github source for correct branch/version.
  • Docs: Improvements to setup/release process to format PyPI description correctly (by converting to ReStructuredText)

Bugfixes and thead safety improvements

20 Apr 17:52
Compare
Choose a tag to compare

This release contains only bug fixes and modifications to the build/packaging process used on github.

  • Build: Migrated to hosting documentation on readthedocs.org and doing build checks with travis-ci.org
  • Bugfix: improvements to thread safety
  • Bugfix: incorrect arguments on disconnect handler in CIIClient

Bugfixes and minor API enhancements

17 Dec 10:10
Compare
Choose a tag to compare

This release contains only bugfixes and minor backward compatible API additions.

  • Bugfix: Initialiser for CIIServer class to avoid corruption of default value for initialCII if a 2nd CII server is instantiated
  • API addition: Added copy() methods to all classes representing JSON messages.
  • Bugfix: TSClient class did not correctly handle when contentId is null
  • Bugfix: examples/TSClient.py now exits when the connection is closed.

Packaging version fix

01 Sep 22:13
Compare
Choose a tag to compare
  • Completed support for uploading packages to pypi to enable installation using pip
  • Bugfix: setup.py was not tracking same version number as in VERSION file.

Bugfixes and CSS-TS Server API enhancements

01 Sep 21:21
Compare
Choose a tag to compare
  • API change: Modified API for TimelineSource for TS Servers to allow for situations where it takes time to begin extracting a timeline at the server.
  • Docs: Switched to referring to spec as ETSI 103 286 now it is published by ETSI
  • Docs: Updated to reflect API changes
  • Docs: General minor fixes
  • Bugfix: CIIServer disconnect callback failed due to wrong number of arguments
  • Bugfix: Incorrect use of "presentationStatus" CII property in examples. Should have been a list, not a string. Also added a check to trap this.
  • Bugfix: Some command line arguments being ignored in examples/TVDevice.py
  • Bugfix: Wallclock time printed in wrong units in examples/WallClockClient.py

Dispersion reporting improvement release

17 Mar 12:01
Compare
Choose a tag to compare

This release adds improved mechanisms to report dispersion from the LowestDispersionAlgorithm Wall Clock Client algorithm. This makes it possible to calculate future dispersion or log dispersion and infer the greatest dispersion during a period of time.