openhome / ohPlayer

ohPlayer is a full featured OpenHome media renderer licenced under an MIT licence
Other
42 stars 11 forks source link

Failing to compile ohPlayer 1.32 with Linux-armhf #28

Open Dual01 opened 2 years ago

Dual01 commented 2 years ago

When I compile ohplayer 1.32 on an RPI, I get the several errors:

make -f Makefile.raspbian make[1]: Entering directory '/home/dietpi/ohPlayer/linux' g++ -c -Wall -std=c++0x -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -DTARG_ARCH=Linux-armhf -fstack-protector -fstack-check -DDEFINE_LITTLE_ENDIAN -I../dependencies/Linux-armhf/ohMediaPlayer/include -I../dependencies/Linux-armhf/ohNetmon/include -I../dependencies/Linux-armhf/openssl/include -I../dependencies/Linux-armhf/ohNetGenerated-Linux-armhf-Release/include/ohnet/OpenHome/Net/Core -I../dependencies/Linux-armhf/ohNet-Linux-armhf-Release/include/ohnet -c ConfigGTKKeyStore.cpp -o raspbian/objs/ConfigGTKKeyStore.o g++ -c -Wall -std=c++0x -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -DTARG_ARCH=Linux-armhf -fstack-protector -fstack-check -DDEFINE_LITTLE_ENDIAN -I../dependencies/Linux-armhf/ohMediaPlayer/include -I../dependencies/Linux-armhf/ohNetmon/include -I../dependencies/Linux-armhf/openssl/include -I../dependencies/Linux-armhf/ohNetGenerated-Linux-armhf-Release/include/ohnet/OpenHome/Net/Core -I../dependencies/Linux-armhf/ohNet-Linux-armhf-Release/include/ohnet -c RamStore.cpp -o raspbian/objs/RamStore.o g++ -c -Wall -std=c++0x -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -DTARG_ARCH=Linux-armhf -fstack-protector -fstack-check -DDEFINE_LITTLE_ENDIAN -I../dependencies/Linux-armhf/ohMediaPlayer/include -I../dependencies/Linux-armhf/ohNetmon/include -I../dependencies/Linux-armhf/openssl/include -I../dependencies/Linux-armhf/ohNetGenerated-Linux-armhf-Release/include/ohnet/OpenHome/Net/Core -I../dependencies/Linux-armhf/ohNet-Linux-armhf-Release/include/ohnet -c Libav.cpp -o raspbian/objs/Libav.o g++ -c -Wall -std=c++0x -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -DTARG_ARCH=Linux-armhf -fstack-protector -fstack-check -DDEFINE_LITTLE_ENDIAN -I../dependencies/Linux-armhf/ohMediaPlayer/include -I../dependencies/Linux-armhf/ohNetmon/include -I../dependencies/Linux-armhf/openssl/include -I../dependencies/Linux-armhf/ohNetGenerated-Linux-armhf-Release/include/ohnet/OpenHome/Net/Core -I../dependencies/Linux-armhf/ohNet-Linux-armhf-Release/include/ohnet -c Volume.cpp -o raspbian/objs/Volume.o g++ -c -Wall -std=c++0x -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -DTARG_ARCH=Linux-armhf -fstack-protector -fstack-check -DDEFINE_LITTLE_ENDIAN -I../dependencies/Linux-armhf/ohMediaPlayer/include -I../dependencies/Linux-armhf/ohNetmon/include -I../dependencies/Linux-armhf/openssl/include -I../dependencies/Linux-armhf/ohNetGenerated-Linux-armhf-Release/include/ohnet/OpenHome/Net/Core -I../dependencies/Linux-armhf/ohNet-Linux-armhf-Release/include/ohnet -c ExampleMediaPlayer.cpp -o raspbian/objs/ExampleMediaPlayer.o In file included from ExampleMediaPlayer.cpp:25: ExampleMediaPlayer.h: In function ‘OpenHome::TBool OpenHome::Av::CompareIPv6Addrs(TIpAddress, TIpAddress)’: ExampleMediaPlayer.h:55:38: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] && memcmp((TByte)addr1.iV6[0], (TByte)addr2.iV6[0], 16) == 0; ^ ExampleMediaPlayer.h:55:60: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] && memcmp((TByte)addr1.iV6[0], (TByte)addr2.iV6[0], 16) == 0; ^ ExampleMediaPlayer.cpp: In member function ‘void OpenHome::Av::ExampleMediaPlayer::RegisterPlugins(OpenHome::Environment&)’: ExampleMediaPlayer.cpp:331:58: error: no matching function for call to ‘OpenHome::Media::ProtocolFactory::NewTidal(OpenHome::Environment&, OpenHome::Brn, OpenHome::Av::MediaPlayer&)’ iMediaPlayer)); ^ In file included from ExampleMediaPlayer.cpp:6: ../dependencies/Linux-armhf/ohMediaPlayer/include/OpenHome/Media/Protocol/ProtocolFactory.h:39:22: note: candidate: ‘static OpenHome::Media::Protocol OpenHome::Media::ProtocolFactory::NewTidal(OpenHome::Environment&, OpenHome::SslContext&, const OpenHome::Brx&, const OpenHome::Brx&, const OpenHome::Brx&, std::vector&, OpenHome::Av::IMediaPlayer&)’ static Protocol* NewTidal(Environment& aEnv, SslContext& aSsl, const Brx& aPartnerId, const Brx& aClientId, const Brx& aClientSecret, std::vector& aAppDetails, Av::IMediaPlayer& aMediaPlayer); ^~~~ ../dependencies/Linux-armhf/ohMediaPlayer/include/OpenHome/Media/Protocol/ProtocolFactory.h:39:22: note: candidate expects 7 arguments, 3 provided make[1]: [Makefile.raspbian:115: raspbian/objs/ExampleMediaPlayer.o] Error 1 make[1]: Leaving directory '/home/dietpi/ohPlayer/linux' make: [Makefile:28: raspbian] Error 2

Any help would be greatly appreciated. Best regards Dieter

jchassin commented 2 years ago

Hi, I would have a look at ohPipeline/OpenHome/Av/Tests/TestMediaPlayer.cpp to see how is invoked ProtocolFactory::NewTidal

Dual01 commented 2 years ago

Thanks for this valuable hint. However, my programming skills in C++ are too low in order to get this implemented. Any help is appreciated. Dieter

jchassin commented 2 years ago

ok noted, i'll check next week

jchassin commented 2 years ago

Hi, I've checked and were able to build with Tidal adapting Exemple.cpp but now I have an issue to connect to Tidal As ProtocolFactory::NewTidal arguments changed I have some difficulties to understand the signification of the arguments, do some have some informations to share regarding : appClientId, appClientSecret, apps,

Dual01 commented 2 years ago

This is what I found: This seems to be related to the Tidal OAUTH2 login procedure. The client /secret combination allows the app to access the tidal web service (homepage) where the user can enter his login data. The client id and secret combination has nothing to do with the users TIDAL account. I found "It is the authorization to use a specific REST API to access the TIDAL Web services (for instance: user login, get list of new tracks, get list of own playlists, get a stream URL to play a track/video, and so on)". There are many different id/secret combinations for the TIDAL API because there are a lot of devices which are able to play TIDAL music. The API is documented here: https://github.com/Fokka-Engineering/TIDAL/wiki.