Metadata file / stream output mixes sync and async conventions #119
Description
Describe the bug
When we output metadata, we can do sync or async. We're mixing the stream ID and stream types for those.
From ST1402.1, on sync:
ISO/IEC 13818-1 Table-34 defines a stream_type = 0x15 for “Metadata carried in PES packets,”
and Table 2-22 defines a stream_id = 0xFC for “metadata stream.”
From ST1402.1, on async:
In ISO/IEC 13818-1, Table-34 defines a stream_type = 0x06 for “PES packets containing private
data,” and Table 2-22 defines a stream_id = 0xBD for “private_stream_1.”
We are doing 0x06 with 0xFC.
To Reproduce
Steps to reproduce the behavior:
- Run the
VideoFileInputOutputIT::testWithData()
integration test - Inspect the
testWithData.ts
file (I used tsanalyze from tsduck) - Note:
|=============================================================================|
| PID: 0x0101 (257) MPEG-2 PES private data |
| PES stream id: 0xFC (MPEG-7 metadata stream) |
| Service: 0x0001 (1) Service01 |
|-----------------------------------------------------------------------------|
| Single Service PID Transport: Discontinuities: |
| Bitrate: .... 43,057 b/s Packets: ........... 240 Expected: ......... 0 |
| Access: .......... Clear Adapt.F.: .......... 120 Unexpect: ......... 0 |
| Duplicated: .......... 0 PES: |
| PCR: ................. 0 Packets: ........ 120 |
| Inv.Start: ........ 0 |
|=============================================================================|
That should say:
MPEG-2 PES private data
and PES stream id: 0xBD
or
MetaData in PES packets
and PES stream id: 0xFC
This is a non-conformance in CMITT 1.3.0, and is a likely interoperability problem.
Expected behavior
Conformance with ST1204. Ideally we'd be able to select either, but at least one would be enough to solve this ticket (with the other being a future feature).
N/A
Configuration (please complete the following information):
- OS: Linux
- JDK: java version "1.8.0_201"
- jMISB version or commit: f081146
Additional context
I tried setting the metadata stream identifier in VideoOutput (i.e. metadataStream.stream_identifier(0xBD);
) but that didn't have any effect.
@wlfgang any ideas?