[mythtv-firehose] mythtv branch fixes/0.25 updated by jyavenard. v0.25-79-g2970fe9

Git Repo Owner noreply at mythtv.org
Sun May 6 05:43:33 UTC 2012


The branch, fixes/0.25 has been updated on the
mythtv repository by gitolite user jyavenard.
       via  2970fe9d9cd6941335f38c776d97cd02bf6426d5 (commit)
       via  b1d25464f5b618d03ae350842d1d6221ff215fd7 (commit)
       via  7b4e31c37c97b60af0424839107089c6b5adec8e (commit)
       via  03b3a29693d815e2866b26e14a7b411e6f864588 (commit)
       via  e8397e37099fdce8b055d95c1fa99e0352651b22 (commit)
       via  8838b0245346c943d0d2293847c2e4762af91dba (commit)
       via  a83c5c9a2347c9062ef2fd4568cc40539217c04a (commit)
       via  b92125c01670959f681de1d064ecf9a9330c96ba (commit)
       via  73415cdd7b3ad46bbea27c8722c0eda3b4f04a12 (commit)
       via  f9c851aaf51ac855cbf29f5ac8a62cdc09fc6e1c (commit)
       via  f942c7b4f15b479a9d7eec1e45ac8962643f87f7 (commit)
       via  c74afaa9830b6df31c3f1b374d523823883887e2 (commit)
      from  1c4066e124ac9e50d34ff558ec72eb1cdd85c6c7 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 2970fe9d9cd6941335f38c776d97cd02bf6426d5
Author:    Jean-Yves Avenard <jyavenard at mythtv.org> at Sun, 6 May 2012 15:43:18 +1000
Committer: Jean-Yves Avenard <jyavenard at mythtv.org> at Sun, 6 May 2012 15:43:18 +1000
URL:       http://code.mythtv.org/cgit/mythtv/commit/?id=2970fe9d9cd6941335f38c776d97cd02bf6426d5

Bump API version number to "0.25.20120506-1
Following changes to ServerPool



commit b1d25464f5b618d03ae350842d1d6221ff215fd7
Author:    Jean-Yves Avenard <jyavenard at mythtv.org> at Sun, 6 May 2012 13:59:14 +1000
Committer: Jean-Yves Avenard <jyavenard at mythtv.org> at Sun, 6 May 2012 15:06:38 +1000
URL:       http://code.mythtv.org/cgit/mythtv/commit/?id=b1d25464f5b618d03ae350842d1d6221ff215fd7

Add AirPlay support from iTunes.
iTunes doesn't send session ID when initiating a connection, we receiving content without a session id, use the IP address of the AirPlay client instead.

[cherry-picked from 1f4f89b2206325b6f2bdd8face7d9e2b572144b5]



commit 7b4e31c37c97b60af0424839107089c6b5adec8e
Author:    Jean-Yves Avenard <jyavenard at mythtv.org> at Sun, 6 May 2012 13:56:58 +1000
Committer: Jean-Yves Avenard <jyavenard at mythtv.org> at Sun, 6 May 2012 15:06:16 +1000
URL:       http://code.mythtv.org/cgit/mythtv/commit/?id=7b4e31c37c97b60af0424839107089c6b5adec8e

Fix seeking with some http streamed content
Do not rely on the URL to determine if we can seek in media. Instead try to seek to the start, if no error occurs: we can seek.
This allows seeking in a youtube stream using AirPlay

[cherry-picked from 357573abd6a7757931d90f25014211044f4a87eb]



commit 03b3a29693d815e2866b26e14a7b411e6f864588
Author:    Jean-Yves Avenard <jyavenard at mythtv.org> at Fri, 4 May 2012 23:42:16 +1000
Committer: Jean-Yves Avenard <jyavenard at mythtv.org> at Sun, 6 May 2012 15:05:44 +1000
URL:       http://code.mythtv.org/cgit/mythtv/commit/?id=03b3a29693d815e2866b26e14a7b411e6f864588

Various fixes in Airplay
Fixes:
-Playback on frontend always start at the beginning, iOS continuing to play where left off.
-Scrubbing not working
-Playback position on frontend and iOS device not in sync
-When quitting playback on iOS, video continue on frontend.
-When quitting playback on frontend, iOS not notified and playback counter continues progressing

There's still a minor cosmetic defect, when scrubbing quickly and the iOS device pause playback, the positions between the frontend and iOS device are not in sync. It will become in sync only once playback resume.

MythTV doesn't handle http live streaming playback yet, so Airplay will not work with some applications (in particular AirVideo) streaming via HLS

[cherry-picked from fe11b61ed74e7c128cb7f59e88596e842ef64d75]



commit e8397e37099fdce8b055d95c1fa99e0352651b22
Author:    Jean-Yves Avenard <jyavenard at mythtv.org> at Thu, 3 May 2012 00:08:31 +1000
Committer: Jean-Yves Avenard <jyavenard at mythtv.org> at Sun, 6 May 2012 15:05:09 +1000
URL:       http://code.mythtv.org/cgit/mythtv/commit/?id=e8397e37099fdce8b055d95c1fa99e0352651b22

Always re-use the same computer ID for AirPlay. Share ID between RAOP and AirPlay
Random ID is generated the first time, the following session will always re-use the same ID.
Having AirPlay and RAOP share the same hardware ID makes mythfrontend behave more like an AppleTV: only one device is showing in the list. Either one for audio or one for audio+video, not both at the same time.

[cherry-picked from f125f53c8be5c9b6bd7c1ea785b606d24bf5bd7b]



commit 8838b0245346c943d0d2293847c2e4762af91dba
Author:    Jean-Yves Avenard <jyavenard at mythtv.org> at Wed, 2 May 2012 18:45:04 +1000
Committer: Jean-Yves Avenard <jyavenard at mythtv.org> at Sun, 6 May 2012 15:04:41 +1000
URL:       http://code.mythtv.org/cgit/mythtv/commit/?id=8838b0245346c943d0d2293847c2e4762af91dba

Use new ServerPool capabilities, and only advertise AirPlay via Bonjour if the server creation was successful
[cherry-picked from 29cd39bcb1213a31f2ec8b4d679a8dde6556b652]



commit a83c5c9a2347c9062ef2fd4568cc40539217c04a
Author:    Jean-Yves Avenard <jyavenard at mythtv.org> at Wed, 2 May 2012 23:58:48 +1000
Committer: Jean-Yves Avenard <jyavenard at mythtv.org> at Sun, 6 May 2012 15:00:34 +1000
URL:       http://code.mythtv.org/cgit/mythtv/commit/?id=a83c5c9a2347c9062ef2fd4568cc40539217c04a

Fix RAOP time request failing to send
Was using the wrong socket.
Also fix typo in OPTIONS response.

[cherry-picked from 374e2cd64c77f061aea398658a808c1ebdbb8d7e]



commit b92125c01670959f681de1d064ecf9a9330c96ba
Author:    Jean-Yves Avenard <jyavenard at mythtv.org> at Wed, 2 May 2012 05:04:56 +1000
Committer: Jean-Yves Avenard <jyavenard at mythtv.org> at Sun, 6 May 2012 14:57:48 +1000
URL:       http://code.mythtv.org/cgit/mythtv/commit/?id=b92125c01670959f681de1d064ecf9a9330c96ba

Add full IPv6 support to RAOP and fix Bonjour discovery of RAOP service.
Do not advertise RAOP via Bonjour, if listening on the local interfaces failed

[cherry-picked from 34dcb2bc7a882eb97fbdb9c43a480165c3551140]



commit 73415cdd7b3ad46bbea27c8722c0eda3b4f04a12
Author:    Jean-Yves Avenard <jyavenard at mythtv.org> at Wed, 2 May 2012 04:58:36 +1000
Committer: Jean-Yves Avenard <jyavenard at mythtv.org> at Sun, 6 May 2012 14:56:46 +1000
URL:       http://code.mythtv.org/cgit/mythtv/commit/?id=73415cdd7b3ad46bbea27c8722c0eda3b4f04a12

Add two network utility methods to ServerPool
Will be used by Airplay and RAOP

[cherry-picked from 1d375dbd5ea6b7a44d23e47c5a2f8d35c2e2f23c]



commit f9c851aaf51ac855cbf29f5ac8a62cdc09fc6e1c
Author:    Jean-Yves Avenard <jyavenard at mythtv.org> at Wed, 2 May 2012 04:35:07 +1000
Committer: Jean-Yves Avenard <jyavenard at mythtv.org> at Sun, 6 May 2012 14:56:16 +1000
URL:       http://code.mythtv.org/cgit/mythtv/commit/?id=f9c851aaf51ac855cbf29f5ac8a62cdc09fc6e1c

Fix handling of IPv6 link-local address
ServerPool previously couldn't use IPv6 link-local addresses.
Also, fix the issue where no messages could be received on UDP bound sockets initiated from ServerPool

[cherry-picked from 34c46f1933e3480bd36441b737f46f5058c85e5e]



commit f942c7b4f15b479a9d7eec1e45ac8962643f87f7
Author:    Jean-Yves Avenard <jyavenard at mythtv.org> at Tue, 1 May 2012 02:42:52 +1000
Committer: Jean-Yves Avenard <jyavenard at mythtv.org> at Sun, 6 May 2012 14:55:39 +1000
URL:       http://code.mythtv.org/cgit/mythtv/commit/?id=f942c7b4f15b479a9d7eec1e45ac8962643f87f7

Add two network utility methods to ServerPool
Add tryListeningPort and tryBindingPort ; those methods are used to bind/listen on all local interfaces, both IPv6 and IPv4.
Add them to ServerPool class as they add functionality to it, but they do not change its functionality and how by default it binds on interfaces by looping individually through all of the.
They will be use for local services that are discovered through Bonjour.

[cherry-picked from db30e6eaad92d067a84314d43f912f57e4d89465]



commit c74afaa9830b6df31c3f1b374d523823883887e2
Author:    Jean-Yves Avenard <jyavenard at mythtv.org> at Mon, 30 Apr 2012 21:48:14 +1000
Committer: Jean-Yves Avenard <jyavenard at mythtv.org> at Sun, 6 May 2012 14:54:58 +1000
URL:       http://code.mythtv.org/cgit/mythtv/commit/?id=c74afaa9830b6df31c3f1b374d523823883887e2

Almost complete rewrite of RAOP server
Let me commend Mark Kendall for his previous implementation. As far as I could tell, his RAOP server was the only one implementing Airtunes v2 functionalities with a/v sync timestamps.
The rewrite serves several purposes. Mainly, I wanted to take ownership of this area of the code, and there were things I couldn't figure out. Most likely because whatever Mark used for AirPort's technical documentation isn't what I got.
Technical description of RAOP came mostly from:
-http://git.zx2c4.com/Airtunes2/about
-http://blog.technologeek.org/airtunes-v2

I found the later to be the most correct.

Main area of focus:
-Audio Quality: Over slow or poor network connectivity (e.g. slow wireless) and with lots of packet drops: audio would have been corrupted (the system played audio packets in the order they were received, and not in the order they were supposed to be). For testing purposes, I simulated a 30% packet drop, and playback remained perfect.
-A/V Sync: Achieving perfect A/V sync across all platforms and with all the different type of audio architecture is almost impossible. However, I believe the results achieved are very good. Playback will automatically adjust itself according to the network latency and the audio hardware latency.

New features:
We now retrieve the media's metadata: Album name, artist name, song title and coverart. This only works when using iTunes. iOS device do not send metadata unless using FairPlay encryption. We only support RSA encryption.
Currently, this information is only shown in the logs, but in the future we'll be able to nicely show them in mythfrontend.

Additional credits:
-http://nto.github.com/AirPlay.html, gave information about how to configure Bonjour in order to receive MetaData from iTunes
-http://code.google.com/p/ytrack/wiki/DMAP : iTunes DMAP metadata structure

[cherry-picked form bd883d7216b497d8193975e3b19cb7134eaff710]



-----------------------------------------------------------------------

Summary of changes:
 mythtv/libs/libmythbase/mythversion.h         |    2 +-
 mythtv/libs/libmythbase/serverpool.cpp        |  333 ++++++-
 mythtv/libs/libmythbase/serverpool.h          |   16 +-
 mythtv/libs/libmythtv/mythairplayserver.cpp   |  225 +++--
 mythtv/libs/libmythtv/mythairplayserver.h     |   13 +-
 mythtv/libs/libmythtv/mythraopconnection.cpp  | 1295 ++++++++++++++++++-------
 mythtv/libs/libmythtv/mythraopconnection.h    |  145 ++-
 mythtv/libs/libmythtv/mythraopdevice.cpp      |  116 ++-
 mythtv/libs/libmythtv/mythraopdevice.h        |    1 +
 mythtv/libs/libmythtv/streamingringbuffer.cpp |   12 +-
 10 files changed, 1574 insertions(+), 584 deletions(-)

-- 



More information about the mythtv-firehose mailing list