Giter Site home page Giter Site logo

Comments (86)

gombosg avatar gombosg commented on August 27, 2024 12

Hi guys, I have submitted libldac to Fedora and the aptx module to RPMFusion. They will find their home there... review just takes time. :)

EDIT: it's live!

The RPMFusion build doesn't support the AAC codec due to licensing restrictions. Please build your own if you need AAC support.
Enable the RPMFusion (free) repository.
Then install the package and restart Pulseaudio:

sudo dnf install pulseaudio-module-bluetooth-freeworld --allowerasing
pulseaudio -k

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024 11

Okay everyone, the package is in the RPMFusion Free repos.
@EHfive please update the Fedora description:

The RPMFusion build doesn't support the AAC codec due to licensing restrictions. Please build your own if you need AAC support.
Enable the RPMFusion (free) repository.
Then install the package and restart Pulseaudio:

sudo dnf install pulseaudio-module-bluetooth-freeworld --allowerasing
pulseaudio -k

from pulseaudio-modules-bt.

davidlt avatar davidlt commented on August 27, 2024 2

@gombosg I am not a packager, but I maintain RISC-V 64-bit Fedora port thus I can help with technical bits.

Btw, people are writing about the project and your work:

from pulseaudio-modules-bt.

Sesivany avatar Sesivany commented on August 27, 2024 1

Hi guys, I have submitted libldac to Fedora and the aptx module to RPMFusion. They will find their home there... review just takes time. :)

In the meantime you can indeed install the RPMs directly.

Can't it be package the way that it could get into Fedora and at least enable LDAC there and then it could be extended by some package from RPMFusion with support for AptX, AptX-HD etc.? It's a pity to rely on RPMFusion even for LDAC if it's accepted in Fedora.

from pulseaudio-modules-bt.

EHfive avatar EHfive commented on August 27, 2024 1

Actually, you can use fdk-aac-free licensed under FDK-AAC
fdk-aac-free don't support AAC-HE, but AAC format in A2DP transmission is AAC-LC.
fdk-aac-free and fdk-aac(non-free) share most ABI in AAC-LC case, so I don't need to change anything in pulseaudio-modules-bt to support fdk-aac-free.

from pulseaudio-modules-bt.

 avatar commented on August 27, 2024 1

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024 1

@Sesivany : it has to be built with these nonfree libraries present and that counts as a dependency. I became a Fedora packager, too because of this. 🙂 See this:

All package dependencies (build-time or runtime, regular, weak or otherwise) MUST ALWAYS be satisfiable within the official Fedora repositories.

So this has to go to RPMFusion.

I requested the package in RPMFusion, it was approved by a reviewer, but another reviewer disapproved (?) - it's technically approved (the fedora-review + flag is there) but they don't give me the repo to upload the package to, and don't give me any exact rejection reasons or guidelines.

So I'm pretty much stuck at this point despite putting so much work into the project. Poor thing.

The conversation you linked is interesting. Yes, Pali Rohár's patches are on the way to upstream PA but we don't know how much time it takes to integrate them. There was indeed discussion about @EHfive 's patches on the PA mailing list, but in the end they weren't integrated due to multiple reasons.

There are a lot of licensing issues, yes.

  • Libldac is ApacheV2
  • ffmpeg is LGPL 2.1
  • FDK-AAC has its own license which can be free, but is GPL-incompatible
  • Upstream PA is LGPL 2.1
  • This project is now GPLv3 which is compatible with ApacheV2 and LGPL2.1, and with extra distribution permission, with FDK-AAC-free.

Problem is that while @EHfive can relicense this project under GPLv3, the Pulseaudio project may not want to do the same.

from pulseaudio-modules-bt.

pali avatar pali commented on August 27, 2024 1

It does not matter if you link to library or not. Important is if you use that library (either statically bundled or dynamically loaded, or whatever...) and how you call functions of that library. GPL license does not allows you to call GPL-incompatible functions and pass memory from GPL software.

So trying to figure out some tricks how to load GPL-incompatible library at runtime via plugins or whatever would lead just to GPL-violations.

See:
https://www.gnu.org/licenses/gpl-faq.html#GPLStaticVsDynamic
https://www.gnu.org/licenses/gpl-faq.html#GPLPlugins

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024 1

Okay, the package has been accepted without AAC support. Sorry guys but the FDK-AAC license is really messy. It currently supports LDAC and aptX. You have to build your own for AAC or wait for ffmpeg AAC support.
Testing is appreciated!
The package should be in the updates-testing repo of RPM Fusion or you can download it here.
You can install with

sudo dnf install pulseaudio-module-bluetooth-freeworld --allowerasing

or use the RPM file name in the above command in case of a direct download.

from pulseaudio-modules-bt.

pali avatar pali commented on August 27, 2024 1

@makruiten look, authors of FDK-AAC library decided that they do not want their library to be used in pulseaudio and also any other GPL software. So this is not problem of pulseaudio, but in authors of FDK-AAC library licensing options. They decided to not allow such thing and you need to respect their will. It is same like if you create something on your own and do not want that somebody else take it from you and would do something with that your own thing against you.

from pulseaudio-modules-bt.

vlastoun avatar vlastoun commented on August 27, 2024 1

libldac is installed.
I tried switching from gnome panel. It changes when I switch from low quality plugin to SBC. Switching to LDAC does not do anything. I hope that package is OK. I will try to build it.

from pulseaudio-modules-bt.

vlastoun avatar vlastoun commented on August 27, 2024 1

@gombosg its working. I have instaled only libldac and the latest package of pulseaudio

/usr/lib64 » ll | grep libldacBT_enc.so                                                                                                                                                            vsadilek@ntbvsa
lrwxrwxrwx   1 root root    24 15. úno 15.51 libldacBT_enc.so.2 -> libldacBT_enc.so.2.0.2.2
-rwxr-xr-x   1 root root   52K 15. úno 15.51 libldacBT_enc.so.2.0.2.2

from pulseaudio-modules-bt.

ValdikSS avatar ValdikSS commented on August 27, 2024 1

@gombosg also please update the code because the version currently in the repository is outdated and crashes due to missing commit fe90c44

from pulseaudio-modules-bt.

gijsrrr avatar gijsrrr commented on August 27, 2024 1

Tested AAC, works fine. Much better quality now. Thanks for this!

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024 1

@groeffen Thanks, finally I can push it to F30 testing then stable!

@OkropNick In GNOME Control Center you can try switching codecs. There the SBC codec is for making phone calls. You can also read more in the wiki.

EDIT: this AAC update will only be available for F30 since fdk-aac-free is not available for F29.

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024 1

@moontide sorry, yeah, since it needs an update with new PA versions in Fedora, it will break every now and then. 🤷‍♂️ Unfortunately we can never perfectly sync Fedora updates with RPMFusion. OTOH I subscribed for the PA source notifications to never miss updates again.

from pulseaudio-modules-bt.

EHfive avatar EHfive commented on August 27, 2024

Add libldac please.
https://github.com/EHfive/ldacBT

Also patch https://github.com/EHfive/pulseaudio-modules-bt/releases/tag/patch_v3
for AAC support. (If didn't)

from pulseaudio-modules-bt.

EHfive avatar EHfive commented on August 27, 2024

https://github.com/EHfive/pulseaudio-modules-bt/wiki/Packages/2422a6518a0598f073c1d756794da070ae1a4469

wiki updated

next time just mail me ( eh5 at sokka.cn )

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

Thanks, I'll update to patch 3 & integrate libldac.

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

I updated it, please test Fedora users: https://copr.fedorainfracloud.org/coprs/gombosg/pulseaudio-modules-bt-aptx/

from pulseaudio-modules-bt.

inffy avatar inffy commented on August 27, 2024

@gombosg seems this copr repo has been removed. It worked fine this morning when I installed. Did something happen?

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

Yes, I just got mail today:

Hi,

Unfortunately, I had to delete your gombosg/pulseaudio-modules-bt-aptx
copr. It contains packages which cannot be distributed by Fedora due to
legal concerns.

Please remember that legally encumbered items may not be included in
either Fedora or Coprs.

Thanks,

Tom Callaway
Fedora Legal

I was suspecting that this might happen one day. I love Fedora but f*ck them for censoring COPR repos.

What now...? Maybe submitting the package to RPMFusion? (Does anyone know an RPMFusion packager to get this sponsored...) Waiting till it gets merged into PulseAudio?

Sources are here:
https://pagure.io/libldac
https://pagure.io/pulseaudio-module-bluetooth-aptx

from pulseaudio-modules-bt.

inffy avatar inffy commented on August 27, 2024

I guess RPMFusion would be the best bet, or some other repo. I have no clue how to submit packages/get packages to rpmfusion though or if there would be other "public" repos that would take it.

Shame really, just got my F29 set up the way i like it with this, never could get this to work with my manjaro install.

from pulseaudio-modules-bt.

inffy avatar inffy commented on August 27, 2024

@gombosg i found this from rpmfusion: https://rpmfusion.org/Contributors#Submitting_a_new_package

or you can ask in #rpmfusion channel in irc.freenode.net

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

Thanks!
[EDIT: see my latest comment for latest RPMs]

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

@EHfive What is the status for merging into upstream? If not expected, I'll post to RPMFusion since getting kicked out from the Fedora COPR repo.

from pulseaudio-modules-bt.

inffy avatar inffy commented on August 27, 2024

@gombosg thanks for the rpm, but it can't be installed because no libldac can be found (as its not in any repo)

from pulseaudio-modules-bt.

EHfive avatar EHfive commented on August 27, 2024

@EHfive What is the status for merging into upstream? If not expected, I'll post to RPMFusion since getting kicked out from the Fedora COPR repo.

Currently it won't be merged.

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

@inffy I added it to my comment above... seems that going to RPMFusion is the way currently. I'll look into it in the upcoming days.

from pulseaudio-modules-bt.

mumrau avatar mumrau commented on August 27, 2024

Maybe we could re-open the issue until a user-friendly (i.e repository) solution is found and added into the wiki? So people can subscribe to it and get a decent overview on the RPM situation.

from pulseaudio-modules-bt.

inffy avatar inffy commented on August 27, 2024

No need. It's not hard to install two rpm files.

from pulseaudio-modules-bt.

mumrau avatar mumrau commented on August 27, 2024

But they won't be kept up to date eventually.
Plus for some users, yes it is, you even need to search the issue, the doc doesn't state it (probably because it isn't the intended way to serve the packages in the (near) future).

from pulseaudio-modules-bt.

davidlt avatar davidlt commented on August 27, 2024

Just discovered this package a day ago. I am happy to help with any SPEC/RPM related questions/issues. Looks like libldac is stuck on FE-Legal, but comments are positive here.

There is a comment regarding "fdk-aac" package, which basically means that this targets nonfree repo in RPMFusion.

Nice work!

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

@davidlt Thanks, the package would be approved soon, they just need to lift the FE-LEGAL bug.
Are you a Fedora packager yourself? I could use some guidance getting into reviewing packages. :)

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

@Sesivany Would be great but according to the Fedora legal & packaging guidelines:

  • Patent-encumbered stuff is not allowed (ffmpeg)
  • All build dependencies must be within the Fedora repos

I'm just the packager, @EHfive can tell whether it's possible to create or build the package without ffmpeg and AAC present, with only LDAC. (I guess that version won't have aptX and AAC support even if the codec packages are installed.)

It's not impossible but not sure either. Essentially it wouldn't be a new package then, just a patch to be applied against the Fedora version of PA and a PR could be submitted here.

In RPMFusion we already started the discussion and it will simply be a pulseaudio-module-bluetooth-nonfree package replacing the original, that would contain all codecs.

Edit: to sum up, if libldac gets into the Fedora repos and it's possible to convert the project into a patch with LDAC only, then I will submit a PR to the Fedora version of PA.

from pulseaudio-modules-bt.

EHfive avatar EHfive commented on August 27, 2024

I'm just the packager, @EHfive can tell whether it's possible to create or build the package without ffmpeg and AAC present, with only LDAC. (I guess that version won't have aptX and AAC support even if the codec packages are installed.)

Right. In the next release, I would probably make FDK-AAC/ffmpeg/LDAC be optional at building stage.

from pulseaudio-modules-bt.

Sesivany avatar Sesivany commented on August 27, 2024

That would really help because then we could have it at least with LDAC support in Fedora/RHEL (and other patent-concerned distributions) by default although some claim there is also a problem with LGPL 2.1->Apache License compatibility. But this project has had 3 contributors so far, so it shouldn't be such a problem to grant an exception if necessary.

from pulseaudio-modules-bt.

lukehutch avatar lukehutch commented on August 27, 2024

The soname version number for fdk-aac in rpmfusion is 2, not 1:

[root@localhost ~]# rpm -Uhv /tmp/libldacbt-1.1-1.fc29.x86_64.rpm /tmp/pulseaudio-module-bluetooth-aptx-12.2-1.fc29.x86_64.rpm 
error: Failed dependencies:
	libfdk-aac.so.1()(64bit) is needed by pulseaudio-module-bluetooth-aptx-12.2-1.fc29.x86_64
[root@localhost ~]# rpm -ql fdk-aac | grep libfdk-aac
/usr/lib64/libfdk-aac.so.2
/usr/lib64/libfdk-aac.so.2.0.0

from pulseaudio-modules-bt.

Sesivany avatar Sesivany commented on August 27, 2024

Just reporting: the packages provided here don't seem to survive upgrade to Fedora 30. They stay installed, but I'm back from LDAC to SBC after the upgrade.

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

Hopefully the RPMFusion package gets reviewed soon and then we should be good...

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

The review process is crazy slow, so I'm giving you some new RPMs in the meantime. Sorry. Been waiting for a review for months now.
The below zip contains F29 RPMs.
pulseaudio-module-bluetooth-nonfree.zip

from pulseaudio-modules-bt.

 avatar commented on August 27, 2024

Thanks! It doesn't replace the existing packages from the COPR repo. I gues I can remove them with sudo rpm -e --nodeps libldacbt-1.1-1.fc29.x86_64 pulseaudio-module-bluetooth-aptx-12.2-1.fc29.x86_64? Removing them with dnf also removes a whole lot of bogus dependencies.

from pulseaudio-modules-bt.

 avatar commented on August 27, 2024

Something else: the package that you've just provided doesn't support AAC, is that right?

Screenshot from 2019-03-14 13-22-12

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

Yes, you can remove the old COPR stuff, the repo has been disabled for quite some time now.

I checked, it's because fdk-aac-devel was not installed (I specified fdk-aac, which was a mistake). Corrected it and updated the ZIP. @makruiten please tell me if it works. It doesn't build on Rawhide (fdk-aac 2.0) though so I need to raise an issue for that.

from pulseaudio-modules-bt.

 avatar commented on August 27, 2024

It works now, thanks.

Yes, I knew it was disabled and that those could be removed, it was more about the method of removing, since dnf wanted to remove a lot of dependent packages. For people browsing this issue: use my command from #20 (comment) instead of dnf to remove the old COPR packages.

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

#43 is the 2.0 fdk-aac build issue.

The RPMFusion package got approved by a reviewer, then another person jumped in that "it shouldn't be approved like this", so I'm confused (and a bit upset) now. We'll see about that.

from pulseaudio-modules-bt.

 avatar commented on August 27, 2024

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

He sponsored me as a packager in Fedora, so I wouldn't say that. :)
I understand his stance, I'm just upset because he didn't take the review (the package has been sitting there for some time), and after someone reviewed and approved, he is making a rather vague comment about what should or shouldn't be done about the package.

from pulseaudio-modules-bt.

davidlt avatar davidlt commented on August 27, 2024

On Fedora 29:

% sudo dnf install pulseaudio-module-bluetooth-nonfree-1.1-3.fc29.x86_64.rpm
Last metadata expiration check: 0:31:33 ago on Fri 15 Mar 2019 09:36:11 CET
Error: 
 Problem: problem with installed package pulseaudio-module-bluetooth-12.2-1.fc29.x86_64
  - package pulseaudio-module-bluetooth-nonfree-1.1-3.fc29.x86_64 conflicts with pulseaudio-module-bluetooth <= 12.2-1.fc29 provided by pulseaudio-module-bluetooth-12.2-1.fc29.x86_64
  - conflicting requests
(try to add '--allowerasing' to command line to replace conflicting packages or '--skip-broken' to skip uninstallable packages)

from pulseaudio-modules-bt.

Sesivany avatar Sesivany commented on August 27, 2024

He sponsored me as a packager in Fedora, so I wouldn't say that. :)
I understand his stance, I'm just upset because he didn't take the review (the package has been sitting there for some time), and after someone reviewed and approved, he is making a rather vague comment about what should or shouldn't be done about the package.

If the package doesn't hard-depend on ffmpeg and doesn't contain any codecs why can't it be directly in Fedora? I'm not involved in RPMFusion, but I can certainly help with Fedora (I'm a packager, know package sponsors etc.).

from pulseaudio-modules-bt.

Sesivany avatar Sesivany commented on August 27, 2024

BTW someone is trying to implement the same directly in the PulseAudio project and is concerned about PA-libldac license compatibility: https://eischmann.wordpress.com/2019/02/11/better-bluetooth-sound-quality-on-linux/#comment-10714
It may have the same problem as fdk-aac-free discussed in the RPMFusion review.

from pulseaudio-modules-bt.

Sesivany avatar Sesivany commented on August 27, 2024

All package dependencies (build-time or runtime, regular, weak or otherwise) MUST ALWAYS be satisfiable within the official Fedora repositories.

The trick is that it doesn't have to be a package dependency. Of course, if the software doesn't build or run without it it's a problem, but if it's done the way that it runs well and only doesn't provide certain codecs if ffmpeg is not present in the system, it's fine.
E.g. Firefox relies on ffmpeg for multimedia support, yet it's part of Fedora. If ffmpeg is not present, it simply doesn't playback e.g. H264 videos, that's it.

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

AFAIK in C you can't link against a library without its devel package being present. Looking at the Firefox specfile, libffi might be used for this purpose?

from pulseaudio-modules-bt.

 avatar commented on August 27, 2024

Congrats! My headphones are SBC/AAC only, so no feedback from my side. Hopefully AAC support will be added somewhere down the road in one way or another.

from pulseaudio-modules-bt.

 avatar commented on August 27, 2024

I'm not suggesting to do anything against anyone's will :) Maybe down the road there will be an alternative library, some sort of agreement, or whatever the solution might be. Just hoping.

from pulseaudio-modules-bt.

vlastoun avatar vlastoun commented on August 27, 2024

Hello @gombosg thanks for creating rpm package.
I am not able to install it dirrectly from from repository instead I downloaded that rpm package locally.
I have problem with switching to LDAC codec. I used your rpm package before and everything worked.

Sink #2
	State: SUSPENDED
	Name: bluez_sink.CC_98_8B_4A_C1_1B.a2dp_sink
	Description: WH-1000XM3
	Driver: module-bluez5-device.c
	Sample Specification: s16le 2ch 44100Hz
	Channel Map: front-left,front-right
	Owner Module: 26
	Mute: no
	Volume: front-left: 57672 /  88% / -3,33 dB,   front-right: 57672 /  88% / -3,33 dB
	        balance 0,00
	Base Volume: 65536 / 100% / 0,00 dB
	Monitor Source: bluez_sink.CC_98_8B_4A_C1_1B.a2dp_sink.monitor
	Latency: 0 usec, configured 0 usec
	Flags: HARDWARE DECIBEL_VOLUME LATENCY 
	Properties:
		bluetooth.protocol = "a2dp_sink"
		bluetooth.a2dp_codec = "SBC"
		device.description = "WH-1000XM3"
		device.string = "CC:98:8B:4A:C1:1B"
		device.api = "bluez"
		device.class = "sound"
		device.bus = "bluetooth"
		device.form_factor = "headset"
		bluez.path = "/org/bluez/hci0/dev_CC_98_8B_4A_C1_1B"
		bluez.class = "0x240404"
		bluez.alias = "WH-1000XM3"
		device.icon_name = "audio-headset-bluetooth"
		device.intended_roles = "phone"
	Ports:
		headset-output: Headset (priority: 0)
	Active Port: headset-output
	Formats:
		pcm

Before I had bluetooth.a2dp_codec = "LDAC"

I am using fedora 29 with kernel 5 and i have installed libldac.

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

@vlastoun : Thanks for the test results!
Did you try selecting the codec in the GNOME control panel?
The package was built with LDAC support enabled for sure, and the BT module itself may be a newer version that what you had tried before.
The best would be if you could build it on your own then compare the results - this is to learn whether it's a packaging or a module issue.

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

@vlastoun also looking at journalctl helps after trying to connect/switch codecs. Let's see if there's some strange output or error messages.

from pulseaudio-modules-bt.

vlastoun avatar vlastoun commented on August 27, 2024

From journalctl

dub 07 15:29:53 ntbvsa rtkit-daemon[1011]: Successfully made thread 2326 of process 2326 (/usr/bin/pulseaudio) owned by '1152' high priority at nice level -11.
dub 07 15:29:53 ntbvsa pulseaudio[2326]: E: [pulseaudio] a2dp_aptx.c: Cannot open libavcodec library: libavcodec.so. libavcodec.so: cannot open shared object file: No such file or directory
dub 07 15:29:53 ntbvsa pulseaudio[2326]: E: [pulseaudio] a2dp_aptx.c: Cannot open libavcodec library: libavcodec.so. libavcodec.so: cannot open shared object file: No such file or directory
dub 07 15:29:53 ntbvsa pulseaudio[2326]: E: [pulseaudio] a2dp_ldac.c: Cannot open LDAC encoder library: libldacBT_enc.so. libldacBT_enc.so: cannot open shared object file: No such file or directory
dub 07 15:29:53 ntbvsa pulseaudio[2326]: E: [pulseaudio] backend-ofono.c: Failed to register as a handsfree audio agent with ofono: org.freedesktop.DBus.Error.ServiceUnknown: The name org.ofono was not provided by any .service files
dub 07 15:29:53 ntbvsa rtkit-daemon[1011]: Successfully made thread 2377 of process 2326 (/usr/bin/pulseaudio) owned by '1152' RT at priority 5.
dub 07 15:29:53 ntbvsa rtkit-daemon[1011]: Successfully made thread 2385 of process 2326 (/usr/bin/pulseaudio) owned by '1152' RT at priority 5.
dub 07 15:30:24 ntbvsa rtkit-daemon[1011]: Successfully made thread 3553 of process 2326 (/usr/bin/pulseaudio) owned by '1152' RT at priority 5.
dub 07 15:31:41 ntbvsa pulseaudio[2326]: W: [pulseaudio] module-bluez5-device.c: Refused to switch profile to a2dp_sink_ldac: Unavailable profile
dub 07 15:33:12 ntbvsa pulseaudio[2326]: W: [pulseaudio] module-bluez5-device.c: Refused to switch profile to a2dp_sink_ldac: Unavailable profile

from pulseaudio-modules-bt.

vlastoun avatar vlastoun commented on August 27, 2024

@gombosg i solved my problem... i added link ln -s libldacBT_enc.so.2.0.2.2 libldacBT_enc.so and now it works as before...

~ » pactl list | grep a2dp_codec                                                                                                 vsadilek@ntbvsa
		bluetooth.a2dp_codec = "LDAC"

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

@vlastoun : thanks for the test, now we see what's happening.

The libldacBT_(enc|abr).so symlink was missing indeed, it's in the devel package.
@EHfive , can you make that this package also finds libldacBT_(enc|abr).so.2?

EDIT: I made this because the Fedora guidelines tell to move unversioned libraries (which is a symlink in this case) to the devel package.

The versioned shared library files (/usr/lib/libfoo.so.3.2.0 and /usr/lib/libfoo.so.3) are necessary for users to run programs linked against libfoo, so they belong in the base package. The other, unversioned, shared library file (/usr/lib/libfoo.so) is only used to actually link libfoo to code being compiled, and is not necessary to be installed on a users system. This means that it belongs in a -devel package. Please note that in most cases, only the fully versioned shared library file (/usr/lib/libfoo.so.3.2.0) is an actual file, all of the other files are symbolic links to it. When a shared library file is only provided in an unversioned format, the packager should ask upstream to consider providing a properly versioned library file. However, in such cases, if the shared library file is necessary for users to run programs linked against it, it must go into the base package.

So I can move it to the base package but if @EHfive can make this to use the libldac2, then it should be OK.

from pulseaudio-modules-bt.

EHfive avatar EHfive commented on August 27, 2024

@vlastoun : thanks for the test, now we see what's happening.

The libldacBT_(enc|abr).so symlink was missing indeed, it's in the devel package.
@EHfive , can you make that this package also finds libldacBT_(enc|abr).so.2?

EDIT: I made this because the Fedora guidelines tell to move unversioned libraries (which is a symlink in this case) to the devel package.

The versioned shared library files (/usr/lib/libfoo.so.3.2.0 and /usr/lib/libfoo.so.3) are necessary for users to run programs linked against libfoo, so they belong in the base package. The other, unversioned, shared library file (/usr/lib/libfoo.so) is only used to actually link libfoo to code being compiled, and is not necessary to be installed on a users system. This means that it belongs in a -devel package. Please note that in most cases, only the fully versioned shared library file (/usr/lib/libfoo.so.3.2.0) is an actual file, all of the other files are symbolic links to it. When a shared library file is only provided in an unversioned format, the packager should ask upstream to consider providing a properly versioned library file. However, in such cases, if the shared library file is necessary for users to run programs linked against it, it must go into the base package.

So I can move it to the base package but if @EHfive can make this to use the libldac2, then it should be OK.

Dynamic loading simply requires devel package (no soversion).

from pulseaudio-modules-bt.

vlastoun avatar vlastoun commented on August 27, 2024

@EHfive installing libldac-devel helped - no symlink needed

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

@vlastoun Yes, I'll move that libldacBT_(enc|abr).so link from the devel to the base package. Not a nice move but doable.

from pulseaudio-modules-bt.

devurandom avatar devurandom commented on August 27, 2024

@vlastoun Yes, I'll move that libldacBT_(enc|abr).so link from the devel to the base package. Not a nice move but doable.

That is most certainly not what you want.

DT_SONAME (and a symlink of that name) is generally used to ensure ABI-compatibility of the library and its users. If an application is linked against a library, it is linked against a specific interface version. This interface version is part of that library's SONAME. Trying to run that program against a library with a different interface version (and hence different SONAME) is outright dangerous and may fail in unexpected ways -- the library authors specifically state that this will break, by giving their library a different SONAME (and thus interface version) than a previous version of their library, and usually they are the most knowledgeable in that area.

Hence when loading a library into a program (be it by adding the library to DT_NEEDED at compile time or using dlopen), one should always load the version of the library the program was compiled against, never any other version. Thus the load should happen using the full SONAME, not some part of it that happens to match an existing (but potentially different) library by accident. If the program happens to support multiple versions of the library, it could for example try to dlopen the SONAMEs it supports (and no other names) in some defined order, until it finds a supported library.

If in this case the pulseaudio module happens to dlopen the library with something other than its SONAME, the pulseaudio module should be fixed, not another Fedora package that is not actually broken.

P.S. -devel packages contain symlinks without a version number in order to allow for the linker parameter -lrary to pick the first library.so from the search path, without having to specify the desired version number, i.e. so that at compile time "any available version" can be used.

See-Also: https://en.wikipedia.org/wiki/Soname
See-Also: https://www.gnu.org/software/libtool/manual/libtool.html#Versioning

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

@devurandom : thanks for the explanation!

If @EHfive is willing to fix this, I'm going to cancel the Bodhi (testing) update.

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

@vlastoun can you test this please after removing the devel packages?

from pulseaudio-modules-bt.

ValdikSS avatar ValdikSS commented on August 27, 2024

@gombosg RPMFusion now ships fdk-aac, and fedora repos contain fdk-aac-free.
Also Fedora now considers fdk-aac GPL-compatible: https://lists.fedoraproject.org/archives/list/[email protected]/thread/OVW25JRWOKOLVMW3XGUX7E4OXFUR2RCG/
Please recompile the package with AAC support.

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

@ValdikSS hi, yes, I read it yesterday, great news!
Well currently there are issues with fdk-aac-free so it needs some testing. If I build it with it, can you test it?

from pulseaudio-modules-bt.

ValdikSS avatar ValdikSS commented on August 27, 2024

@gombosg sure. If fdk-aac is considered legal now, maybe it would be better to use it instead of free version?

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

I submitted #5294 and #5295 to start a conversation on this topic. Last time I wasn't allowed to use fdk-aac since it was in the nonfree repo.

from pulseaudio-modules-bt.

ValdikSS avatar ValdikSS commented on August 27, 2024

@gombosg oh sorry, I forgot I don't have any headphones with AAC support. I can perform a test between 2 PCs though.

from pulseaudio-modules-bt.

davidlt avatar davidlt commented on August 27, 2024

https://www.phoronix.com/scan.php?page=news_item&px=Fedora-FDK-AAC-Better-Quality
F30: https://bodhi.fedoraproject.org/updates/FEDORA-2019-bd6ec33eef contains fdk-aac-free-2.0.0-1.fc30

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

@gombosg also please update the code because the version currently in the repository is outdated and crashes due to missing commit fe90c44

It's not outdated, it's at the latest release. I won't include code from the master branch since it's not part of a release (how would I know which master commits warrant a package update and which don't?). But if @EHfive makes one I will.

@davidlt thanks, I'll make a build with fdk-aac-free during the weekend.

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

Hi, now that fdk-aac-free is deemed to be GPL compatible I've made a Fedora build. Can you test this build with AAC? Thanks!

from pulseaudio-modules-bt.

ValdikSS avatar ValdikSS commented on August 27, 2024

Please include at least commit f44d32e, or better, compile from git master. Without this commit the library crashes on my hardware.

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

Sure, here's your build!

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

@ValdikSS Did you get to test it? If it works I can push the update.

from pulseaudio-modules-bt.

ValdikSS avatar ValdikSS commented on August 27, 2024

I can't test it right now.

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

@ValdikSS And now? :D

from pulseaudio-modules-bt.

ValdikSS avatar ValdikSS commented on August 27, 2024

@gombosg I'm away from my devices and won't be able to test in this month.

from pulseaudio-modules-bt.

ValdikSS avatar ValdikSS commented on August 27, 2024

@gombosg I've tested the build overall, it works fine, but haven't tested AAC.

from pulseaudio-modules-bt.

jakub-pluciennik avatar jakub-pluciennik commented on August 27, 2024

Thank you very much for your efforts! Is there any possibility to switch between codecs? My connection is always set as LDAC and even when try to switch to another codec, Sony application and:

pactl list | grep a2dp_codec

are always showing that LDAC is on use. Not complaining, just wondering. My OS is Ubuntu 18.04. It also seems that I can not use headphones as headset with microphone even when I switch to "Headset Head Unit" I can hear only noises.

from pulseaudio-modules-bt.

moontide avatar moontide commented on August 27, 2024

Update
Sorry, there's a bug report already posted: https://bugzilla.rpmfusion.org/show_bug.cgi?id=5558.


Thanks for the pulseaudio-module-bluetooth-freeworld package.

Now, in Fedora 31/32/33, pulseaudio-13.99.1 is in the update-testing repository, and dnf update pulseaudio* --enablerepo *-testing is complaining about pulseaudio-module-bluetooth-freeworld-1.3-1.fc31.x86_64 requires libpulsecore-13.0.so()(64bit), but none of the providers can be installed. Will it work if make the dependency be libpulsecore >= 13.0 && libpulsecommon >= 13.0?

# dnf update pulseaudio* --enablerepo *-testing
上次元数据过期检查:0:28:14 前,执行于 2020年03月11日 星期三 08时18分41秒。
依赖关系解决。

 问题 1: package pulseaudio-module-bluetooth-freeworld-1.3-1.fc31.x86_64 requires libpulsecore-13.0.so()(64bit), but none of the providers can be installed
  - cannot install both pulseaudio-13.99.1-1.fc31.x86_64 and pulseaudio-13.0-2.fc31.x86_64
  - cannot install both pulseaudio-13.0-2.fc31.x86_64 and pulseaudio-13.99.1-1.fc31.x86_64
  - cannot install both pulseaudio-13.0-1.fc31.x86_64 and pulseaudio-13.99.1-1.fc31.x86_64
  - cannot install the best update candidate for package pulseaudio-module-bluetooth-freeworld-1.3-1.fc31.x86_64
  - cannot install the best update candidate for package pulseaudio-13.0-2.fc31.x86_64
 问题 2: problem with installed package pulseaudio-module-bluetooth-freeworld-1.3-1.fc31.x86_64
  - package pulseaudio-module-bluetooth-freeworld-1.3-1.fc31.x86_64 requires libpulsecommon-13.0.so()(64bit), but none of the providers can be installed
  - cannot install both pulseaudio-libs-13.99.1-1.fc31.x86_64 and pulseaudio-libs-13.0-2.fc31.x86_64
  - cannot install both pulseaudio-libs-13.0-2.fc31.x86_64 and pulseaudio-libs-13.99.1-1.fc31.x86_64
  - cannot install both pulseaudio-libs-13.0-1.fc31.x86_64 and pulseaudio-libs-13.99.1-1.fc31.x86_64
  - cannot install the best update candidate for package pulseaudio-libs-13.0-2.fc31.x86_64
================================================================================
 Package             Arch       Version               Repository           Size
================================================================================
跳过有冲突的软件包:
(添加 '--best --allowerasing' 至命令行来强制升级):
 pulseaudio          x86_64     13.0-1.fc31           fedora              1.0 M
 pulseaudio          x86_64     13.99.1-1.fc31        updates-testing     1.0 M
 pulseaudio-libs     x86_64     13.0-1.fc31           fedora              710 k
 pulseaudio-libs     x86_64     13.99.1-1.fc31        updates-testing     708 k

事务概要
================================================================================
跳过  4 软件包

无需任何处理。
完毕!

from pulseaudio-modules-bt.

ElbinP avatar ElbinP commented on August 27, 2024

pulseaudio-module-bluetooth-freeworld Does this give high bitrate SBC? How can I verify that?

from pulseaudio-modules-bt.

gombosg avatar gombosg commented on August 27, 2024

Sorry, I don't know. I packaged the vanilla version. If pactl list sinks doesn't give you the info that you want, you may want to recompile with cusom parameters based on documentation.

from pulseaudio-modules-bt.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.