google / google/ExoPlayer

Question: DTV realtime mode operation

Open
#9,977 0 comments 0 reactions 1 assignee Claimed by @andrewlewis View on GitHub
needs triage question
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.