rsjudka / intelligent-auto

41 stars 15 forks source link

Supports addition of Gstreamer output in openauto #33

Closed icecube45 closed 4 years ago

icecube45 commented 4 years ago

Supports https://github.com/rsjudka/openauto/pull/4.

Majority of this work was done on the headunit desktop project at https://github.com/viktorgino/headunit-desktop - I just openautoed it.

To build on a RPI I used the following steps.

apt-get install qt5-default qml-module-qtquick2 qtdeclarative5-dev qtmultimedia5-dev libqt5multimedia5-plugins \
qml-module-qtquick* qml-module-qtmultimedia qml-module-qt-labs-settings qml-module-qt-labs-folderlistmodel \
libqt5xmlpatterns5-dev libqt5bluetooth5 qtconnectivity5-dev qml-module-qtbluetooth libqt5charts5 qml-module-qtcharts
apt-get install build-essential protobuf-compiler libusb-1.0-0-dev libssl-dev openssl libglib2.0-dev \
libboost-dev libudev-dev libtag1-dev libprotobuf-dev libgstreamer1.0-dev gstreamer1.0-plugins-base-apps \
gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-alsa libgstreamer-plugins-base1.0-dev \
gstreamer1.0-pulseaudio libfaad-dev libfftw3-dev librtlsdr-dev libusb-1.0-0-dev mesa-common-dev \
libglu1-mesa-dev zlib1g-dev  portaudio19-dev libsndfile1-dev libsamplerate0-dev ofono ofono-dev \ 
ofono-phonesim pulseaudio bluez bluez-obexd pulseaudio-module-bluetooth qtconnectivity5-dev \
qml-module-qtbluetooth libkf5bluezqt-dev qml-module-org-kde-bluezqt qtbase5-private-dev libcanberra-dev \
libgconf2-dev libpulse-dev libmp3lame-dev libsoapysdr-dev libmpg123-dev
apt-get install libboost-dev-all librtaudio-6 librtaudio-dev

Not all of these are needed for sure, and there's significant overlap between what's needed here and for intelligent auto.

Then compiled and built qtgstreamer

git clone git://anongit.freedesktop.org/gstreamer/qt-gstreamer
cd qt-gstreamer
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH) \
-DCMAKE_INSTALL_INCLUDEDIR=include -DQT_VERSION=5 -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS=-std=c++11
make -j4
sudo make install
sudo ldconfig

Then follow usual IA build steps, but with cmake as cmake -DCMAKE_BUILD_TYPE=Release -DRPI_BUILD=True, -DGST_BUILD=True

Then using raspi-config enabled the experimental GL driver with fake KMS under Advanced Options.

I also bumped up the memory split to 256 for good measure.

IA then ran buttery smooth with gstreamer.

Tested on Stretch/Buster on a Pi3. Tested with Buster on a Pi4.

Moving to gstreamer will support many upcoming features with CAN integration. As well as just makes development a bit smoother.