6#ifdef QT_COMPILER_SUPPORTS_SSE2
12template<
int a,
int r,
int b,
int g>
19 const __m128i
zero = _mm_setzero_si128();
20#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
21 const uchar shuffle = _MM_SHUFFLE(
a,
r,
b,
g);
23 const uchar shuffle = _MM_SHUFFLE(3-
a, 3-
r, 3-
b, 3-
g);
29 auto *pixel =
reinterpret_cast<const Pixel *
>(
src);
33 *argb = pixel->convert();
39 __m128i pixelData = _mm_loadu_si128(
reinterpret_cast<const __m128i*
>(pixel));
41 __m128i lowPixels = _mm_unpacklo_epi8(pixelData,
zero);
42 __m128i highPixels = _mm_unpackhi_epi8(pixelData,
zero);
43 lowPixels = _mm_shufflelo_epi16(_mm_shufflehi_epi16(lowPixels, shuffle), shuffle);
44 highPixels = _mm_shufflelo_epi16(_mm_shufflehi_epi16(highPixels, shuffle), shuffle);
45 pixelData = _mm_packus_epi16(lowPixels, highPixels);
46 _mm_store_si128(
reinterpret_cast<__m128i*
>(argb), pixelData);
52 *argb = pixel->convert();
The QVideoFrame class represents a frame of video data.
Combined button and popup list for selecting options.
GLboolean GLboolean GLboolean b
GLint GLint GLint GLint GLint x
[0]
GLint GLsizei GLsizei height
GLboolean GLboolean GLboolean GLboolean a
[7]
const void GLsizei GLsizei stride
#define MERGE_LOOPS(width, height, stride, bpp)
#define FETCH_INFO_PACKED(frame)
QT_BEGIN_NAMESPACE typedef uchar * output