Skip to content
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

Closed
sneelavara opened this issue Apr 3, 2020 · 3 comments
Closed

CEA-608 caption stuck on screen for several minutes #7181

sneelavara opened this issue Apr 3, 2020 · 3 comments
Assignees

Comments

@sneelavara
Copy link
Contributor

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%.

@icbaker
Copy link
Collaborator

icbaker commented Apr 6, 2020

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 CeaSubtitle with cues = Collections.emptyList().

@sneelavara
Copy link
Contributor Author

@icbaker Thank you for the input. Please review pull request #7199

stevemayhew pushed a commit to TiVo/ExoPlayer that referenced this issue Apr 7, 2020
This changes fixes issue google#7181.  Removing CEA-608 captions that timeout after 16 seconds without a
clear.
@icbaker icbaker linked a pull request Apr 20, 2020 that will close this issue
icbaker pushed a commit that referenced this issue Apr 27, 2020
This changes fixes issue #7181.  Removing CEA-608 captions that timeout after 16 seconds without a
clear.
@icbaker
Copy link
Collaborator

icbaker commented Apr 27, 2020

This is available in dev-v2.

@icbaker icbaker closed this as completed Apr 27, 2020
@google google locked and limited conversation to collaborators Jun 27, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants