Skip to content

bluetooth/gst: Unify encoder and decoder pipeline setup

Simplify GStreamer codecs by unifying members and functions used for encoding and decoding. If both are required two gst_info objects can be created, without the possibility for typos to ruin the other pipeline.


The encoding and decoding pipeline are essentially identical: both push data in via an appsrc, route it through a codec-specific (opaque) element, and finally pull data out of an appsink. The code already makes it impossible to have an encoding and decoding pipeline simultaneously set up in gst_info, and converting bool for_encoding to a tri-state (encode, decode, or both) would be messy; particularly when encoding and decoding could possibly differ in format.

This change removes a swath of code and removes the possibility of misusing enc_ or dec_ in the wrong place (ie. after copying a bit of code and forgetting to rename one or two). When bidirectional codecs come online a second codec instance (gst_info) can simply be created and controlled independently.


CC @SanchayanMaity

As always, a branch with the changes applied to AAC is available: https://gitlab.freedesktop.org/MarijnS95/pulseaudio/-/commits/gst-aac

Edited by Marijn Suijten

Merge request reports