Page MenuHomeFreeBSD

New port multimedia/QtAV -- A cross-platform multimedia framework based on Qt and FFmpeg. High performance.
ClosedPublic

Authored by tcberner on Mar 29 2017, 4:11 PM.

Details

Reviewers
mat
rakuco
Group Reviewers
kde
Commits
rP437956: New port: multimedia/QtAV
Summary
  • Split out from D10169 to make it slimmer

Diff Detail

Repository
rP FreeBSD ports repository
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

FWIW, I ported this a while back for some other port that flopped and never submitted since it would just be a leaf. Very close to what you did. I'll just add that since we have many users still using portmaster/portupgrade, this will auto-dectect optional dependencies already installed including audio/openal(-soft), audio/pulseaudio, multimedia/libass, multimedia/libva, and textproc/uchardet. All of those probably should be optionified so that the dependencies are registered properly. The regression tests could probably be optionified too. I don't really have a strong opinion on the ones that you have as hard dependencies, so that leaves openal and uchardet to deal with.

I did experience extremely choppy (to the point of being ridiculous) audio playback using pulseaudio with the example player. Not sure if it's just me or if it should just be disabled so users aren't getting a bad experience. Openal worked just fine, but IIRC it would default to pulseaudio if both were installed and there was no way that I could find to select which one to use. Without openal, there was no sound at all. It would play videos (no sound) and would not attempt to play audio files at all.

If anyone else can verify, I would just disable pulseaudio completely and add openal as a hard dependency.

@jhale: nice to see you around! Thanks for the detailed explanation.

@tcberner: https://github.com/wang-bin/QtAV/wiki/QtAV-Build-Configurations explains how to enable/disable checks for several of the features Jason mentioned, it's worth taking a look at. I'm also curious as to whether the libraries, binaries and headers should be installed into Qt's prefix. Isn't it more logical to install them into ${LOCALBASE} instead?

First step to optionify the optional dependencies.

I'm not quite sure yet wheter it actually works as expected.

It seems to never pick up portaudio (which might be a good thing wrt to @jhale's comments), but always libva and openal.

uchardet and pulseaudio seems to work as expected.

I'll have to look into the qmake stuff... for libva and openal.

Don't install to Qt's directories, but to ${LOCALBASE}/{bin,include,lib} as suggested by @rakuco.

What kind of problems did you have with openal and libva? I test-built the port here with the options checked, then unset them and the configuration process did not look for them. Same with starting the build with the options disabled, so the dependency packages aren't even installed.

multimedia/QtAV/Makefile
19 ↗(On Diff #27153)

Poudriere says you need USE_GL=gl too.

51–52 ↗(On Diff #27153)

Why are these two needed?

I edited my previous comment. Pulseaudio is what what causing trouble, not portaudio. (I always get those two mixed up).

I never tested portaudio because it was conditioned to always be off in QtAV.pro.
Line 58 has: win32:macx:!android:!winrt:!no-portaudio: OptionalDepends *= portaudio

I removed the blocking conditions and tried the example player with portaudio only and it seems to work fine.

What kind of problems did you have with openal and libva? I test-built the port here with the options checked, then unset them and the configuration process did not look for them. Same with starting the build with the options disabled, so the dependency packages aren't even installed.

When building it outside of poudieire with those installed and the options unset it is still linked against.

I edited my previous comment. Pulseaudio is what what causing trouble, not portaudio. (I always get those two mixed up).

no worries. I think I'll just keep it as an option

I never tested portaudio because it was conditioned to always be off in QtAV.pro.
Line 58 has: win32:macx:!android:!winrt:!no-portaudio: OptionalDepends *= portaudio

yes that confused me :D

What kind of problems did you have with openal and libva? I test-built the port here with the options checked, then unset them and the configuration process did not look for them. Same with starting the build with the options disabled, so the dependency packages aren't even installed.

When building it outside of poudieire with those installed and the options unset it is still linked against.

That's what I couldn't reproduce here with Poudriere:

  • poudriere testbuild -i with your patch.
  • make clean inside the jail.
  • Remove OPENAL and VAAPI from OPTIONS_DEFINE.
  • make build manually in the same jail (so that libva and openal-soft are still installed).
  • According to readelf -d /wrkdirs/usr/ports/multimedia/QtAV/work/.build/lib_unix_x86_64_llvm/libQtAV.so, neither libva.so nor libopenal.so are linked against.

Drop PORTAUDIO option.

The other options work, I used ldd to check :) -- lesson learned.

Add USE_GL=gl and get rid of the the QMAKE_ARGS no_rpath and recheck.

This revision is now accepted and ready to land.Apr 7 2017, 7:52 PM
This revision was automatically updated to reflect the committed changes.