canalplus/rx-player

[Question] Is there a way to know which dash parser we're using?

Closed this issue · 4 comments

Hi there,

Quick question, is there a way to know what dash parser we're using currently?

I notice there's an API getCurrentModeInformation().useWorker to tells me whether worker is enabled, but I haven't found any similar API to tell me what parser we're using now. Could someone point me a correct direction?

Right now the only way is through logs. If you have added the wasm parser as a feature and if the device is compatible you should see: DASH: Running WASM MPD Parser. in the logs

If running the JS parser you should see most likely DASH: WASM MPD Parser not initialized. Running JS one or in some cases DASH: MPD doesn't seem to be UTF-8-encoded. Running JS parser instead of the WASM one.

For now we don't add the used parser to getCurrentModeInformation because it might be variable depending on if we succeeded to initialize it, on the final encoding of the MPD, and other criteria.


You want to rely on the WebAssembly MPD parser because of performance issues with the JS ones?

The only important use case we've for now seen for that parser was when playing huge (like 10MB) MPD files on embedded devices where the great majority of that size came from extremely large <SegmentTimeline> elements (due there to a ~10 hour timeshift buffer, multiple tracks + Representations and segment declared individually in the MPD).
It would be interesting to see if there's other cases where the WASM MPD parser makes a big difference.

You want to rely on the WebAssembly MPD parser because of performance issues with the JS ones?

Yeah, we met some performance issue on lower end devices. Our manifest not that large (10MB), it's around 3MB.

OK thanks,

Yes MULTI_THREAD (to avoid blocking main thread) + DASH_WASM (for perf + less GC pressure potentially) has a chance to help you there.
I hope you'll see an improvement

Yeah, it works perfect. Thanks @peaBerberian .