hdr video can be used in the pipeline without conversion to rgba8888

This commit is contained in:
itsmattkc
2019-03-26 21:58:47 +11:00
parent d8acef21a8
commit 6b40a4ccf8
4 changed files with 9 additions and 8 deletions
+6 -2
View File
@@ -35,21 +35,25 @@ void InitializeBitDepths() {
bit_depths[PIX_FMT_RGBA8].internal_format = GL_RGBA8;
bit_depths[PIX_FMT_RGBA8].pixel_format = GL_RGBA;
bit_depths[PIX_FMT_RGBA8].pixel_type = GL_UNSIGNED_BYTE;
bit_depths[PIX_FMT_RGBA8].bytes_per_pixel = 4;
bit_depths[PIX_FMT_RGBA16].name = QCoreApplication::translate("bitdepths", "16-bit Integer");
bit_depths[PIX_FMT_RGBA16].internal_format = GL_RGBA16UI;
bit_depths[PIX_FMT_RGBA16].pixel_format = GL_RGBA_INTEGER;
bit_depths[PIX_FMT_RGBA16].internal_format = GL_RGBA16;
bit_depths[PIX_FMT_RGBA16].pixel_format = GL_RGBA;
bit_depths[PIX_FMT_RGBA16].pixel_type = GL_UNSIGNED_SHORT;
bit_depths[PIX_FMT_RGBA16].bytes_per_pixel = 8;
bit_depths[PIX_FMT_RGBA16F].name = QCoreApplication::translate("bitdepths", "Half-Float (16-bit)");
bit_depths[PIX_FMT_RGBA16F].internal_format = GL_RGBA16F;
bit_depths[PIX_FMT_RGBA16F].pixel_format = GL_RGBA;
bit_depths[PIX_FMT_RGBA16F].pixel_type = GL_HALF_FLOAT;
bit_depths[PIX_FMT_RGBA16F].bytes_per_pixel = 8;
bit_depths[PIX_FMT_RGBA32F].name = QCoreApplication::translate("bitdepths", "Full-Float (32-bit)");
bit_depths[PIX_FMT_RGBA32F].internal_format = GL_RGBA32F;
bit_depths[PIX_FMT_RGBA32F].pixel_format = GL_RGBA;
bit_depths[PIX_FMT_RGBA32F].pixel_type = GL_FLOAT;
bit_depths[PIX_FMT_RGBA32F].bytes_per_pixel = 16;
}
+1
View File
@@ -33,6 +33,7 @@ struct BitDepthInfo {
GLint internal_format;
GLenum pixel_format;
GLenum pixel_type;
int bytes_per_pixel;
};
/**
-2
View File
@@ -69,8 +69,6 @@ void FramebufferObject::Create(QOpenGLContext *ctx, int width, int height)
olive::CurrentConfig.export_bit_depth :
olive::CurrentConfig.playback_bit_depth);
qDebug() << "hello" << bit_depth.name;
ctx->functions()->glTexImage2D(
GL_TEXTURE_2D,
0,
+2 -4
View File
@@ -37,8 +37,6 @@
#include "global/debug.h"
#include "global/timing.h"
const int kRGBAComponentCount = 4;
Clip::Clip(Sequence* s) :
sequence(s),
cacher(this),
@@ -584,13 +582,13 @@ bool Clip::Retrieve()
}
f->glPixelStorei(GL_UNPACK_ROW_LENGTH, frame->linesize[0]/kRGBAComponentCount);
int video_width = cacher.media_width();
int video_height = cacher.media_height();
const olive::rendering::BitDepthInfo& bit_depth_info = olive::rendering::bit_depths.at(cacher.media_pixel_format());
f->glPixelStorei(GL_UNPACK_ROW_LENGTH, frame->linesize[0]/bit_depth_info.bytes_per_pixel);
if (allocate_data) {
// the raw frame size may differ from the one we're using (e.g. a lower resolution proxy), so we make sure