Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QMPwidget
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Мультимедиа
ibnz
Наткнулся вот на замечательный проект
http://qmpwidget.sourceforge.net/

Но вот что-то со сбркой демы у меня не выходит

qmake ругается
Раскрывающийся текст
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget13showUserImageERK6QImage[QMPOpenGLVideoWidget::sh
owUserImage(QImage const&)]+0xaa): undefined reference to `glTexParameterf@12'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget13showUserImageERK6QImage[QMPOpenGLVideoWidget::sh
owUserImage(QImage const&)]+0xca): undefined reference to `glTexParameterf@12'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget13showUserImageERK6QImage[QMPOpenGLVideoWidget::sh
owUserImage(QImage const&)]+0x11f): undefined reference to `glViewport@16'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget12displayImageERK6QImage[QMPOpenGLVideoWidget::dis
playImage(QImage const&)]+0x96): undefined reference to `glTexParameterf@12'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget12displayImageERK6QImage[QMPOpenGLVideoWidget::dis
playImage(QImage const&)]+0xb6): undefined reference to `glTexParameterf@12'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget12initializeGLEv[QMPOpenGLVideoWidget::initializeG
L()]+0xe): undefined reference to `glEnable@4'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget12initializeGLEv[QMPOpenGLVideoWidget::initializeG
L()]+0x39): undefined reference to `glClearColor@16'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget12initializeGLEv[QMPOpenGLVideoWidget::initializeG
L()]+0x52): undefined reference to `glClearDepth@8'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget8resizeGLEii[QMPOpenGLVideoWidget::resizeGL(int, int)]+0x3c): undefined reference to `glViewport@16'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x11): undefined reference to `glClear@4'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x19): undefined reference to `glLoadIdentity@0'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x3d): undefined reference to `glBindTexture@8'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x136)
: undefined reference to `glViewport@16'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x145)
: undefined reference to `glBegin@4'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x15e)
: undefined reference to `glTexCoord2f@8'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x177)
: undefined reference to `glVertex2f@8'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x190)
: undefined reference to `glTexCoord2f@8'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x1a9)
: undefined reference to `glVertex2f@8'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x1c2)
: undefined reference to `glTexCoord2f@8'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x1db)
: undefined reference to `glVertex2f@8'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x1f4)
: undefined reference to `glTexCoord2f@8'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x20d)
: undefined reference to `glVertex2f@8'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x215)
: undefined reference to `glEnd@0'


У кого нибудь есть результативный опыт использования?
BRE
Ну судя по выводу, ты не подключил библиотеку OpenGL и она не линкуется.
RazrFalcon
Может это заведется:
http://qt-apps.org/content/show.php/QMPlayer?content=145100
ibnz
QT += opengl
в профайле имеется, если ты об этом


вообще ничего не меняя пробовал запустить вот с тем результатом
у него там сырцы прям в виде qt проекта (прявда почти годовалой давности)- можно скачать глянуть
Вообще иметь такую кошерную альтернативу фонону было бы весьма заманчиво.
BRE
Скачал и все нормально собралось.
qmake && make

Ты, кстати, под какой платформой собираешь?
RazrFalcon
Цитата(ibnz @ 28.9.2011, 23:39) *
Вообще иметь такую кошерную альтернативу фонону было бы весьма заманчиво.

Чем фонон не устроил? MPlayer можно и через него пускать: https://projects.kde.org/projects/kdesuppor.../phonon-mplayer
ibnz
Цитата(BRE @ 29.9.2011, 8:36) *
Скачал и все нормально собралось.
qmake && make

Ты, кстати, под какой платформой собираешь?


winxp

qtsdk 4.7.4

mingw
Гость_ibnz_*
вот полный вывод консоли сборки, повторил на другой машине
Раскрывающийся текст
Выполняется сборка проекта qmpwidget...
Запускается: «c:\qtsdk\desktop\qt\4.7.4\mingw\bin\qmake.exe» E:\AlxZ\QMPlayer\qmpwidget.pro -r -spec win32-g++
Reading E:/AlxZ/QMPlayer/src/src.pro
Reading E:/AlxZ/QMPlayer/demo/demo.pro
Процесс «c:\qtsdk\desktop\qt\4.7.4\mingw\bin\qmake.exe» завершился нормально.
Запускается: «C:\QtSDK\mingw\bin\mingw32-make.exe»
cd src\ && C:/QtSDK/mingw/bin/mingw32-make -f Makefile
mingw32-make[1]: Entering directory `E:/AlxZ/QMPlayer/src'
C:/QtSDK/mingw/bin/mingw32-make -f Makefile.Debug
mingw32-make[2]: Entering directory `E:/AlxZ/QMPlayer/src'
C:\QtSDK\Desktop\Qt\4.7.4\mingw\bin\moc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtCore" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtNetwork" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtGui" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtOpenGL" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\ActiveQt" -I"debug" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\mkspecs\win32-g++" -D__GNUC__ -DWIN32 qmpwidget.cpp -o debug\qmpwidget.moc
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtCore" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtNetwork" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtGui" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtOpenGL" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\ActiveQt" -I"debug" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\mkspecs\win32-g++" -o debug\qmpwidget.o qmpwidget.cpp
C:\QtSDK\Desktop\Qt\4.7.4\mingw\bin\moc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtCore" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtNetwork" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtGui" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtOpenGL" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\ActiveQt" -I"debug" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\mkspecs\win32-g++" -D__GNUC__ -DWIN32 qmpwidget.h -o debug\moc_qmpwidget.cpp
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtCore" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtNetwork" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtGui" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtOpenGL" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\ActiveQt" -I"debug" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\mkspecs\win32-g++" -o debug\moc_qmpwidget.o debug\moc_qmpwidget.cpp
ar -ru ..\libqmpwidget.a debug/qmpwidget.o debug/moc_qmpwidget.o
mingw32-make[2]: Leaving directory `E:/AlxZ/QMPlayer/src'
mingw32-make[1]: Leaving directory `E:/AlxZ/QMPlayer/src'
cd demo\ && C:/QtSDK/mingw/bin/mingw32-make -f Makefile
ar: creating ..\libqmpwidget.a
mingw32-make[1]: Entering directory `E:/AlxZ/QMPlayer/demo'
C:/QtSDK/mingw/bin/mingw32-make -f Makefile.Debug
mingw32-make[2]: Entering directory `E:/AlxZ/QMPlayer/demo'
C:\QtSDK\Desktop\Qt\4.7.4\mingw\bin\moc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtCore" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtNetwork" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtGui" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtOpenGL" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include" -I"..\src" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\ActiveQt" -I"debug" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\mkspecs\win32-g++" -D__GNUC__ -DWIN32 main.cpp -o debug\main.moc
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtCore" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtNetwork" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtGui" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtOpenGL" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include" -I"..\src" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\ActiveQt" -I"debug" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\mkspecs\win32-g++" -o debug\main.o main.cpp
g++ -mthreads -Wl,-subsystem,windows -o ..\qmpdemo.exe debug/main.o -L".." -L"c:\QtSDK\Desktop\Qt\4.7.4\mingw\lib" -lglu32 -lopengl32 -lgdi32 -luser32 -lmingw32 -lqtmaind -lqmpwidget -lQtOpenGLd4 -lQtGuid4 -lQtNetworkd4 -lQtCored4 -LC:\OpenSSL-Win32_full\lib
mingw32-make[2]: Leaving directory `E:/AlxZ/QMPlayer/demo'
mingw32-make[1]: Leaving directory `E:/AlxZ/QMPlayer/demo'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget13showUserImageERK6QImage[QMPOpenGLVideoWidget::sh
owUserImage(QImage const&)]+0xaa): undefined reference to `glTexParameterf@12'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget13showUserImageERK6QImage[QMPOpenGLVideoWidget::sh
owUserImage(QImage const&)]+0xca): undefined reference to `glTexParameterf@12'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget13showUserImageERK6QImage[QMPOpenGLVideoWidget::sh
owUserImage(QImage const&)]+0x11f): undefined reference to `glViewport@16'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget12displayImageERK6QImage[QMPOpenGLVideoWidget::dis
playImage(QImage const&)]+0x96): undefined reference to `glTexParameterf@12'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget12displayImageERK6QImage[QMPOpenGLVideoWidget::dis
playImage(QImage const&)]+0xb6): undefined reference to `glTexParameterf@12'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget12initializeGLEv[QMPOpenGLVideoWidget::initializeG
L()]+0xe): undefined reference to `glEnable@4'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget12initializeGLEv[QMPOpenGLVideoWidget::initializeG
L()]+0x39): undefined reference to `glClearColor@16'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget12initializeGLEv[QMPOpenGLVideoWidget::initializeG
L()]+0x52): undefined reference to `glClearDepth@8'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget8resizeGLEii[QMPOpenGLVideoWidget::resizeGL(int, int)]+0x3c): undefined reference to `glViewport@16'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x11): undefined reference to `glClear@4'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x19): undefined reference to `glLoadIdentity@0'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x3d): undefined reference to `glBindTexture@8'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x136)
: undefined reference to `glViewport@16'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x145)
: undefined reference to `glBegin@4'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x15e)
: undefined reference to `glTexCoord2f@8'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x177)
: undefined reference to `glVertex2f@8'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x190)
: undefined reference to `glTexCoord2f@8'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x1a9)
: undefined reference to `glVertex2f@8'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x1c2)
: undefined reference to `glTexCoord2f@8'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x1db)
: undefined reference to `glVertex2f@8'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x1f4)
: undefined reference to `glTexCoord2f@8'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x20d)
: undefined reference to `glVertex2f@8'
../libqmpwidget.a(qmpwidget.o):qmpwidget.cpp:(.text$_ZN20QMPOpenGLVideoWidget7paintGLEv[QMPOpenGLVideoWidget::paintGL()]+0x215)
: undefined reference to `glEnd@0'
collect2: ld returned 1 exit status
mingw32-make[2]: *** [..\qmpdemo.exe] Error 1
mingw32-make[1]: *** [debug] Error 2
mingw32-make: *** [sub-demo-make_default-ordered] Error 2
Процесс «C:\QtSDK\mingw\bin\mingw32-make.exe» завершился с кодом 2.
Возникла ошибка при сборке проекта qmpwidget (цель: Desktop)
Во время выполнения сборки на этапе «Сборка»
ibnz
Цитата(RazrFalcon @ 29.9.2011, 9:56) *
Цитата(ibnz @ 28.9.2011, 23:39) *
Вообще иметь такую кошерную альтернативу фонону было бы весьма заманчиво.

Чем фонон не устроил? MPlayer можно и через него пускать: https://projects.kde.org/projects/kdesuppor.../phonon-mplayer


бэкэнд мплеера скачал и собрал, как теперь заставить фонон им пользоваться?
я так понял либы нужно положить в qtdir\Desktop\Qt\4.7.4\mingw\plugins\
а дальше?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.