Russian Qt Forum
Сентябрь 21, 2024, 16:57 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt+Phonon+Xine  (Прочитано 5064 раз)
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.
« Последнее редактирование: Январь 15, 2010, 19:48 от CryAngel » Записан
Rcus
Гость
« Ответ #1 : Январь 15, 2010, 20:36 »

Интересно, но вроде Qt можно все-таки собирать без бэкенда к фонону, иначе зачем в ./configure ключ -no-phonon-backend. /*Пошел медитировать над виртуальной песочницей*/
Записан
Rcus
Гость
« Ответ #2 : Январь 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 показывает что надо.
Записан
CryAngel
Гость
« Ответ #3 : Январь 16, 2010, 17:47 »

Попробую ответить с телефона (дома у меня интернетов нету Грустный ). Я помоему понял свою ошибку. Идея в том, что бы phonon собирать из состава qt, сторонний только бакэнд. Я же пытался собрать весь phonon из не-qt-шных сырцов. Спасибо огромное, сегодня попробую так.
Записан
CryAngel
Гость
« Ответ #4 : Январь 18, 2010, 11:03 »

Ну что, хочу еще раз поблагодарить, все получилось и, насколько я могу судить, все работает правильно. Не обошлось правда без небольших косяков - у меня почему-то при тех же поправках бакэнд собираться не захотел, на этапе make линковщик ругался что не может найти -lphonon. При том, что путь к либам прописан, и cmake либу нашол. В конце-концов я ручками вписал либу с полным путем и тогда все собралось.
Записан
Eugene_123
Гость
« Ответ #5 : Март 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 более новая... Как это так, что из одних исходников получились разные версии библиотек? Это так и должно быть или я что-то не так сделал?

Спасибо)
Записан
Rcus
Гость
« Ответ #6 : Март 25, 2010, 18:58 »

А вас не смутило то что исходники phonon лежат в src/3rdparty и каждый файл начинается с комментария  /* This file is part of the KDE project
Все в порядке, у фонона всегда отличалась нумерация версий.
Записан
Eugene_123
Гость
« Ответ #7 : Март 25, 2010, 19:24 »

Спасибо! Точно)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.057 секунд. Запросов: 21.