Files
ANSLIB/MediaClient/MediaClientForMobile/utils.cpp
2026-03-28 11:39:04 +11:00

410 lines
7.3 KiB
C++

/***************************************************************************************
*
* IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
*
* By downloading, copying, installing or using the software you agree to this license.
* If you do not agree to this license, do not download, install,
* copy or use the software.
*
* Copyright (C) 2014-2024, Happytimesoft Corporation, all rights reserved.
*
* Redistribution and use in binary forms, with or without modification, are permitted.
*
* Unless required by applicable law or agreed to in writing, software distributed
* under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
* language governing permissions and limitations under the License.
*
****************************************************************************************/
#include "sys_inc.h"
#include "config.h"
#include "utils.h"
#include <QCoreApplication>
#include <QDir>
#include <QFile>
#include <QMessageBox>
#include <QSettings>
#include <QScreen>
#include <QApplication>
#include <QDateTime>
#include <QCoreApplication>
#include <QStandardPaths>
QString getSnapshotPath()
{
#if defined(IOS)
return QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation).last();
#else
return QStandardPaths::standardLocations(QStandardPaths::PicturesLocation).last();
#endif
}
QString getRecordPath()
{
#if defined(IOS)
return QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation).last();
#else
return QStandardPaths::standardLocations(QStandardPaths::MoviesLocation).last();
#endif
}
QString getOpenFilePath()
{
QSettings setting;
return setting.value("openFilePath").toString();
}
BOOL getEnableLogFlag()
{
QSettings setting;
return setting.value("enableLog", 1).toInt();
}
int getVideoRenderMode()
{
QSettings setting;
return setting.value("videoRenderMode", 0).toInt();
}
BOOL getRtpMulticast()
{
QSettings setting;
return setting.value("rtpMulticast", 0).toInt();
}
BOOL getRtpOverUdp()
{
QSettings setting;
return setting.value("rtpOverUdp", 0).toInt();
}
BOOL getRtspOverHttp()
{
QSettings setting;
return setting.value("rtspOverHttp", 0).toInt();
}
int getRtspOverHttpPort()
{
QSettings setting;
return setting.value("rtspOverHttpPort", 80).toInt();
}
BOOL getRtspOverWs()
{
QSettings setting;
return setting.value("rtspOverWs", 0).toInt();
}
int getRtspOverWsPort()
{
QSettings setting;
return setting.value("rtspOverWsPort", 80).toInt();
}
int getLogLevel()
{
QSettings setting;
return setting.value("logLevel", 2).toInt();
}
int getSysLang()
{
QSettings setting;
return setting.value("sysLang", 0).toInt();
}
int getRecordTime()
{
QSettings setting;
return setting.value("recordTime", 0).toInt();
}
int getRecordSize()
{
QSettings setting;
return setting.value("recordSize", 0).toInt();
}
int getHWDecoding()
{
QSettings setting;
return setting.value("HWDecoding", 0).toInt();
}
int getLayoutMode()
{
QSettings setting;
return setting.value("layoutMode", 4).toInt();
}
BOOL getChannels(QList<CHANNEL> & channels)
{
QSettings settings;
int size = settings.beginReadArray("Channels");
for (int i = 0; i < size; ++i)
{
settings.setArrayIndex(i);
CHANNEL channel;
channel.url = settings.value("Url").toString();
channel.user = settings.value("User").toString();
channel.pass = settings.value("Pass").toString();
channels.append(channel);
}
settings.endArray();
return TRUE;
}
QString getTempFile(QString prefix, QString extName)
{
QDateTime tm = QDateTime::currentDateTime();
QString time;
QString fileName;
time = QString::asprintf("%04d%02d%02d_%02d%02d%02d",
tm.date().year(), tm.date().month(), tm.date().day(),
tm.time().hour(), tm.time().minute(), tm.time().second());
fileName = prefix + "_" + time + extName;
return fileName;
}
void saveOpenFilePath(QString path)
{
QSettings setting;
setting.setValue("openFilePath", path);
}
void saveEnableLogFlag(BOOL flag)
{
QSettings setting;
setting.setValue("enableLog", flag);
}
void saveVideoRenderMode(int mode)
{
QSettings setting;
setting.setValue("videoRenderMode", mode);
}
void saveRtpMulticast(BOOL flag)
{
QSettings setting;
setting.setValue("rtpMulticast", flag);
}
void saveRtpOverUdp(BOOL flag)
{
QSettings setting;
setting.setValue("rtpOverUdp", flag);
}
void saveRtspOverHttp(BOOL flag)
{
QSettings setting;
setting.setValue("rtspOverHttp", flag);
}
void saveRtspOverHttpPort(int port)
{
QSettings setting;
setting.setValue("rtspOverHttpPort", port);
}
void saveRtspOverWs(BOOL flag)
{
QSettings setting;
setting.setValue("rtspOverWs", flag);
}
void saveRtspOverWsPort(int port)
{
QSettings setting;
setting.setValue("rtspOverWsPort", port);
}
void saveLogLevel(int level)
{
QSettings setting;
setting.setValue("logLevel", level);
}
void saveSysLang(int lang)
{
QSettings setting;
setting.setValue("sysLang", lang);
}
void saveRecordTime(int value)
{
QSettings setting;
setting.setValue("recordTime", value);
}
void saveRecordSize(int value)
{
QSettings setting;
setting.setValue("recordSize", value);
}
void saveHWDecoding(int value)
{
QSettings setting;
setting.setValue("HWDecoding", value);
}
void saveLayoutMode(int value)
{
QSettings setting;
setting.setValue("layoutMode", value);
}
void saveChannels(QList<CHANNEL> & channels)
{
QSettings settings;
settings.beginWriteArray("Channels");
for (int i = 0; i < channels.size(); ++i)
{
settings.setArrayIndex(i);
settings.setValue("Url", channels[i].url);
settings.setValue("User", channels[i].user);
settings.setValue("Pass", channels[i].pass);
}
settings.endArray();
}
BOOL isUrl(QString url)
{
BOOL isUrl = 0;
if (isRtspUrl(url))
{
isUrl = 1;
}
else if (isRtmpUrl(url))
{
isUrl = 1;
}
else if (isHttpUrl(url))
{
isUrl = 1;
}
else if (isSrtUrl(url))
{
isUrl = 1;
}
return isUrl;
}
BOOL isRtspUrl(QString url)
{
BOOL isUrl = 0;
if (url.startsWith("rtsp://"))
{
isUrl = 1;
}
#ifdef OVER_WEBSOCKET
else if (url.startsWith("ws://"))
{
// rtsp over websocket
isUrl = 1;
}
#ifdef HTTPS
else if (url.startsWith("wss://"))
{
// rtsp over websocket
isUrl = 1;
}
#endif
#endif
return isUrl;
}
BOOL isRtmpUrl(QString url)
{
BOOL isUrl = 0;
if (url.startsWith("rtmp://") ||
url.startsWith("rtmpt://") ||
url.startsWith("rtmps://") ||
url.startsWith("rtmpe://") ||
url.startsWith("rtmpfp://") ||
url.startsWith("rtmpte://") ||
url.startsWith("rtmpts://"))
{
isUrl = 1;
}
return isUrl;
}
BOOL isHttpUrl(QString url)
{
BOOL isUrl = 0;
if (url.startsWith("http://"))
{
isUrl = 1;
}
#ifdef HTTPS
else if (url.startsWith("https://"))
{
isUrl = 1;
}
#endif
return isUrl;
}
BOOL isSrtUrl(QString url)
{
BOOL isUrl = 0;
if (url.startsWith("srt://"))
{
isUrl = 1;
}
return isUrl;
}