EricBerendsen / dvbinspector

DVB Inspector is an open-source DVB analyzer, written in java
http://www.digitalekabeltelevisie.nl/dvb_inspector/
GNU General Public License v3.0
184 stars 31 forks source link

Unable to create DSM-CC Object and hierarchy even though private data follows ETSI DVB Standards #65

Closed tomyummmm closed 1 year ago

tomyummmm commented 1 year ago

Hi,

I recorded some Transport Streams for work, and realised that dvbinspector is unable to recognise the DSM-CC packets and list them under the DSM-CC section under PSI, and I am unable to view or export the Object Carousel, directories and files. I am unable to share these as the recordings are over 30GB and due to work reasons.

Looking at the example TS from your website and redirecting the output of the JAR file, it seems that the error is as below:

nl.digitalekabeltelevisie.data.mpeg.dsmcc.DSMCCs update
WARNING: Not supported type; isPartOfObjectCarousel:false, isSSU:false, pid:5xxx

Looking at your code and comments, it seems to be missing the carousel_id_descriptor and data_broadcast_id_descriptor in the PMT when compared to known good TS.

https://github.com/EricBerendsen/dvbinspector/blob/dd4b25e0a8f39f3c731d2ef569167eeff64cc82e/src/main/java/nl/digitalekabeltelevisie/data/mpeg/dsmcc/DSMCCs.java#L79-L93

image

Is it possible to modify the code such that it will still recognise the Object Carousel without the carousel id, but just name it as unknown or something like that? I would like to still be able to export the directories and files from under the PSI DSM-CC.

EricBerendsen commented 1 year ago

It has been a while since I implemented the DSM-CC stuff, and, so I had to revisit the code, and the many (hard to read) standards. Still not pretending to be an expert.

Found in the code that DVB Inspector is not depending on the DSM-CC Carousel_Identifier_descriptor to recognize an object carousel. However it really needs a data_broadcast_id_descriptor, how else would it know what type of data to expect? It can be anything.

tomyummmm commented 1 year ago

Hi, indeed using the PMT plugin to inject the data_broadcast_id worked, DVB Inspector was able to recognise the Object Carousels. Thanks.

--set-data-broadcast-id pid/id[/selector] In the component with the specified PID, add a data_broadcast_id_descriptor with the specified data_broadcast_id. The optional selector is a suite of hexadecimal characters representing the content of the selector bytes.