-
Notifications
You must be signed in to change notification settings - Fork 38
CEA-608 stream does not conform to H.264 standards #99
Comments
Forgot to mention that additionally, the live version of this stream is also affected in the same way: |
Yeah, that is correct. That's a risk of making test assets by hand and also implementing the player ;-) It's an old sin in (https://github.com/Dash-Industry-Forum/dash-live-source-simulator/blob/develop/dashlivesim/cc_inserter/cc_inserter.py) which inserts SEI nal units in the video samples. I'll look into updating both the code and the asset. The live stream is the same content, just shifted in time and sequence number, so if the VoD asset is fixed, the live one will be OK at the same time. |
That's great, thanks for confirming that. |
Should be fixed now. I wrote a small program to move the NAL units to the right position in the samples since I didn't have the original template for generating scc files around. I haven't fixed the cc_inserter.py, so I made #99 for that. |
BTW, it also looks like the SEI is truncated.
Comcast's Caption Inspector tool (which uses ffmpeg to read SEIs) also reports:
In the case of an A/53 CC SEI, the last byte is a padding byte, but it is correct for a player to ignore these broken SEIs. Similarly, VLC 3.0.16 does not report captions in the video files. I'm able to play other H.264 video files with 608 or 708 captions fine. |
Hmm. I also see the message when I run ffprobe, but it is a bit strange since the SEI NAL units of type 4 are 56 bytes long, thus not even close to 424 bytes long. However, there are actually 3 SEI NAL units at the beginning of a segment. First a 754B NAL unit from VLC and then two 56-bytes NAL units with CC1 and CC3 CEA-608 data. In total that is 866B = 2 x 433, so it seems that ffprobe/ffmpeg somehow messes up the different SEI NAL units. Anyway, the CEA-608 NAL units are not proper since they lack the |
There were actually two issues with the CEA-608 SEI NAL units in the asset.
I've fixed these two bytes in each CEA-608 NAL unit in the segments, so now the content should be fine. |
@TobbeEdgeware @tobbee were the public samples actually fixed? Running mp4ff against an mp4 download of https://livesim.dashif.org/dash/vod/testpic_2s/cea608.mpd still reports the SEI NALUs after the primary coded picture. while a conformant file reports them before: Recent ffmpeg versions complain about the "Late SEI" and don't even consider the elements as part of the picture. Regarding the 0xFF removal of the last comment it was likely the marker_bits... |
Hello,
https://livesim.dashif.org/dash/vod/testpic_2s/cea608.mpd
This stream is non-conformant to H.264. The stream is also supplied in the DASH.js test player list of available streams. DASH.js seems to be able to play this non-conformant stream without issue.
The above stream contains two channels of CEA-608 closed caption data which is correctly contained within NAL units of type 0x06 - Supplemental Enhancement Information. However, the order of the NALs does not conform to the H.264 specification.
Specifically, the passage
7.4.1.2.3 Order of NAL units and coded pictures and association to access units
(Emphasis mine)
Please see the first segment analysis screenshot below (Produced from an internal tool).
SEI NAL units number 4 and 5 should come before the primary coded picture, which is NAL number 3.
As this is the only content available that has multiple CEA-608 channels/languages embedded within the video sream, it would be great to have it resolved.
Thanks!
The text was updated successfully, but these errors were encountered: