Question: DTV realtime mode operation
- Dominant language
- Java
- Stars
- 21.9k
- Forks
- 6k
- PR merge metrics
- No merged PRs in 30d
Description
Hi,
This question is because I'm not sure if the Exoplayer has the correct behaviour with _realtime_ streams from Digital TV tuner sources.
First I explain the problem:
- When playing sources from DTV sources, the MPEG-TS bitstram _may_ have errors. This is because the transport medium used to provide the signal. And unlike with network sources, some TS packets may be missing or may have some errors. The problem is how Exoplayer handles these erros.
Then I explain the current behaviour:
- The first point is what happens if the TS packet is market with errors in the header. In this case the entire packet is removed.
- The second point is what happens if a TS packet is missing in the stream. In this case, the player seems to want to advance until valid data comes.
So the observed behaviour when some error appears is that the player wants to reload the source. But this is not the expected behaviour with a DTV player. With a _realtime_ source you can't wait or advance in time. Therefore, the player is not expected to stall, but to continue decoding "empty" data until new valid data arrives. Thus it is expected that during the interval of time that the errors occur, the decoder will continue to generate frames. Which would be black frames or some old repeated one. And it would continue to generate them at the same framerate.
But the problem is that this expected behavior with such sources is not what the current implementation of Exoplayer provides. I understand that this player is focused on network sources. But it would be interesting to provide also a good support for live streams coming from tuners. Maybe the solution is to add some flag to change the behavior when the developer wants to play a tuner source.
What you think about this?
Thank you in advance for commenting on this.
Contributor guide
Assessment
This issue has not been assessed yet.