-
Notifications
You must be signed in to change notification settings - Fork 6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CEA-608 caption stuck on screen for several minutes #7181
Comments
Thanks for the report, I can repro using the test stream provided by email. I think this is an enhancement rather than a bug - the source media isn't spec compliant and my reading of Annex C.9 is that it's not "recommended" to timeout captions but more like a workaround that "some manufacturers have suggested". If you're already working on a PR that's great - I think the right way to generate an 'erasure sequence' would be to create a |
This changes fixes issue google#7181. Removing CEA-608 captions that timeout after 16 seconds without a clear.
This changes fixes issue #7181. Removing CEA-608 captions that timeout after 16 seconds without a clear.
This is available in dev-v2. |
Issue description
Summary
CEA-608 caption stuck on screen for several minutes (mostly during commercial breaks)
Root Cause
On certain Live TV channels the Caption from Live TV program stays on screen throughout the commercial. The commercials in such case don’t have the caption. But the the outdated caption from the program stays on screen.
The root cause is that the caption provider is not inserting the control words such as End_Of_Caption(EOC 14 2F), Erase_Displayed_Memory(EDM 14 2C), Eras_NonDisplay_Memory(ENM 14 2E) on CEA-608 caption services. Since the commercials don’t have caption, the previously displayed captions are not erased.
CEA-608 spec Annex C.9 recommends Automatic Caption Erasure (Preferred). FCC rules describe events, other than reception of commands intended to erase, which trigger the erasure of caption display and memory. These include the viewer switching receiver channel, data channel, or the selected field; loss of valid data; or the viewer selecting a non-captioning receiver function.
CEA-608 Annex C.9 prefers If no data are received for the selected caption channel within a given time, the decoder should automatically erase the caption. Such erasure may supersede the intentions of the caption service providers and institute one maximum display time for all captioning services. If such a timeout is deemed necessary, however, the time limit should be no less than 16 seconds.
Proposed Solution
Pull request is in progress. We propose adding a check in Decoder.dequeueOutputBuffer() that will track the time since the last erasure control word was processed and if it exceeds the 16 second time out, generate an erasure sequence (Cue?)
Reproduction steps
Using the sample HLS stream, play to the first commercial break 30 seconds into the stream. Observe the caption "A Nationwide ..." stays on the screen during the entire ad series
Link to test content
Content is broadcast from cable, so link was sent to exoplayer dev email
A full bug report captured from the device
N/A
Version of ExoPlayer being used
2.11.4
Device(s) and version(s) of Android being used
Tested and reproduced on Arris and Amino AndroidTV devices running Android Pie. Reproduction is 100%.
The text was updated successfully, but these errors were encountered: