Let me elaborate on some of the potential problems I can foresee with TSR viewing, and why I think this might be a lot of work to turn it into a robust, slick TV viewing experience.
Problem 1.
It will be very tempting to watch near-live TV. Especially if you can hear your neighbour shouting "goal" through the wall a few seconds before you see it on screen. If you are watching very close to live the media player could request a block that hasn't yet been written in the TSR, or worse has only been half written. If this happens then at best playback WILL break up. At worst the player may crash and you'll have to find your place again by skipping forward from the start.
Problem 2.
Pausing the playback while you take a phone call. This would be OK unless the circular buffer has kicked in...
Code:
0 ====-----------------------===== 2hrs <- TSR
^ ^
rec point watching point
In the ascii picture above the "=" symbol indicates "to be seen" parts of the buffer.
A big problem now occurs if the humax starts to record two programmes on separate LCN which forces a channel change. (Or maybe one of the kids changes channel in the lounge). Now the humax resets the TSR and starts to write at 0. A nice "hole" is now appearing (and growing) in the area of catchup buffer you have yet to watch.
One way to overcome this: Within (2hrs?) "toggle" the channel away, and back, to reset the write point in the TSR and prevent circular buffering. You'd also have to restart your media player just after you've done this. This would mean you can't pause live TV (or at least you must be able to catch up within 2hrs). So not a very slick solution - but it should work OK.
Possible solution to problems
To overcome these problems, I think the following architecture would be required:
Code:
------------- ---------------- ============================ -------
Humax.tv Humax media Relaying media server, media
writes to ---> server performs --> written by us, to overcome --> player
TSR decryption buffering problems
------------- ---------------- ============================ -------
^
This flow made
possible by the
symbolic links
trick
Such a "relaying media server" would have to be written by us. It would have to somehow sense the point in the TSR where the humax is currently writing. To overcome problem 1, the relay would automatically delay sending responses to the media player until data is available in the TSR. To overcome problem 2, the relay could start its own timeshift buffer when it detects a problem could occur. Overall lots of development work and hurdles to overcome/ test here.
Ironically to implement this workaround would probably be more work than designing a streaming system from scratch, say running on a raspberry pi with a TV capture card. But I know that this isn't the whole point. Sometimes its the challenge that motivates!