Allocate padded RGB frames for FFmpeg video conversion
This commit is contained in:
1 parent
88e3e27145
commit
f81b93ad0d
3 files changed
+39
-4
No files matched your search
@@ -1,5 +1,6 @@
|
||||
#include "streamplayer_window.h"
|
||||
#include "videoplayer_window.h"
|
||||
#include "video_frame_image.h"
|
||||
#include "sound_manager.h"
|
||||
#include "../transport/stream_bridge.h"
|
||||
#include <QVBoxLayout>
|
||||
@@ -178,8 +179,8 @@ void StreamPlayerWindow::tick() {
|
||||
}
|
||||
if (!image.isNull()) {
|
||||
m_render->setFrame(image); m_status->setText(text("Live"));
|
||||
if (first) DEBUG_INFO(DEBUG_CATEGORY_STREAM, "desktop first frame id=%llu %dx%d", (unsigned long long)p.id,
|
||||
image.width(), image.height());
|
||||
if (first) DEBUG_INFO(DEBUG_CATEGORY_STREAM, "desktop first frame id=%llu %dx%d RGB_stride=%lld",
|
||||
(unsigned long long)p.id, image.width(), image.height(), (long long)image.bytesPerLine());
|
||||
emit framePresented();
|
||||
}
|
||||
if (finished) { m_status->setText(text("Stream ended")); m_audio.close(); m_timer.stop(); }
|
||||
@@ -284,7 +285,7 @@ void StreamPlayerWindow::decode() {
|
||||
if (pts < p.clock(nowUs()) - 100000) { discarded++; continue; } }
|
||||
converter = sws_getCachedContext(converter, frame->width, frame->height, (AVPixelFormat)frame->format,
|
||||
frame->width, frame->height, AV_PIX_FMT_RGB24, SWS_BILINEAR, nullptr, nullptr, nullptr);
|
||||
QImage image(frame->width, frame->height, QImage::Format_RGB888);
|
||||
QImage image = video_frame_image(frame->width, frame->height);
|
||||
if (!converter || image.isNull()) { fail(text("Stream video conversion failed")); p.running = false; return; }
|
||||
uint8_t* destination[] = {image.bits(), nullptr, nullptr, nullptr};
|
||||
int strides[] = {(int)image.bytesPerLine(), 0, 0, 0};
|
||||
|
||||
Reference in new issue
Block a user