Recently I needed to make some large-scale changes in the membrane_h26x_plugin and the current state of the plugin made it particularily difficult.
The main problems are:
- H264 and H265 parsers seem to be too tightly coupled
H26x.Parser behaviour defines a set of "ad-hoc" callbacks that were added just because some codec-specific customization was needed so we end up with a flow like H264.Parser.handle_stream_format/4 -> H26x.Parser.handle_stream_format/4 -> H264.Parser.parse_raw_input_format)
- the :error state is not handled in the
SchemeParser which make workarounds like throwing a state neccessary
Recently I needed to make some large-scale changes in the membrane_h26x_plugin and the current state of the plugin made it particularily difficult.
The main problems are:
H26x.Parserbehaviour defines a set of "ad-hoc" callbacks that were added just because some codec-specific customization was needed so we end up with a flow likeH264.Parser.handle_stream_format/4 -> H26x.Parser.handle_stream_format/4 -> H264.Parser.parse_raw_input_format)SchemeParserwhich make workarounds like throwing a state neccessary