Russian Qt Forum

Qt => Мультимедиа => Тема начата: CryAngel от Январь 15, 2010, 19:46



Название: Qt+Phonon+Xine
Отправлено: CryAngel от Январь 15, 2010, 19:46
Возник такой вопрос, возможно ли каким-то образом получить подобную комбинацию - Qt+Phonon+Xine и при этом без GStreamer? Phonon идущий вместе с Qt без GStreamer собрать если я правильно понял вообще не возможно, поэтому я решил собрать Qt без Phonon-а, а потом собрать Phonon из состава KDE (пердварительно собрав Xine lib естественно). Здесь все прошло достаточно гладко. Но вот дальше... Phonon из KDE при установке создает свою структуру каталогов, которая естественно не совпадает с той, где его ищет Qt (в основном это касается хидеров, Qt у меня установлена в /opt/qt4, Phonon я поставил просто в /opt, в итоге Qt ищет внутри себя, а на самом деле хидеры лежат что-то вроде /opt/include/KDE...), но это я поправил с помощью симлинков. Пути к либам тоже прописал. Однако на этом проблемы не закончились - даже простенькие тестовые программки с использованием Phonon не собираются, ругань на не определенные типы, классы и т.п. Глубоко не копал, но похоже это из-за того, что Qt собран без Phonon, т.е. может определены переменные типа QT_NO_PHONON_VIDEOPLAYER (а в коде есть проверки вида #ifndef QT_NO_PHONON_VIDEOPLAYER). Вобщем здесь я забуксовал. Qt у меня версии 4.6, Phonon брал 4.3.80.
P.S. из текста это и так можно понять, но все же уточню, ОС - Linux, x86_64.


Название: Re: Qt+Phonon+Xine
Отправлено: Rcus от Январь 15, 2010, 20:36
Интересно, но вроде Qt можно все-таки собирать без бэкенда к фонону, иначе зачем в ./configure ключ -no-phonon-backend. /*Пошел медитировать над виртуальной песочницей*/


Название: Re: Qt+Phonon+Xine
Отправлено: Rcus от Январь 16, 2010, 14:20
Кстати о песочнице:
При сборке qt-4.6.0 с опциями
Код:
./configure -no-webkit -no-phonon-backend -phonon -prefix /opt/qt46
И правке CMakeLists.txt (apt-get source phonon-backend-xine на Ubuntu KK)
Код
Diff
diff -rup orig/phonon-4.3.1/CMakeLists.txt phonon-4.3.1/CMakeLists.txt
--- orig/phonon-4.3.1/CMakeLists.txt    2009-01-22 13:20:44.000000000 +0500
+++ phonon-4.3.1/CMakeLists.txt 2010-01-16 12:55:27.531438427 +0500
@@ -21,7 +21,7 @@ include(MacroLogFeature)
include(MacroOptionalFindPackage)
 
set(QT_MIN_VERSION 4.4.0)
-find_package(Qt4 REQUIRED)
+find_package(Qt4 COMPONENTS QtCore QtGui QtDBus phonon REQUIRED)
if (NOT QT_QTDBUS_FOUND)
   message(STATUS "Warning: Phonon won't be compiled with DBus support.")
endif(NOT QT_QTDBUS_FOUND)
@@ -160,7 +160,7 @@ if(MSVC)
endif(MSVC)
 
# for including config.h and for includes like <kparts/foo.h>
-include_directories(${QT_INCLUDES} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/includes ${CMAKE_CURRENT_SOURCE_DIR}/phonon ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/phonon)
+include_directories(${QT_INCLUDES} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/includes ${CMAKE_CURRENT_BINARY_DIR})
 
macro(_SET_FANCY _var _value _comment)
   if (KDESupport_SOURCE_DIR)
@@ -250,7 +250,7 @@ endif(APPLE)
 
 
add_subdirectory(cmake)
-add_subdirectory(phonon)
+#add_subdirectory(phonon)
add_subdirectory(includes)
if (Q_WS_MAC AND BUILD_PHONON_QT7)
  add_subdirectory(qt7)
@@ -260,7 +260,7 @@ if (Q_WS_WIN)
endif (Q_WS_WIN)
 
if (Q_WS_X11)
-   add_subdirectory(gstreamer)
+   #add_subdirectory(gstreamer)
   add_subdirectory(xine)
endif (Q_WS_X11)
 
 
Все нормально собирается, остается только скопировать $PHONON_BUILD_DIR/lib/phonon_xine.so в $QTDIR/plugins/phonon_backend и все работает, по крайней мере демка qmusicplayer играет и cat /proc/$PID/maps показывает что надо.


Название: Re: Qt+Phonon+Xine
Отправлено: CryAngel от Январь 16, 2010, 17:47
Попробую ответить с телефона (дома у меня интернетов нету :( ). Я помоему понял свою ошибку. Идея в том, что бы phonon собирать из состава qt, сторонний только бакэнд. Я же пытался собрать весь phonon из не-qt-шных сырцов. Спасибо огромное, сегодня попробую так.


Название: Re: Qt+Phonon+Xine
Отправлено: CryAngel от Январь 18, 2010, 11:03
Ну что, хочу еще раз поблагодарить, все получилось и, насколько я могу судить, все работает правильно. Не обошлось правда без небольших косяков - у меня почему-то при тех же поправках бакэнд собираться не захотел, на этапе make линковщик ругался что не может найти -lphonon. При том, что путь к либам прописан, и cmake либу нашол. В конце-концов я ручками вписал либу с полным путем и тогда все собралось.


Название: Re: Qt+Phonon+Xine
Отправлено: Eugene_123 от Март 25, 2010, 18:54
Rcus, посмотрел кусок кода от Январь 16, 2010, 14:20. У меня QT 4.6.2. Я вчера скомпилил ее и включил поодержку фонона... Посмотрел в папку /4.6.2/lib... У меня получилось, что все Qt-е библиотеки стоят с версией 4.6.2, а один libphonon - 4.3.1? Просто я смотрю в вашем коде тоже указано, что версия qt более новая... Как это так, что из одних исходников получились разные версии библиотек? Это так и должно быть или я что-то не так сделал?

Спасибо)


Название: Re: Qt+Phonon+Xine
Отправлено: Rcus от Март 25, 2010, 18:58
А вас не смутило то что исходники phonon лежат в src/3rdparty и каждый файл начинается с комментария  /* This file is part of the KDE project
Все в порядке, у фонона всегда отличалась нумерация версий.


Название: Re: Qt+Phonon+Xine
Отправлено: Eugene_123 от Март 25, 2010, 19:24
Спасибо! Точно)