'Dirty' Xbox 360 transcoding seek fix
'Dirty' Xbox 360 transcoding seek fix
First of all, thanks a lot for this amazing piece of software. 
Secondly, I am aware that it is difficult to implement seeking on the Xbox 360 when transcoding video files because of the 'seek by byte' the xbox uses instead of 'seek by time'. However, would it be possible to simply skip a configurable amount of seconds (s) forward when the xbox sends a seek command? The requested bytes by the xbox will be ignored (since it's not possible to calculate those when transcoding I believe) but UMS might be able to calculate the current video time+s and emulate a seek that way..
Would this be possible? (Theoretically?)
If yes, I am able to do some programming myself but I am not familiar with the UMS codebase and the DLNA protocol so if somebody could point me in the right direction I might be able to test/code it myself and make an unofficial build with this 'fix' if it's too dirty for the codebase.

Secondly, I am aware that it is difficult to implement seeking on the Xbox 360 when transcoding video files because of the 'seek by byte' the xbox uses instead of 'seek by time'. However, would it be possible to simply skip a configurable amount of seconds (s) forward when the xbox sends a seek command? The requested bytes by the xbox will be ignored (since it's not possible to calculate those when transcoding I believe) but UMS might be able to calculate the current video time+s and emulate a seek that way..
Would this be possible? (Theoretically?)
If yes, I am able to do some programming myself but I am not familiar with the UMS codebase and the DLNA protocol so if somebody could point me in the right direction I might be able to test/code it myself and make an unofficial build with this 'fix' if it's too dirty for the codebase.

- SharkHunter
- Developer
- Posts: 648
- Joined: Fri Jun 01, 2012 9:36 pm
Re: 'Dirty' Xbox 360 transcoding seek fix
Yes you probably could. Take a look here https://github.com/UniversalMediaServer ... java#L2173. The timeseek is controlled by the params.timeseek value. You could add a check somewhere in the transcode part of that function that looks like
You also need a check somewhere to ignore the ignore the incoming range.
Code: Select all
if(mediarenderer.isXBOX()) {
params.timeseek += xxxx;
}
We reject: kings, presidents and voting.
We believe in: rough consensus and running code.
We believe in: rough consensus and running code.