1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00

Clean & remove old code and dependencies

We don't use QtMultimedia and OpenCV_imgproc anymore

Fixes #218
This commit is contained in:
Tux3 / Mlkj / !Lev.uXFMLA 2014-08-30 15:15:23 +02:00
parent 35731e1f53
commit f97729261a
11 changed files with 25 additions and 163 deletions

View File

@ -78,6 +78,8 @@ Core::Core(Camera* cam, QThread *coreThread) :
qWarning() << "Core: Cannot create output audio context"; qWarning() << "Core: Cannot create output audio context";
alcCloseDevice(alOutDev); alcCloseDevice(alOutDev);
} }
else
alGenSources(1, &alMainSource);
} }
alInDev = alcCaptureOpenDevice(NULL,av_DefaultSettings.audio_sample_rate, AL_FORMAT_MONO16, alInDev = alcCaptureOpenDevice(NULL,av_DefaultSettings.audio_sample_rate, AL_FORMAT_MONO16,
(av_DefaultSettings.audio_frame_duration * av_DefaultSettings.audio_sample_rate * 4) / 1000); (av_DefaultSettings.audio_frame_duration * av_DefaultSettings.audio_sample_rate * 4) / 1000);

6
core.h
View File

@ -31,10 +31,6 @@
#include <QFile> #include <QFile>
#include <QList> #include <QList>
#include <QByteArray> #include <QByteArray>
#include <QFuture>
#include <QBuffer>
#include <QAudioOutput>
#include <QAudioInput>
#define TOXAV_MAX_CALLS 16 #define TOXAV_MAX_CALLS 16
#define GROUPCHAT_MAX_SIZE 32 #define GROUPCHAT_MAX_SIZE 32
@ -304,6 +300,8 @@ private:
static ALCdevice* alOutDev, *alInDev; static ALCdevice* alOutDev, *alInDev;
static ALCcontext* alContext; static ALCcontext* alContext;
public:
static ALuint alMainSource;
}; };
#endif // CORE_HPP #endif // CORE_HPP

View File

@ -8,6 +8,7 @@ int Core::videoBusyness;
ALCdevice* Core::alOutDev, *Core::alInDev; ALCdevice* Core::alOutDev, *Core::alInDev;
ALCcontext* Core::alContext; ALCcontext* Core::alContext;
ALuint Core::alMainSource;
void Core::prepareCall(int friendId, int callId, ToxAv* toxav, bool videoEnabled) void Core::prepareCall(int friendId, int callId, ToxAv* toxav, bool videoEnabled)
{ {

View File

@ -17,6 +17,7 @@
#include "friend.h" #include "friend.h"
#include "friendlist.h" #include "friendlist.h"
#include <QMenu> #include <QMenu>
#include <QDebug>
QList<Friend*> FriendList::friendList; QList<Friend*> FriendList::friendList;

View File

@ -20,7 +20,7 @@
# See the COPYING file for more details. # See the COPYING file for more details.
QT += core gui network multimedia multimediawidgets xml QT += core gui network xml
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = qtox TARGET = qtox
@ -43,9 +43,9 @@ INCLUDEPATH += libs/include
win32 { win32 {
LIBS += $$PWD/libs/lib/libtoxav.a $$PWD/libs/lib/libopus.a $$PWD/libs/lib/libvpx.a $$PWD/libs/lib/libopenal32.a $$PWD/libs/lib/libtoxcore.a -lws2_32 $$PWD/libs/lib/libsodium.a -lpthread -liphlpapi LIBS += $$PWD/libs/lib/libtoxav.a $$PWD/libs/lib/libopus.a $$PWD/libs/lib/libvpx.a $$PWD/libs/lib/libopenal32.a $$PWD/libs/lib/libtoxcore.a -lws2_32 $$PWD/libs/lib/libsodium.a -lpthread -liphlpapi
} macx { } macx {
LIBS += -L$$PWD/libs/lib/ -ltoxcore -ltoxav -lsodium -lvpx -framework OpenAL -lopencv_core -lopencv_highgui -lopencv_imgproc LIBS += -L$$PWD/libs/lib/ -ltoxcore -ltoxav -lsodium -lvpx -framework OpenAL -lopencv_core -lopencv_highgui
} else { } else {
LIBS += -L$$PWD/libs/lib/ -ltoxcore -ltoxav -lsodium -lvpx -lopenal -lopencv_core -lopencv_highgui -lopencv_imgproc LIBS += -L$$PWD/libs/lib/ -ltoxcore -ltoxav -lsodium -lvpx -lopenal -lopencv_core -lopencv_highgui
} }
#### Static linux build #### Static linux build
@ -82,7 +82,6 @@ HEADERS += widget/form/addfriendform.h \
cdata.h \ cdata.h \
cstring.h \ cstring.h \
widget/selfcamview.h \ widget/selfcamview.h \
widget/videosurface.h \
widget/camera.h \ widget/camera.h \
widget/netcamview.h \ widget/netcamview.h \
widget/tool/clickablelabel.h \ widget/tool/clickablelabel.h \
@ -119,7 +118,6 @@ SOURCES += \
cdata.cpp \ cdata.cpp \
cstring.cpp \ cstring.cpp \
widget/selfcamview.cpp \ widget/selfcamview.cpp \
widget/videosurface.cpp \
widget/camera.cpp \ widget/camera.cpp \
widget/netcamview.cpp \ widget/netcamview.cpp \
widget/tool/clickablelabel.cpp \ widget/tool/clickablelabel.cpp \

View File

@ -15,10 +15,7 @@
*/ */
#include "camera.h" #include "camera.h"
#include <QVideoSurfaceFormat>
#include <QMessageBox> #include <QMessageBox>
#include <QVideoEncoderSettings>
#include <QVideoEncoderSettingsControl>
using namespace cv; using namespace cv;

View File

@ -14,6 +14,7 @@
See the COPYING file for more details. See the COPYING file for more details.
*/ */
#include "friendlistwidget.h" #include "friendlistwidget.h"
#include <QDebug>
FriendListWidget::FriendListWidget(QWidget *parent) : FriendListWidget::FriendListWidget(QWidget *parent) :
QWidget(parent) QWidget(parent)

View File

@ -15,13 +15,9 @@
*/ */
#include "selfcamview.h" #include "selfcamview.h"
#include <QActionGroup>
#include <QMessageBox>
#include <QCloseEvent> #include <QCloseEvent>
#include <QShowEvent> #include <QShowEvent>
#include <QVideoFrame>
#include "videosurface.h"
#include "widget.h" #include "widget.h"
using namespace cv; using namespace cv;

View File

@ -1,103 +0,0 @@
/*
Copyright (C) 2014 by Project Tox <https://tox.im>
This file is part of qTox, a Qt-based graphical interface for Tox.
This program is libre software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the COPYING file for more details.
*/
#include "videosurface.h"
#include "core.h"
#include <QVideoFrame>
#include <QDebug>
VideoSurface::VideoSurface()
: QAbstractVideoSurface()
{
vpx_img_alloc(&input, VPX_IMG_FMT_YV12, TOXAV_MAX_VIDEO_WIDTH, TOXAV_MAX_VIDEO_HEIGHT, 1);
}
bool VideoSurface::start(const QVideoSurfaceFormat &format)
{
mVideoFormat = format;
//start only if format is UYVY, dont handle other format now
if( format.pixelFormat() == QVideoFrame::Format_YV12 ){
QAbstractVideoSurface::start(format);
return true;
} else {
return false;
}
}
bool VideoSurface::present(const QVideoFrame&)
{
/*
mFrame = frame;
qDebug() << QString("Video: Frame format is %1").arg(mFrame.pixelFormat());
stop();
//this is necessary to get valid data from frame
mFrame.map(QAbstractVideoBuffer::ReadOnly);
uchar* data = new uchar[frame.mappedBytes()];
memcpy(data, frame.bits(), frame.mappedBytes());
input.planes[VPX_PLANE_Y] = data;
input.planes[VPX_PLANE_U] = data + (frame.bytesPerLine() * frame.height());
input.planes[VPX_PLANE_V] = input.planes[VPX_PLANE_U] + (frame.bytesPerLine()/2 * frame.height()/2);
input.planes[VPX_PLANE_ALPHA] = nullptr;
//qDebug() << QString("Got %1 bytes, first plane is %2 bytes long")
// .arg(frame.mappedBytes()).arg(frame.bytesPerLine() * frame.height());
// Slots MUST be called with a direct or blocking connection, or input may die before they return !
emit videoFrameReady(input);
QImage lastImage( mFrame.size(), QImage::Format_RGB16);
const uchar *src = mFrame.bits();
uchar *dst = lastImage.bits();
const int srcLineStep = mFrame.bytesPerLine();
const int dstLineStep = lastImage.bytesPerLine();
const int h = mFrame.height();
const int w = mFrame.width();
for (int y=0; y < h; y++) {
//this function you can find in qgraphicsvideoitem_maemo5.cpp,
//link is mentioned above
uyvy422_to_rgb16_line_neon(dst, src, w);
src += srcLineStep;
dst += dstLineStep;
}
mLastFrame = QPixmap::fromImage(lastImage);
//emit signal, other can handle it and do necessary processing
emit frameUpdated(mLastFrame);
delete[] data;
mFrame.unmap();
*/
return true;
}
QList<QVideoFrame::PixelFormat> VideoSurface::supportedPixelFormats(QAbstractVideoBuffer::HandleType handleType) const
{
if (handleType == QAbstractVideoBuffer::NoHandle) {
qDebug() << "Video: No handle";
return QList<QVideoFrame::PixelFormat>() << QVideoFrame::Format_YV12;
} else {
qDebug() << "Video: Handle type is not NoHandle";
return QList<QVideoFrame::PixelFormat>();
}
}

View File

@ -1,42 +0,0 @@
/*
Copyright (C) 2014 by Project Tox <https://tox.im>
This file is part of qTox, a Qt-based graphical interface for Tox.
This program is libre software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the COPYING file for more details.
*/
#ifndef VIDEOSURFACE_H
#define VIDEOSURFACE_H
#include <QAbstractVideoSurface>
#include <QVideoSurfaceFormat>
#include "vpx/vpx_image.h"
class VideoSurface : public QAbstractVideoSurface
{
Q_OBJECT
public:
VideoSurface();
bool start(const QVideoSurfaceFormat &format);
bool present(const QVideoFrame &frame);
QList<QVideoFrame::PixelFormat> supportedPixelFormats(QAbstractVideoBuffer::HandleType handleType) const;
signals:
// Slots MUST be called with a direct or blocking connection, or img may die before they return !
void videoFrameReady(vpx_image img);
private:
QVideoSurfaceFormat mVideoFormat;
vpx_image_t input;
};
#endif // VIDEOSURFACE_H

View File

@ -28,7 +28,6 @@
#include "style.h" #include "style.h"
#include <QMessageBox> #include <QMessageBox>
#include <QDebug> #include <QDebug>
#include <QSound>
#include <QTextStream> #include <QTextStream>
#include <QFile> #include <QFile>
#include <QString> #include <QString>
@ -569,7 +568,21 @@ void Widget::updateFriendStatusLights(int friendId)
void Widget::newMessageAlert() void Widget::newMessageAlert()
{ {
QApplication::alert(this); QApplication::alert(this);
QSound::play(":audio/notification.wav");
static QFile sndFile(":audio/notification.wav");
static QByteArray sndData;
if (sndData.isEmpty())
{
sndFile.open(QIODevice::ReadOnly);
sndData = sndFile.readAll();
sndFile.close();
}
ALuint buffer;
alGenBuffers(1, &buffer);
alBufferData(buffer, AL_FORMAT_STEREO16, sndData.data(), sndData.size(), 44100);
alSourcei(core->alMainSource, AL_BUFFER, buffer);
alSourcePlay(core->alMainSource);
} }
void Widget::onFriendRequestReceived(const QString& userId, const QString& message) void Widget::onFriendRequestReceived(const QString& userId, const QString& message)