You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Closed Caption (CEA-608) tracks do not respect track definition of HLS Master Playlist.
CEA-608 tracks are parsed correctly from the Master Playlist, but SeiExtractor does not seem to use the extracted ID, rather it generates new ones for the Closed Caption tracks extracted from the chunks.
This results in ExoPlayer.EventListener.onTracksChanged reporting back a CC track with generated id.
The expected behaviour would be to have the same name reported back that the MasterPlaylist contains.
For example, given an HLS playlist with Closed Caption track:
Open any HLS stream that has a CEA-608 track defined in its Master Playlist (and has CC in the h264 stream), wait for ExoPlayer.EventListener.onTracksChanged callback and print out the results.
Compare the id of the CEA-608 track with the playlist.
Samsung Galaxy S3 (GT-I9300), Android 4.3
Sony Xperia X (F5121), Android 7.1.1
I don't think this is a device specific issue.
Further info
I debugged the ExoPlayer demo app and found that HlsPlaylistParser.java correctly parses the CC track.
Later when DefaultTsPayloadReaderFactory.buildSeiReader(EsInfo) is called the flag FLAG_OVERRIDE_CAPTION_DESCRIPTORS is set. A new SeiReader is built with the parsed closed caption formats. SeiReader.createTracks(ExtractorOutput, TrackIdGenerator) however does not seem to use the id of the closedCatpionFormats provided at instantiation, rather it generates a new one.
I made the following changes, and it seems to fix the issue. But I'm not sure if this is the correct approach or if I'm breaking some other functionality somewhere else.
Issue description
Closed Caption (CEA-608) tracks do not respect track definition of HLS Master Playlist.
CEA-608 tracks are parsed correctly from the Master Playlist, but SeiExtractor does not seem to use the extracted ID, rather it generates new ones for the Closed Caption tracks extracted from the chunks.
This results in
ExoPlayer.EventListener.onTracksChanged
reporting back a CC track with generated id.The expected behaviour would be to have the same name reported back that the MasterPlaylist contains.
For example, given an HLS playlist with Closed Caption track:
onTracksChanged
will have something like this:The id in this case should be "English".
Reproduction steps
Open any HLS stream that has a CEA-608 track defined in its Master Playlist (and has CC in the h264 stream), wait for
ExoPlayer.EventListener.onTracksChanged
callback and print out the results.Compare the
id
of the CEA-608 track with the playlist.Link to test content
Copied from ExoPlayer's
media.exolist.json
:Apple master playlist advanced (TS): https://tungsten.aaplimg.com/VOD/bipbop_adv_example_v2/master.m3u8
Version of ExoPlayer being used
Tested on:
r2.4.1
dev-v2: 7524228
This was working in r2.2.0.
Device(s) and version(s) of Android being used
Samsung Galaxy S3 (GT-I9300), Android 4.3
Sony Xperia X (F5121), Android 7.1.1
I don't think this is a device specific issue.
Further info
I debugged the ExoPlayer demo app and found that
HlsPlaylistParser.java
correctly parses the CC track.Later when
DefaultTsPayloadReaderFactory.buildSeiReader(EsInfo)
is called the flagFLAG_OVERRIDE_CAPTION_DESCRIPTORS
is set. A newSeiReader
is built with the parsed closed caption formats.SeiReader.createTracks(ExtractorOutput, TrackIdGenerator)
however does not seem to use theid
of theclosedCatpionFormats
provided at instantiation, rather it generates a new one.I made the following changes, and it seems to fix the issue. But I'm not sure if this is the correct approach or if I'm breaking some other functionality somewhere else.
A full bug report captured from the device
A full bug report is not provided, as I'm not sure it would be useful. Please tell me if you need one.
The text was updated successfully, but these errors were encountered: