|
|
@ -105,8 +105,10 @@ bool ReadStream::setStreamDecoder(DecodeStream *decodeStreamer) {
|
|
|
|
// QMutexLocker locker(&m_mutex);
|
|
|
|
// QMutexLocker locker(&m_mutex);
|
|
|
|
m_streamDecoder = decodeStreamer;
|
|
|
|
m_streamDecoder = decodeStreamer;
|
|
|
|
m_queueManager.clearDecodeQueue();
|
|
|
|
m_queueManager.clearDecodeQueue();
|
|
|
|
m_decodeStreamFlag = m_streamDecoder->init(
|
|
|
|
// m_decodeStreamFlag = m_streamDecoder->init(
|
|
|
|
&m_queueManager, m_formatContext, m_videoIndex);
|
|
|
|
// &m_queueManager, m_formatContext, m_videoIndex);
|
|
|
|
|
|
|
|
m_streamDecoder->initStreamDecoderSignal(&m_queueManager, m_formatContext, m_videoIndex);
|
|
|
|
|
|
|
|
m_decodeStreamFlag = m_streamDecoder->initStatus;
|
|
|
|
if (m_decodeStreamFlag) emit decodeStreamer->startDecodeSignal();
|
|
|
|
if (m_decodeStreamFlag) emit decodeStreamer->startDecodeSignal();
|
|
|
|
return m_decodeStreamFlag;
|
|
|
|
return m_decodeStreamFlag;
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
@ -120,9 +122,11 @@ bool ReadStream::setUDPStreamDecoder(DecodeStream *decodeStreamer) {
|
|
|
|
// QMutexLocker locker(&m_mutex);
|
|
|
|
// QMutexLocker locker(&m_mutex);
|
|
|
|
m_streamDecoder = decodeStreamer;
|
|
|
|
m_streamDecoder = decodeStreamer;
|
|
|
|
m_queueManager.clearDecodeQueue();
|
|
|
|
m_queueManager.clearDecodeQueue();
|
|
|
|
m_decodeStreamFlag = m_streamDecoder->init(&m_queueManager);
|
|
|
|
// m_decodeStreamFlag = m_streamDecoder->init(&m_queueManager);
|
|
|
|
// codec_ctx = m_streamDecoder->getCodecContext();
|
|
|
|
// codec_ctx = m_streamDecoder->getCodecContext();
|
|
|
|
// parser = m_streamDecoder->getParserContext();
|
|
|
|
// parser = m_streamDecoder->getParserContext();
|
|
|
|
|
|
|
|
m_streamDecoder->initUDPStreamDecoderSignal(&m_queueManager);
|
|
|
|
|
|
|
|
m_decodeStreamFlag = m_streamDecoder->initStatus;
|
|
|
|
if (m_decodeStreamFlag) emit decodeStreamer->startDecodeSignal();
|
|
|
|
if (m_decodeStreamFlag) emit decodeStreamer->startDecodeSignal();
|
|
|
|
return m_decodeStreamFlag;
|
|
|
|
return m_decodeStreamFlag;
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
@ -138,8 +142,10 @@ bool ReadStream::setStreamSaver(SaveStream *streamSaver, bool isUDP) {
|
|
|
|
if (isUDP) {
|
|
|
|
if (isUDP) {
|
|
|
|
m_saveStreamFlag = m_streamSaver->initUDP(&m_queueManager);
|
|
|
|
m_saveStreamFlag = m_streamSaver->initUDP(&m_queueManager);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
m_saveStreamFlag = m_streamSaver->init(
|
|
|
|
// m_saveStreamFlag = m_streamSaver->init(
|
|
|
|
m_formatContext, &m_queueManager, m_videoIndex);
|
|
|
|
// m_formatContext, &m_queueManager, m_videoIndex);
|
|
|
|
|
|
|
|
emit m_streamSaver->initStreamSaverSignal(m_formatContext, &m_queueManager, m_videoIndex);
|
|
|
|
|
|
|
|
m_saveStreamFlag = m_streamSaver->initStatus;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return m_saveStreamFlag;
|
|
|
|
return m_saveStreamFlag;
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
@ -149,10 +155,13 @@ bool ReadStream::setStreamSaver(SaveStream *streamSaver, bool isUDP) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool ReadStream::setStreamPusher(PushStream *streamPusher) {
|
|
|
|
bool ReadStream::setStreamPusher(PushStream *streamPusher) {
|
|
|
|
|
|
|
|
qDebug() << "setStreamPusher ThreadID:" << QThread::currentThreadId();
|
|
|
|
if (streamPusher) {
|
|
|
|
if (streamPusher) {
|
|
|
|
m_streamPusher = streamPusher;
|
|
|
|
m_streamPusher = streamPusher;
|
|
|
|
m_queueManager.clearPushQueue();
|
|
|
|
m_queueManager.clearPushQueue();
|
|
|
|
m_pushStreamFlag = streamPusher->init(m_formatContext, &m_queueManager);
|
|
|
|
emit streamPusher->initStreamPusherSignal(m_formatContext, &m_queueManager);
|
|
|
|
|
|
|
|
// m_pushStreamFlag = streamPusher->init(m_formatContext, &m_queueManager);
|
|
|
|
|
|
|
|
m_pushStreamFlag = m_streamPusher->initStatus;
|
|
|
|
if (m_pushStreamFlag) streamPusher->startPushStreamSignal(0);
|
|
|
|
if (m_pushStreamFlag) streamPusher->startPushStreamSignal(0);
|
|
|
|
return m_pushStreamFlag;
|
|
|
|
return m_pushStreamFlag;
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
@ -471,21 +480,25 @@ void ReadStream::free() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool ReadStream::reconnect() {
|
|
|
|
bool ReadStream::reconnect() {
|
|
|
|
|
|
|
|
m_queueManager.m_isPullReconnect = true;
|
|
|
|
m_end = false;
|
|
|
|
m_end = false;
|
|
|
|
if (m_streamDecoder) {
|
|
|
|
if (m_streamDecoder) {
|
|
|
|
m_streamDecoder->close();
|
|
|
|
m_streamDecoder->close();
|
|
|
|
|
|
|
|
m_queueManager.waitForStreamDecoderClosed();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (m_streamSaver) {
|
|
|
|
if (m_streamSaver) {
|
|
|
|
m_streamSaver->close();
|
|
|
|
m_streamSaver->close();
|
|
|
|
|
|
|
|
m_queueManager.waitForStreamSaverClosed();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (m_streamPusher) {
|
|
|
|
if (m_streamPusher) {
|
|
|
|
m_streamPusher->close();
|
|
|
|
m_streamPusher->close();
|
|
|
|
|
|
|
|
m_queueManager.waitForStreamPusherClosed();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
qDebug()<<"all closed!";
|
|
|
|
free();
|
|
|
|
free();
|
|
|
|
for (int i = 0; i < MAXRECONNECT; ++i) {
|
|
|
|
for (int i = 0; i < MAXRECONNECT; ++i) {
|
|
|
|
m_start = openFile(m_pullURL);
|
|
|
|
m_start = openFile(m_pullURL);
|
|
|
|
if (m_start) {
|
|
|
|
if (m_start) {
|
|
|
|
emit sendErrorMessageSignal("重连成功!", 1);
|
|
|
|
|
|
|
|
if (m_streamDecoder) {
|
|
|
|
if (m_streamDecoder) {
|
|
|
|
setStreamDecoder(m_streamDecoder);
|
|
|
|
setStreamDecoder(m_streamDecoder);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -495,6 +508,8 @@ bool ReadStream::reconnect() {
|
|
|
|
if (m_streamPusher) {
|
|
|
|
if (m_streamPusher) {
|
|
|
|
setStreamPusher(m_streamPusher);
|
|
|
|
setStreamPusher(m_streamPusher);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
m_queueManager.m_isPullReconnect = false;
|
|
|
|
|
|
|
|
emit sendErrorMessageSignal("重连成功!", 1);
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
qDebug() << "reconnect failed:" << QString::number(i + 1);
|
|
|
|
qDebug() << "reconnect failed:" << QString::number(i + 1);
|
|
|
@ -506,6 +521,7 @@ bool ReadStream::reconnect() {
|
|
|
|
if (m_end) break;
|
|
|
|
if (m_end) break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
emit sendErrorMessageSignal("重连失败!", 2);
|
|
|
|
emit sendErrorMessageSignal("重连失败!", 2);
|
|
|
|
|
|
|
|
m_queueManager.m_isPullReconnect = false;
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|