Closed imgrant closed 9 years ago
Hi Ian,
Yes, I would be very interested to bring the new Songcast functionality into the main stream.
I'm just about to do some testing with fitting a Real Time Clock to keep the players in sync on Songcast, so once I done that I will add your new code.
Thanks a lot,
Pete.
Great, let me know if you need me to make a diff patch or work out how to create a pull request or whatever. There is scope for further development, the receiver should ideally request that the sender resend missing frames to recover dropped packets, at the moment it doesn't so dropped packets do still cause audio artefacts. A useful tool I found for simulating network problems is 'clumsy', you can make it drop, reorder, duplicate and lag network packets.
Hi Ian,
In this case I think it will be easier just to copy and paste your code from OHUMessageAudioHandler.
I've not seen clumsy before, looks good..
Cheers,
Pete.
Thanks Ian,
I've just added you code and pushed it as a beta version..
Thanks again for your support,
Pete.
Great, hope it helps/works/doesn't screw anything up. Also, for reference, the implementation is basically copied from OpenHome/ohSongcast sample files (https://github.com/openhome/ohSongcast/blob/master/OhmReceiver.cpp)
Hi Pete,
I've implemented a repair mechanism for the Songcast stream in a fork of your MediaPlayer that you might be interested in bringing in to your repository? It can handle out-of-order and duplicate frames in the incoming stream (which can happen in poor network conditions), re-ordering or dropping them as appropriate to avoid producing audible artefacts in the output audio. My fork is at https://github.com/imgrant/MediaPlayer. Unfortunately I don't seem to have set up the repository correctly, as I can't seem to create a pull request (tho I may be doing it wrong, having never done it before). In any case, I have also made lots of other changes to suit my own (largely cosmetic) needs which you might want to ignore. The critical changes are (all?) in OHUMessageAudioHandler.java