Bug 1423795 - Set correct YUVColorSpace for video if possible r=nical

This commit is contained in:
sotaro 2017-12-08 11:58:53 +09:00
Родитель 22a064e2b7
Коммит 05e371c3e3
4 изменённых файлов: 19 добавлений и 5 удалений

Просмотреть файл

@ -617,13 +617,14 @@ BufferTextureHost::PushDisplayItems(wr::DisplayListBuilder& aBuilder,
aBuilder.PushImage(aBounds, aClip, true, aFilter, aImageKeys[0]);
} else {
MOZ_ASSERT(aImageKeys.length() == 3);
const YCbCrDescriptor& desc = mDescriptor.get_YCbCrDescriptor();
aBuilder.PushYCbCrPlanarImage(aBounds,
aClip,
true,
aImageKeys[0],
aImageKeys[1],
aImageKeys[2],
wr::WrYuvColorSpace::Rec601,
wr::ToWrYuvColorSpace(desc.yUVColorSpace()),
aFilter);
}
}

Просмотреть файл

@ -1151,7 +1151,7 @@ DXGITextureHostD3D11::PushDisplayItems(wr::DisplayListBuilder& aBuilder,
true,
aImageKeys[0],
aImageKeys[1],
wr::WrYuvColorSpace::Rec601,
wr::ToWrYuvColorSpace(YUVColorSpace::BT601),
aFilter);
break;
}
@ -1374,7 +1374,7 @@ DXGIYCbCrTextureHostD3D11::PushDisplayItems(wr::DisplayListBuilder& aBuilder,
aImageKeys[0],
aImageKeys[1],
aImageKeys[2],
wr::WrYuvColorSpace::Rec601,
wr::ToWrYuvColorSpace(mYUVColorSpace),
aFilter);
}

Просмотреть файл

@ -222,7 +222,7 @@ MacIOSurfaceTextureHostOGL::PushDisplayItems(wr::DisplayListBuilder& aBuilder,
aClip,
true,
aImageKeys[0],
wr::WrYuvColorSpace::Rec601,
wr::ToWrYuvColorSpace(YUVColorSpace::BT601),
aFilter);
break;
}
@ -234,7 +234,7 @@ MacIOSurfaceTextureHostOGL::PushDisplayItems(wr::DisplayListBuilder& aBuilder,
true,
aImageKeys[0],
aImageKeys[1],
wr::WrYuvColorSpace::Rec601,
wr::ToWrYuvColorSpace(YUVColorSpace::BT601),
aFilter);
break;
}

Просмотреть файл

@ -8,6 +8,7 @@
#define GFX_WEBRENDERTYPES_H
#include "FrameMetrics.h"
#include "ImageTypes.h"
#include "mozilla/webrender/webrender_ffi.h"
#include "mozilla/Maybe.h"
#include "mozilla/gfx/Matrix.h"
@ -766,6 +767,18 @@ enum class WebRenderError : int8_t {
Sentinel /* this must be last for serialization purposes. */
};
static inline wr::WrYuvColorSpace ToWrYuvColorSpace(YUVColorSpace aYUVColorSpace) {
switch (aYUVColorSpace) {
case YUVColorSpace::BT601:
return wr::WrYuvColorSpace::Rec601;
case YUVColorSpace::BT709:
return wr::WrYuvColorSpace::Rec709;
default:
MOZ_ASSERT_UNREACHABLE("Tried to convert invalid YUVColorSpace.");
}
return wr::WrYuvColorSpace::Rec601;
}
} // namespace wr
} // namespace mozilla