[Libva] [PATCH RFC intel-driver 08/11] test: add some JPEG decode test cases

U. Artie Eoff ullysses.a.eoff at intel.com
Thu Sep 1 19:59:42 UTC 2016


Test that the driver properly decodes JPEG data that
is encoded in various fourcc formats.

Signed-off-by: U. Artie Eoff <ullysses.a.eoff at intel.com>
---
 test/Makefile.am               |    2 +
 test/i965_jpeg_decode_test.cpp |  292 +++++++++++
 test/i965_jpeg_test_data.h     | 1085 ++++++++++++++++++++++++++++++++++++++++
 3 files changed, 1379 insertions(+)
 create mode 100644 test/i965_jpeg_decode_test.cpp
 create mode 100644 test/i965_jpeg_test_data.h

diff --git a/test/Makefile.am b/test/Makefile.am
index 4a3f3a67902f..b2832684bef5 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -45,6 +45,7 @@ EXTRA_DIST =								\
 noinst_PROGRAMS = test_i965_drv_video
 noinst_HEADERS =							\
 	i965_internal_decl.h						\
+	i965_jpeg_test_data.h						\
 	i965_test_fixture.h						\
 	test.h								\
 	$(NULL)
@@ -52,6 +53,7 @@ noinst_HEADERS =							\
 test_i965_drv_video_SOURCES =						\
 	i965_initialize_test.cpp					\
 	i965_test_fixture.cpp						\
+	i965_jpeg_decode_test.cpp					\
 	test_main.cpp							\
 	$(NULL)
 
diff --git a/test/i965_jpeg_decode_test.cpp b/test/i965_jpeg_decode_test.cpp
new file mode 100644
index 000000000000..6a17d1e98d18
--- /dev/null
+++ b/test/i965_jpeg_decode_test.cpp
@@ -0,0 +1,292 @@
+/*
+ * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include "i965_test_fixture.h"
+#include "i965_jpeg_test_data.h"
+
+#include <iomanip>
+#include <iostream>
+#include <numeric>
+#include <sstream>
+#include <string>
+#include <tuple>
+#include <vector>
+
+namespace JPEG {
+
+class FourCCTest
+    : public I965TestFixture
+    , public ::testing::WithParamInterface<
+        std::tuple<TestPattern::SharedConst, const char*> >
+{
+protected:
+    static const VAEntrypoint entrypoint = VAEntrypointVLD;
+
+    virtual void SetUp() {
+        I965TestFixture::SetUp();
+
+        std::string sFourcc;
+        std::tie(testPattern, sFourcc) = GetParam();
+
+        ASSERT_PTR(testPattern.get()) << "Invalid test pattern parameter";
+
+        ASSERT_EQ(4u, sFourcc.size())
+            << "Invalid fourcc parameter '" << sFourcc << "'";
+
+        unsigned fourcc = VA_FOURCC(
+            sFourcc[0], sFourcc[1], sFourcc[2], sFourcc[3]);
+
+        pd = testPattern->encoded(fourcc);
+
+        ASSERT_PTR(pd.get())
+            << "Unhandled fourcc parameter '" << sFourcc << "'"
+            << " = 0x" << std::hex << fourcc << std::dec;
+
+        ASSERT_EQ(fourcc, pd->fourcc);
+    }
+
+    void validateComponent(const uint8_t * const expect, const uint8_t * actual,
+        unsigned width, unsigned height, unsigned pitch, unsigned hsample = 1,
+        unsigned vsample = 1)
+    {
+        for (size_t row(0); row < (height / vsample); ++row) {
+            for (size_t col(0); col < (width / hsample); ++col) {
+                size_t aIdx = (row * pitch) + col;
+                size_t eIdx = (row * vsample * height) + (col * hsample);
+
+                std::vector<uint8_t> samples;
+                for (size_t i(0); i < vsample; ++i) {
+                    for (size_t j(0); j < hsample; ++j) {
+                        size_t sIdx = eIdx + (width * i) + j;
+                        samples.push_back(expect[sIdx]);
+                    }
+                }
+
+                const uint8_t eVal =
+                    std::accumulate(samples.begin(), samples.end(), 0x00)
+                    / samples.size();
+
+                const uint8_t aVal = actual[aIdx];
+
+                SCOPED_TRACE(
+                    ::testing::Message() << std::endl
+                    << "\tRow    = " << row << std::endl
+                    << "\tColumn = " << col << std::endl
+                    << "\tExpect = 0x"
+                    << std::hex << std::setfill('0') << std::setw(2)
+                    << (uint32_t)eVal << std::endl
+                    << "\tActual = 0x"
+                    << std::hex << std::setfill('0') << std::setw(2)
+                    << (uint32_t)aVal << std::dec);
+
+                EXPECT_NEAR(eVal, aVal, 0x02);
+            }
+        }
+    }
+
+    void validateImageOutput(const VAImage& image, const uint8_t * const output)
+    {
+        {
+            SCOPED_TRACE("Y Component\n");
+            validateComponent(
+                testPattern->decoded().data(), output + image.offsets[0],
+                image.width, image.height, image.pitches[0]);
+        }
+
+        {
+            SCOPED_TRACE("U Component\n");
+            validateComponent(
+                testPattern->decoded().data() + (image.width * image.height),
+                output + image.offsets[1], image.width, image.height,
+                image.pitches[1], pd->pparam.components[0].h_sampling_factor,
+                pd->pparam.components[0].v_sampling_factor);
+        }
+
+        {
+            SCOPED_TRACE("V Component\n");
+            validateComponent(
+                testPattern->decoded().data() + (image.width * image.height * 2),
+                output + image.offsets[2], image.width, image.height,
+                image.pitches[2], pd->pparam.components[0].h_sampling_factor,
+                pd->pparam.components[0].v_sampling_factor);
+        }
+    }
+
+    TestPattern::SharedConst testPattern;
+    PictureData::SharedConst pd;
+};
+
+void printComponentDataTo(std::ostream& os, const uint8_t * const data,
+    unsigned w, unsigned h, unsigned pitch)
+{
+    os << "    ";
+    for (unsigned i(0); i < w; ++i)
+        os << std::setw(4) << i << " ";
+    os << std::endl;
+
+    const uint8_t *row = data;
+    for (unsigned i(0); i < h; ++i) {
+        os << std::dec << std::setfill(' ') << std::setw(3) << (i * w) << " ";
+        for (size_t j(0); j < w; ++j) {
+            os  << "0x" << std::hex << std::setfill('0') << std::setw(2)
+                << (uint32_t)row[j] << ",";
+        }
+        os << std::endl;
+        row += pitch;
+    }
+    os << std::setw(0) << std::setfill(' ') << std::dec << std::endl;
+}
+
+void printImageOutputTo(std::ostream& os, const VAImage& image,
+    const uint8_t * const output)
+{
+    printComponentDataTo(os, output + image.offsets[0], image.width,
+        image.height, image.pitches[0]); // Y
+
+    printComponentDataTo(os, output + image.offsets[1], image.width,
+        image.height, image.pitches[1]); // U
+
+    printComponentDataTo(os, output + image.offsets[2], image.width,
+        image.height, image.pitches[2]); // V
+}
+
+#define ASSERT_NO_FAILURE(statement) \
+    statement; \
+    ASSERT_FALSE(HasFailure());
+
+TEST_P(FourCCTest, Decode)
+{
+    VAConfigAttrib a = { type:VAConfigAttribRTFormat, value:pd->format };
+    ConfigAttribs attribs(1, a);
+
+    ASSERT_NO_FAILURE(
+        Surfaces surfaces = createSurfaces(
+            pd->pparam.picture_width, pd->pparam.picture_height, pd->format));
+    ASSERT_NO_FAILURE(
+        VAConfigID config = createConfig(profile, entrypoint, attribs));
+    ASSERT_NO_FAILURE(
+        VAContextID context = createContext(
+            config, pd->pparam.picture_width, pd->pparam.picture_height, 0,
+            surfaces));
+    ASSERT_NO_FAILURE(
+        VABufferID sliceDataBufId = createBuffer(
+            context, VASliceDataBufferType, pd->sparam.slice_data_size, 1,
+            pd->slice.data()));
+    ASSERT_NO_FAILURE(
+        VABufferID sliceParamBufId = createBuffer(
+            context, VASliceParameterBufferType, sizeof(pd->sparam), 1,
+            &pd->sparam));
+    ASSERT_NO_FAILURE(
+        VABufferID picBufId = createBuffer(
+            context, VAPictureParameterBufferType, sizeof(pd->pparam), 1,
+            &pd->pparam));
+    ASSERT_NO_FAILURE(
+        VABufferID iqMatrixBufId = createBuffer(
+            context, VAIQMatrixBufferType, sizeof(IQMatrix), 1, &pd->iqmatrix));
+    ASSERT_NO_FAILURE(
+        VABufferID huffTableBufId = createBuffer(
+            context, VAHuffmanTableBufferType, sizeof(HuffmanTable), 1,
+            &pd->huffman));
+
+    ASSERT_NO_FAILURE(beginPicture(context, surfaces.front()));
+    ASSERT_NO_FAILURE(renderPicture(context, &picBufId));
+    ASSERT_NO_FAILURE(renderPicture(context, &iqMatrixBufId));
+    ASSERT_NO_FAILURE(renderPicture(context, &huffTableBufId));
+    ASSERT_NO_FAILURE(renderPicture(context, &sliceParamBufId));
+    ASSERT_NO_FAILURE(renderPicture(context, &sliceDataBufId));
+    ASSERT_NO_FAILURE(endPicture(context));
+
+    VAImage image;
+    ASSERT_NO_FAILURE(deriveImage(surfaces.front(), image));
+    ASSERT_NO_FAILURE(
+        uint8_t *output = mapBuffer<uint8_t>(image.buf));
+
+    unsigned rwidth = ALIGN(image.width, 128);
+    unsigned rheight =
+        ALIGN(image.height, 32)
+        + ALIGN(image.height / pd->pparam.components[0].v_sampling_factor, 32)
+        * 2;
+
+    SCOPED_TRACE(
+        ::testing::Message()
+        << std::endl
+        << "image  : " << image.width << "x" << image.height
+        << std::endl
+        << "region : " << rwidth << "x" << rheight
+        << std::endl
+        << "planes : " << image.num_planes
+        << std::endl
+        << "offsets: " << image.offsets[0] << " " << image.offsets[1] << " " << image.offsets[2]
+        << std::endl
+        << "pitches: " << image.pitches[0] << " " << image.pitches[1] << " " << image.pitches[2]
+    );
+
+    EXPECT_EQ(3u, image.num_planes);
+    EXPECT_EQ(pd->pparam.picture_width, image.width);
+    EXPECT_EQ(pd->pparam.picture_height, image.height);
+    EXPECT_EQ(rwidth * rheight, image.data_size);
+    EXPECT_EQ(pd->fourcc, image.format.fourcc);
+
+    std::ostringstream oss;
+    printImageOutputTo(oss, image, output);
+    RecordProperty("Output", oss.str());
+
+    validateImageOutput(image, output);
+
+//     std::cout << oss.str();
+
+    unmapBuffer(image.buf);
+
+    destroyBuffer(huffTableBufId);
+    destroyBuffer(iqMatrixBufId);
+    destroyBuffer(picBufId);
+    destroyBuffer(sliceParamBufId);
+    destroyBuffer(sliceDataBufId);
+
+    destroyImage(image);
+    destroyContext(context);
+    destroyConfig(config);
+    destroySurfaces(surfaces);
+}
+
+
+/** Teach Google Test how to print a TestPattern::SharedConst object */
+void PrintTo(const TestPattern::SharedConst& t, std::ostream* os)
+{
+    *os << *t;
+}
+
+INSTANTIATE_TEST_CASE_P(
+    JPEG, FourCCTest,
+    ::testing::Combine(
+        ::testing::Values(
+            TestPattern::SharedConst(new TestPatternData<1>),
+            TestPattern::SharedConst(new TestPatternData<2>),
+            TestPattern::SharedConst(new TestPatternData<3>),
+            TestPattern::SharedConst(new TestPatternData<4>)
+        ),
+        ::testing::Values("IMC3", "422H", "422V", "444P", "411P"))
+);
+
+} // namespace JPEG
diff --git a/test/i965_jpeg_test_data.h b/test/i965_jpeg_test_data.h
new file mode 100644
index 000000000000..622b5f97b60b
--- /dev/null
+++ b/test/i965_jpeg_test_data.h
@@ -0,0 +1,1085 @@
+/*
+ * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef I965_JPEG_TEST_DATA_H
+#define I965_JPEG_TEST_DATA_H
+
+#include <array>
+#include <map>
+#include <memory>
+#include <va/va.h>
+#include <vector>
+
+namespace JPEG {
+
+    typedef VAIQMatrixBufferJPEGBaseline                IQMatrix;
+    typedef VAHuffmanTableBufferJPEGBaseline            HuffmanTable;
+    typedef VAPictureParameterBufferJPEGBaseline        PictureParameter;
+    typedef VASliceParameterBufferJPEGBaseline          SliceParameter;
+
+    static const VAProfile profile = VAProfileJPEGBaseline;
+
+    static const HuffmanTable defaultHuffmanTable = {
+        load_huffman_table: { 0x01, 0x01 },
+        huffman_table: {
+            { // luminance
+                num_dc_codes: {
+                    0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
+                    0x00,0x00,0x00,0x00
+                },
+                dc_values:    {
+                    0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b
+                },
+                num_ac_codes: {
+                    0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,
+                    0x00,0x00,0x01,0x7d
+                },
+                ac_values:    {
+                    0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,
+                    0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,
+                    0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,
+                    0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,
+                    0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,
+                    0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,
+                    0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,
+                    0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,
+                    0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,
+                    0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,
+                    0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,
+                    0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,
+                    0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,
+                    0xf5,0xf6,0xf7,0xf8,0xf9,0xfa
+                },
+                pad: { 0x00, 0x00 }
+            },
+            { // chrominance
+                num_dc_codes: {
+                    0x00,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
+                    0x00,0x00,0x00,0x00
+                },
+                dc_values:    {
+                    0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b
+                },
+                num_ac_codes: {
+                    0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,
+                    0x00,0x01,0x02,0x77
+                },
+                ac_values:    {
+                    0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,
+                    0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,
+                    0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,
+                    0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,
+                    0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,
+                    0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,
+                    0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,
+                    0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,
+                    0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,
+                    0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,
+                    0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,
+                    0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,
+                    0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,
+                    0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,
+                },
+                pad: { 0x00, 0x00 }
+            }
+        }
+    };
+
+    static const IQMatrix defaultIQMatrix = { /* Quality 100 */
+        load_quantiser_table: { 0x1,0x1,0x0,0x0 },
+        quantiser_table: {
+            {
+                0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+                0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+                0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+                0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+                0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+                0x01,0x01,0x01,0x01,
+            },
+            {
+                0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+                0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+                0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+                0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+                0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
+                0x01,0x01,0x01,0x01,
+            },
+        },
+    };
+
+    static const PictureParameter defaultPictureParameter = {
+        picture_width:                          10,
+        picture_height:                         10,
+        components: {
+            {
+                component_id:                   1,
+                h_sampling_factor:              1,
+                v_sampling_factor:              1,
+                quantiser_table_selector:       0,
+            },
+            {
+                component_id:                   2,
+                h_sampling_factor:              1,
+                v_sampling_factor:              1,
+                quantiser_table_selector:       1,
+            },
+            {
+                component_id:                   3,
+                h_sampling_factor:              1,
+                v_sampling_factor:              1,
+                quantiser_table_selector:       1,
+            },
+        },
+        num_components:                         3,
+    };
+
+    static const SliceParameter defaultSliceParameter = {
+        slice_data_size:                        0,
+        slice_data_offset:                      0,
+        slice_data_flag:                        VA_SLICE_DATA_FLAG_ALL,
+        slice_horizontal_position:              0,
+        slice_vertical_position:                0,
+
+        components: {
+            {
+                component_selector:             1,
+                dc_table_selector:              0,
+                ac_table_selector:              0,
+            },
+            {
+                component_selector:             2,
+                dc_table_selector:              1,
+                ac_table_selector:              1,
+            },
+            {
+                component_selector:             3,
+                dc_table_selector:              1,
+                ac_table_selector:              1,
+            },
+        },
+        num_components:                         3,
+        restart_interval:                       0,
+        num_mcus:                               4,
+    };
+
+    typedef std::vector<uint8_t> ByteData;
+
+    class PictureData
+    {
+    public:
+        typedef std::shared_ptr<PictureData> Shared;
+        typedef std::shared_ptr<const PictureData> SharedConst;
+
+        template<const unsigned W, const unsigned H>
+        static SharedConst make(
+            const unsigned fourcc,
+            const ByteData& slice,
+            const SliceParameter& sparam = defaultSliceParameter,
+            const PictureParameter& pparam = defaultPictureParameter,
+            const HuffmanTable& huffman = defaultHuffmanTable,
+            const IQMatrix& iqmatrix = defaultIQMatrix)
+        {
+            Shared pd(
+                new PictureData {
+                    slice: slice,
+                    sparam: sparam,
+                    pparam: pparam,
+                    huffman: huffman,
+                    iqmatrix: iqmatrix,
+                    format: 0,
+                    fourcc: fourcc,
+                }
+            );
+
+            pd->sparam.slice_data_size = slice.size();
+            pd->pparam.picture_width = W;
+            pd->pparam.picture_height = H;
+
+            switch(fourcc)
+            {
+            case VA_FOURCC_IMC3:
+                pd->format = VA_RT_FORMAT_YUV420;
+                pd->pparam.components[0].h_sampling_factor = 2;
+                pd->pparam.components[0].v_sampling_factor = 2;
+                break;
+            case VA_FOURCC_422H:
+                pd->format = VA_RT_FORMAT_YUV422;
+                pd->pparam.components[0].h_sampling_factor = 2;
+                pd->pparam.components[0].v_sampling_factor = 1;
+                break;
+            case VA_FOURCC_422V:
+                pd->format = VA_RT_FORMAT_YUV422;
+                pd->pparam.components[0].h_sampling_factor = 1;
+                pd->pparam.components[0].v_sampling_factor = 2;
+                break;
+            case VA_FOURCC_411P:
+                pd->format = VA_RT_FORMAT_YUV411;
+                pd->pparam.components[0].h_sampling_factor = 4;
+                pd->pparam.components[0].v_sampling_factor = 1;
+                break;
+            case VA_FOURCC_444P:
+                pd->format = VA_RT_FORMAT_YUV444;
+                pd->pparam.components[0].h_sampling_factor = 1;
+                pd->pparam.components[0].v_sampling_factor = 1;
+            default:
+                break;
+            }
+
+            /* Calculate num_mcus */
+            int hfactor = pd->pparam.components[0].h_sampling_factor << 3;
+            int vfactor = pd->pparam.components[0].v_sampling_factor << 3;
+            int wmcu = (W + hfactor - 1) / hfactor;
+            int hmcu = (H + vfactor - 1) / vfactor;
+            pd->sparam.num_mcus = wmcu * hmcu;
+
+            return pd;
+        }
+
+        const ByteData          slice;
+        SliceParameter          sparam;
+        PictureParameter        pparam;
+        HuffmanTable            huffman;
+        IQMatrix                iqmatrix;
+        unsigned                format;
+        unsigned                fourcc;
+    };
+
+    class TestPattern
+    {
+    public:
+        typedef std::shared_ptr<TestPattern> Shared;
+        typedef std::shared_ptr<const TestPattern> SharedConst;
+
+        virtual const ByteData& decoded() const = 0;
+        virtual PictureData::SharedConst encoded(unsigned) const = 0;
+
+        virtual void repr(std::ostream&) const = 0;
+
+        friend std::ostream& operator <<(std::ostream& os, const TestPattern& t)
+        {
+            t.repr(os);
+            return os;
+        }
+    };
+
+    template <const unsigned N>
+    class TestPatternData
+        : public TestPattern
+    {
+    private:
+        typedef std::map<const unsigned, PictureData::SharedConst> EncodedMap;
+        typedef std::map<const unsigned, const ByteData> ByteDataMap;
+
+    public:
+        const ByteData& decoded() const { return getDecoded(); }
+
+        PictureData::SharedConst encoded(const unsigned fourcc) const
+        {
+            const EncodedMap& em = getEncodedMap();
+            const EncodedMap::const_iterator match(em.find(fourcc));
+            if (match == em.end())
+                return PictureData::SharedConst();
+            return match->second;
+        }
+
+        void repr(std::ostream& os) const { os << N; }
+
+        template <const unsigned W, const unsigned H>
+        static bool initialize(ByteData d, const ByteDataMap& e)
+        {
+            getDecoded().swap(d);
+
+            EncodedMap& em = getEncodedMap();
+            bool result = true;
+            for (auto const &b : e) {
+                auto pd(PictureData::make<W, H>(b.first, b.second));
+                auto pair = std::make_pair(b.first, pd);
+                result &= em.insert(pair).second;
+            }
+            return result;
+        }
+
+    private:
+        static ByteData& getDecoded()
+        {
+            static ByteData d;
+            return d;
+        }
+
+        static EncodedMap& getEncodedMap()
+        {
+            static EncodedMap em;
+            return em;
+        }
+
+        static const bool m_valid;
+    };
+
+    static const ByteData generateSolid(
+        const std::array<uint8_t, 3>& yuv, const std::array<size_t, 2>& dim)
+    {
+        size_t count(dim[0] * dim[1]);
+        ByteData data(count, yuv[0]);
+        data.insert(data.end(), count, yuv[1]);
+        data.insert(data.end(), count, yuv[2]);
+        return data;
+    }
+
+    /**
+     * Test Pattern 1
+     *
+     * Solid Black 10x10
+     *
+     */
+    template<> const bool TestPatternData<1>::m_valid =
+        TestPatternData<1>::initialize<10, 10>(
+
+            generateSolid({0x00, 0x80, 0x80}, {10, 10}),
+
+            {{VA_FOURCC_IMC3, {
+                0xff,0x00,0x3f,0xfa,0x28,0xa2,0x80,0x3f,0xff,
+            }},
+            {VA_FOURCC_422H, {
+                0xff,0x00,0x3f,0xfa,0x28,0x00,0xa2,0x80,0x3f,0xff,
+            }},
+            {VA_FOURCC_422V, {
+                0xff,0x00,0x3f,0xfa,0x28,0x00,0xa2,0x80,0x3f,0xff,
+            }},
+            {VA_FOURCC_411P, {
+                0xff,0x00,0x3f,0xfa,0x28,0xa2,0x80,0x0a,0x28,0xa2,0x80,0x3f,
+                0xff,
+            }},
+            {VA_FOURCC_444P, {
+              0xff,0x00,0x3f,0xfa,0x00,0x28,0x00,0xa0,0x02,0x80,0x3f,0xff,
+            }}}
+        );
+
+
+    /**
+     * Test Pattern 2
+     *
+     * R = red
+     * G = green
+     * B = blue
+     * W = white
+     * K = black
+     * -------------------
+     * R R G G B B W W K K
+     * R R G G B B W W K K
+     * K K R R G G B B W W
+     * K K R R G G B B W W
+     * W W K K R R G G B B
+     * W W K K R R G G B B
+     * B B W W K K R R G G
+     * B B W W K K R R G G
+     * G G B B W W K K R R
+     * G G B B W W K K R R
+     * -------------------
+     * 
+     */
+
+    template<> const bool TestPatternData<2>::m_valid =
+        TestPatternData<2>::initialize<10, 10>({
+            // Pixel Y Component
+            0x4c,0x4c,0x95,0x95,0x1d,0x1d,0xff,0xff,0x00,0x00,
+            0x4c,0x4c,0x95,0x95,0x1d,0x1d,0xff,0xff,0x00,0x00,
+            0x00,0x00,0x4c,0x4c,0x95,0x95,0x1d,0x1d,0xff,0xff,
+            0x00,0x00,0x4c,0x4c,0x95,0x95,0x1d,0x1d,0xff,0xff,
+            0xff,0xff,0x00,0x00,0x4c,0x4c,0x95,0x95,0x1d,0x1d,
+            0xff,0xff,0x00,0x00,0x4c,0x4c,0x95,0x95,0x1d,0x1d,
+            0x1d,0x1d,0xff,0xff,0x00,0x00,0x4c,0x4c,0x95,0x95,
+            0x1d,0x1d,0xff,0xff,0x00,0x00,0x4c,0x4c,0x95,0x95,
+            0x95,0x95,0x1d,0x1d,0xff,0xff,0x00,0x00,0x4c,0x4c,
+            0x95,0x95,0x1d,0x1d,0xff,0xff,0x00,0x00,0x4c,0x4c,
+
+            // Pixel U Component
+            0x54,0x54,0x2b,0x2b,0xff,0xff,0x80,0x80,0x80,0x80,
+            0x54,0x54,0x2b,0x2b,0xff,0xff,0x80,0x80,0x80,0x80,
+            0x80,0x80,0x54,0x54,0x2b,0x2b,0xff,0xff,0x80,0x80,
+            0x80,0x80,0x54,0x54,0x2b,0x2b,0xff,0xff,0x80,0x80,
+            0x80,0x80,0x80,0x80,0x54,0x54,0x2b,0x2b,0xff,0xff,
+            0x80,0x80,0x80,0x80,0x54,0x54,0x2b,0x2b,0xff,0xff,
+            0xff,0xff,0x80,0x80,0x80,0x80,0x54,0x54,0x2b,0x2b,
+            0xff,0xff,0x80,0x80,0x80,0x80,0x54,0x54,0x2b,0x2b,
+            0x2b,0x2b,0xff,0xff,0x80,0x80,0x80,0x80,0x54,0x54,
+            0x2b,0x2b,0xff,0xff,0x80,0x80,0x80,0x80,0x54,0x54,
+
+            // Pixel V Component
+            0xff,0xff,0x15,0x15,0x6b,0x6b,0x80,0x80,0x80,0x80,
+            0xff,0xff,0x15,0x15,0x6b,0x6b,0x80,0x80,0x80,0x80,
+            0x80,0x80,0xff,0xff,0x15,0x15,0x6b,0x6b,0x80,0x80,
+            0x80,0x80,0xff,0xff,0x15,0x15,0x6b,0x6b,0x80,0x80,
+            0x80,0x80,0x80,0x80,0xff,0xff,0x15,0x15,0x6b,0x6b,
+            0x80,0x80,0x80,0x80,0xff,0xff,0x15,0x15,0x6b,0x6b,
+            0x6b,0x6b,0x80,0x80,0x80,0x80,0xff,0xff,0x15,0x15,
+            0x6b,0x6b,0x80,0x80,0x80,0x80,0xff,0xff,0x15,0x15,
+            0x15,0x15,0x6b,0x6b,0x80,0x80,0x80,0x80,0xff,0xff,
+            0x15,0x15,0x6b,0x6b,0x80,0x80,0x80,0x80,0xff,0xff,
+        },{
+            {VA_FOURCC_IMC3, {
+                0xf8,0x8b,0xc3,0x7e,0x24,0xf1,0xf7,0xec,0x71,0xe3,0xef,0xd9,
+                0x8f,0xc6,0x5e,0x0d,0xfd,0xa7,0x7f,0xe1,0x27,0xf0,0x3f,0x89,
+                0xff,0x00,0xe1,0x74,0xff,0x00,0xc3,0xae,0x3f,0xe0,0xa8,0xff,
+                0x00,0xf0,0xa5,0xb4,0x5d,0x17,0xfe,0x13,0x5f,0xec,0x5d,0x16,
+                0x7d,0x2b,0xf6,0xda,0xff,0x00,0x8c,0x25,0xd5,0x60,0xf1,0x46,
+                0xaf,0xe1,0xbf,0xf8,0x46,0xf5,0x7f,0x14,0x5d,0x7e,0xcf,0x1f,
+                0xf1,0x90,0xf6,0xb6,0xff,0x00,0xdb,0x1f,0x67,0xff,0x00,0x85,
+                0xb5,0xf0,0x93,0xcd,0xb5,0x96,0x39,0x2d,0xfd,0x07,0xfe,0x19,
+                0xbb,0xf6,0x07,0xff,0x00,0xa5,0x63,0x7f,0xf3,0xb4,0x5f,0x19,
+                0xff,0x00,0xf9,0x7b,0x47,0xed,0x23,0xff,0x00,0x26,0x0f,0xff,
+                0x00,0x07,0x39,0x7f,0xde,0x17,0x7f,0xf5,0x73,0xe8,0x55,0xf9,
+                0xf7,0x5f,0x1f,0xe2,0x3f,0x8a,0xf8,0xff,0x00,0xa3,0x8e,0x03,
+                0xc3,0x8c,0x27,0x03,0x70,0x0f,0x86,0x1e,0x22,0x78,0x59,0xe2,
+                0xaf,0x86,0x1e,0x19,0x78,0xeb,0xc0,0x1e,0x1b,0xf8,0xfd,0x85,
+                0xf1,0x3f,0x89,0xf1,0x1e,0x04,0xe1,0xfc,0x7c,0xf0,0xc3,0x81,
+                0x7c,0x7c,0xce,0xf8,0x1f,0x82,0x38,0xcb,0xc1,0x4f,0x16,0x3e,
+                0x8f,0x39,0x9e,0x61,0x92,0x54,0xcc,0xfc,0x56,0x6f,0x88,0xb2,
+                0xcc,0xdf,0x03,0x2e,0x03,0xc5,0xf1,0xe6,0x5d,0xc5,0x1e,0x29,
+                0x78,0x7b,0xe1,0xdf,0x85,0x39,0xef,0x8b,0x3e,0x26,0xe5,0xfc,
+                0x45,0xfd,0x1d,0xf4,0x11,0xfa,0x20,0xf1,0xcf,0xed,0x4a,0xe0,
+                0x6c,0xc3,0xc7,0x0f,0x0f,0xbc,0x67,0xe1,0xff,0x00,0xa2,0xef,
+                0x1c,0xe6,0x1c,0x3f,0xc0,0x5c,0x75,0xe2,0xed,0x2c,0xf3,0xc2,
+                0x5c,0x5f,0x8f,0x7c,0x35,0xe2,0x7f,0x12,0xf8,0xa7,0x83,0xcf,
+                0xb3,0x5c,0x3f,0x1b,0xe1,0xf2,0x6c,0x2f,0x8a,0x3e,0x09,0x62,
+                0x38,0x3b,0xc5,0x0c,0x46,0x23,0x22,0xce,0x5f,0x8c,0x1c,0x63,
+                0x86,0xcc,0xf3,0xac,0xa7,0xc7,0x0c,0xdb,0x15,0x90,0x78,0x89,
+                0x9d,0xf0,0x7f,0x0f,0x78,0xcd,0x5f,0xc6,0x6f,0x13,0xfc,0x74,
+                0xff,
+            }},
+            {VA_FOURCC_422H, {
+                0xf8,0x8b,0xc3,0x7e,0x24,0xf1,0xf7,0xec,0x71,0xe3,0xef,0xd9,
+                0x8f,0xc6,0x5e,0x0d,0xfd,0xa7,0x7f,0xe1,0x27,0xf0,0x3f,0x89,
+                0xff,0x00,0xe1,0x74,0xff,0x00,0xc3,0xae,0x3f,0xe0,0xa8,0xff,
+                0x00,0xf0,0xa5,0xb4,0x5d,0x17,0xfe,0x13,0x5f,0xec,0x5d,0x16,
+                0x7d,0x2b,0xf6,0xda,0xff,0x00,0x8c,0x25,0xd5,0x60,0xf1,0x46,
+                0xaf,0xe1,0xbf,0xf8,0x46,0xf5,0x7f,0x14,0x5d,0x7e,0xcf,0x1f,
+                0xf1,0x90,0xf6,0xb6,0xff,0x00,0xdb,0x1f,0x67,0xff,0x00,0x85,
+                0xb5,0xf0,0x93,0xcd,0xb5,0x96,0x39,0x2d,0xfd,0x07,0xfe,0x19,
+                0xbb,0xf6,0x07,0xff,0x00,0xa5,0x63,0x7f,0xf3,0xb4,0x5f,0x19,
+                0xff,0x00,0xf9,0x7b,0x5f,0x41,0xc2,0x19,0xf7,0xd1,0xb7,0xc1,
+                0x0c,0x57,0x17,0xfd,0x17,0x7e,0x9d,0x3f,0x48,0x4f,0xf8,0x94,
+                0xdc,0x77,0x80,0x7c,0x6b,0xc6,0x78,0x0f,0x06,0x73,0xff,0x00,
+                0xf8,0x84,0xfc,0x7b,0xe3,0xbf,0xfa,0xcf,0xc1,0xbc,0x6b,0xc6,
+                0xbc,0x4f,0xc4,0xbc,0x7f,0xe0,0xe7,0xf6,0x57,0x83,0xd4,0x73,
+                0x6a,0x39,0x2f,0xfc,0x41,0x1f,0x1b,0x9f,0x89,0x5c,0x61,0xff,
+                0x00,0x11,0x0b,0x8a,0xb8,0x83,0x39,0xcd,0x7c,0x4a,0xff,0x00,
+                0x88,0xff,0x00,0xfe,0xaf,0xe4,0xb3,0xc2,0x70,0x8f,0x85,0x59,
+                0x05,0x03,0xf1,0xef,0xa4,0xf7,0x8d,0xfc,0x07,0xe0,0x07,0x13,
+                0x61,0x7c,0x6f,0xe3,0x3c,0xcf,0xfb,0x3b,0xc3,0xaf,0xa5,0xbe,
+                0x6d,0xc5,0x3e,0x24,0xe0,0x31,0xbf,0x52,0xce,0x71,0x7f,0x50,
+                0xfa,0x49,0xe0,0x31,0x19,0x5e,0x3f,0xe9,0x65,0xc3,0x7f,0x56,
+                0xca,0xb2,0x9c,0xe7,0x3d,0xc5,0x7f,0xad,0xbc,0x51,0xc6,0x5c,
+                0x0b,0xf4,0xaa,0xfe,0xd8,0xad,0x94,0xf0,0xdf,0x01,0x64,0x3f,
+                0xf1,0x35,0x5f,0xf1,0x03,0x7c,0x35,0xc0,0x4f,0x2f,0xf0,0x37,
+                0x38,0x86,0x14,0xfd,0xa4,0x7f,0xe4,0xc1,0xff,0x00,0xe0,0xe7,
+                0x2f,0xfb,0xc2,0xef,0xfe,0xae,0x7d,0x0a,0xbf,0x3e,0xeb,0xf9,
+                0x7b,0xe9,0x7b,0xff,0x00,0x24,0xb7,0xd1,0x0b,0xfe,0xd0,0xb3,
+                0xe8,0x63,0xff,0x00,0xb0,0x57,0xf4,0x65,0x3f,0xdd,0xdf,0xf4,
+                0x61,0x7f,0xe5,0x1a,0x38,0xab,0xfe,0xcd,0x4f,0xd1,0x73,0xff,
+                0x00,0x54,0x1e,0x27,0x9f,0xff,
+            }},
+            {VA_FOURCC_422V, {
+                0xf8,0x8b,0xc3,0x7e,0x24,0xf1,0xf7,0xec,0x71,0xe3,0xef,0xd9,
+                0x8f,0xc6,0x5e,0x0d,0xfd,0xa7,0x7f,0xe1,0x27,0xf0,0x3f,0x89,
+                0xff,0x00,0xe1,0x74,0xff,0x00,0xc3,0xae,0x3f,0xe0,0xa8,0xff,
+                0x00,0xf0,0xa5,0xb4,0x5d,0x17,0xfe,0x13,0x5f,0xec,0x5d,0x16,
+                0x7d,0x2b,0xf6,0xda,0xff,0x00,0x8c,0x25,0xd5,0x60,0xf1,0x46,
+                0xaf,0xe1,0xbf,0xf8,0x46,0xf5,0x7f,0x14,0x5d,0x7e,0xcf,0x1f,
+                0xf1,0x90,0xf6,0xb6,0xff,0x00,0xdb,0x1f,0x67,0xff,0x00,0x85,
+                0xb5,0xf0,0x93,0xcd,0xb5,0x96,0x39,0x2d,0xfd,0x07,0xf6,0x91,
+                0xff,0x00,0x93,0x07,0xff,0x00,0x83,0x9c,0xbf,0xef,0x0b,0xbf,
+                0xfa,0xb9,0xf4,0x2a,0xfa,0x0c,0x87,0x81,0x70,0xb9,0x4f,0xd1,
+                0xb7,0xe8,0xf7,0xf4,0xd8,0xfa,0x2e,0x71,0x4f,0x1a,0xfd,0x1c,
+                0xf0,0x1f,0x4c,0xef,0xf8,0x8b,0x1f,0xdb,0xfe,0x0b,0xe3,0xeb,
+                0xf0,0x57,0x8c,0x5c,0x1a,0xff,0x00,0xe2,0x5d,0x78,0xf6,0xb7,
+                0x84,0xb9,0x57,0xfc,0x46,0x3e,0x1c,0xe2,0x5e,0x04,0xc8,0xfc,
+                0x11,0xfa,0x44,0x5a,0xb5,0x4e,0x20,0xe2,0xbf,0x0f,0x7f,0xd7,
+                0x0f,0x00,0xb2,0x5f,0xf8,0x84,0x99,0xae,0x79,0x0c,0x7f,0x0f,
+                0xff,0x00,0x69,0x71,0x76,0x59,0x43,0x8d,0x2b,0x7e,0x3d,0xe0,
+                0x87,0x8f,0xfc,0x33,0xf4,0xdc,0xe0,0x3c,0xb3,0xc6,0xbf,0x1b,
+                0xfc,0x3a,0xcd,0xb0,0xbe,0x22,0xf1,0x1f,0xd7,0x7e,0xbb,0xe3,
+                0x37,0x86,0xdc,0x79,0x87,0xe0,0xef,0xa4,0x9c,0xbf,0xb1,0xf3,
+                0x9c,0xdb,0x84,0xf0,0xdf,0xeb,0x27,0x8b,0x58,0xfe,0x09,0xe2,
+                0x6e,0x17,0xf1,0xc6,0xd9,0x17,0x09,0xe5,0x3c,0x2b,0x93,0xff,
+                0x00,0xc4,0xd5,0x78,0x4f,0xf4,0x84,0xff,0x00,0x88,0x67,0xc0,
+                0x52,0xc7,0xf0,0xd7,0x81,0xbf,0xf1,0x09,0xf3,0x0c,0x54,0x38,
+                0x97,0x0e,0x7f,0xc3,0x37,0x7e,0xc0,0xff,0x00,0xf4,0xac,0x6f,
+                0xfe,0x76,0x8b,0xe3,0x3f,0xff,0x00,0x2f,0x6b,0xf3,0xee,0xbf,
+                0x97,0xbf,0xe2,0x7a,0x78,0xa7,0xfe,0x91,0x6b,0xe8,0x59,0xff,
+                0x00,0x86,0x4f,0xa6,0x9f,0xff,0x00,0x57,0x59,0xfe,0xee,0xff,
+                0x00,0xc5,0x01,0x7e,0x92,0xff,0x00,0xf4,0xb1,0x3f,0x0a,0x7f,
+                0xf1,0x83,0xf3,0xff,0x00,0xfe,0xad,0x73,0xff,
+            }},
+            {VA_FOURCC_411P, {
+                0xf8,0x8b,0xc3,0x7e,0x24,0xf1,0xf7,0xec,0x71,0xe3,0xef,0xd9,
+                0x8b,0xc6,0x5e,0x0d,0xfd,0xa7,0x7f,0xe1,0x27,0xf0,0x3f,0x89,
+                0xbf,0xe1,0x74,0xff,0x00,0xc3,0xae,0x3f,0xe0,0xa8,0xff,0x00,
+                0xf0,0xa5,0xb4,0x5d,0x17,0xfe,0x13,0x6f,0xec,0x5d,0x16,0xe3,
+                0x4a,0xfd,0xb6,0xbf,0xe3,0x09,0x75,0x5b,0x7f,0x14,0x6a,0xfe,
+                0x1c,0xff,0x00,0x84,0x6f,0x57,0xf1,0x45,0xd7,0xec,0xf1,0xff,
+                0x00,0x19,0x0f,0x6b,0x6f,0xfd,0xb1,0xf6,0x7f,0xf8,0x5b,0x5f,
+                0x09,0x7c,0xdb,0x59,0xa3,0x92,0xdf,0xd0,0x7f,0xe1,0x9b,0xbf,
+                0x60,0x7f,0xfa,0x56,0x37,0xff,0x00,0x3b,0x45,0xf1,0x9f,0xff,
+                0x00,0x97,0xb4,0x51,0x5f,0x79,0xc3,0xbc,0x6f,0xfb,0x3c,0xf8,
+                0x5b,0x25,0xcb,0xf8,0x23,0xe9,0x37,0xf4,0xf2,0xff,0x00,0x89,
+                0x73,0xf1,0xaf,0xc3,0x8a,0x52,0xf0,0xb7,0x8b,0x7c,0x1b,0xff,
+                0x00,0x89,0x5e,0xf1,0xbf,0xc5,0xef,0xf5,0x47,0x03,0xe1,0x75,
+                0x5a,0x9e,0x1e,0xf0,0x5d,0x5f,0xf8,0x88,0x7e,0x1f,0xe1,0x31,
+                0x1c,0x27,0x9f,0xff,0x00,0xac,0xdc,0x07,0xc3,0x5c,0x31,0xc5,
+                0xfc,0x99,0x6e,0x2f,0x1d,0x5b,0x25,0xfe,0xdf,0xfe,0xc0,0xcd,
+                0x73,0x0c,0xc3,0x39,0xca,0xb3,0x0c,0x6d,0x7f,0xe4,0xff,0x00,
+                0x1a,0x3e,0x99,0x9e,0x09,0x78,0x1b,0xe2,0x87,0x17,0xf8,0x79,
+                0xc7,0x9c,0x47,0xfd,0x91,0x9f,0xd0,0xcc,0x28,0x71,0x85,0x1c,
+                0x9b,0xfb,0x23,0x8b,0x73,0x0f,0xec,0x5e,0x18,0xf1,0x43,0x2f,
+                0xc1,0xf8,0xa1,0xc0,0xb9,0x27,0xf6,0x8e,0x4d,0xc2,0xd9,0xb6,
+                0x0b,0x32,0xfe,0xc7,0xe0,0x8e,0x31,0xe1,0xdc,0xb7,0xfb,0x4a,
+                0x78,0xd7,0x98,0x66,0x1f,0x55,0xfa,0xe6,0x71,0x86,0xcb,0xf3,
+                0x7a,0xf8,0xec,0xbf,0x0a,0x7e,0xd2,0x3f,0xf2,0x60,0xff,0x00,
+                0xf0,0x73,0x97,0xfd,0xe1,0x77,0xff,0x00,0x57,0x3e,0x85,0x5f,
+                0x9f,0x74,0x51,0x5f,0xe6,0xbf,0xd2,0x37,0xfe,0x4f,0x67,0x88,
+                0x3f,0xf6,0x36,0xc3,0x7f,0xea,0xab,0x2f,0x3f,0xed,0xab,0xf6,
+                0x30,0xff,0x00,0xca,0xb0,0x7e,0x88,0x3f,0xf6,0x6f,0xf3,0xaf,
+                0xfd,0x6f,0xf8,0xbc,0xff,
+            }},
+            {VA_FOURCC_444P, {
+                0xf8,0x8b,0xc3,0x7e,0x24,0xf1,0xf7,0xec,0x71,0xe3,0xef,0xd9,
+                0x8f,0xc6,0x5e,0x0d,0xfd,0xa7,0x7f,0xe1,0x27,0xf0,0x3f,0x89,
+                0xff,0x00,0xe1,0x74,0xff,0x00,0xc3,0xae,0x3f,0xe0,0xa8,0xff,
+                0x00,0xf0,0xa5,0xb4,0x5d,0x17,0xfe,0x13,0x5f,0xec,0x5d,0x16,
+                0x7d,0x2b,0xf6,0xda,0xff,0x00,0x8c,0x25,0xd5,0x60,0xf1,0x46,
+                0xaf,0xe1,0xbf,0xf8,0x46,0xf5,0x7f,0x14,0x5d,0x7e,0xcf,0x1f,
+                0xf1,0x90,0xf6,0xb6,0xff,0x00,0xdb,0x1f,0x67,0xff,0x00,0x85,
+                0xb5,0xf0,0x93,0xcd,0xb5,0x96,0x39,0x2d,0xfc,0x9c,0xd3,0x2b,
+                0xf1,0x8b,0xf6,0x60,0x78,0xc5,0xe2,0xc6,0x47,0x9e,0x78,0x4f,
+                0xfe,0xbe,0xf8,0x47,0xc7,0xbf,0xea,0x27,0xfc,0x4d,0xbf,0xd1,
+                0x23,0xfd,0x7b,0xe1,0x7e,0x16,0xff,0x00,0x88,0xa3,0xfe,0xab,
+                0x70,0xbd,0x3c,0x67,0x80,0x9f,0xf1,0xbe,0xf0,0x75,0x38,0xff,
+                0x00,0x89,0xb8,0x27,0xfd,0x49,0xe2,0x6e,0x3f,0xa3,0xe2,0x67,
+                0xfc,0x6b,0x3a,0xd8,0x3f,0xf5,0x93,0xea,0x7f,0xea,0x67,0x19,
+                0xfd,0x63,0x2f,0xc4,0x4a,0x38,0x2f,0xbe,0xf1,0x2b,0xc3,0x5e,
+                0x28,0xfa,0x6d,0x71,0x46,0x37,0xe9,0x11,0xf4,0x77,0xc1,0x7f,
+                0x6c,0xfe,0xd0,0xfc,0xe7,0xea,0xdf,0xf1,0x10,0xbc,0x3d,0xfa,
+                0xce,0x5d,0x97,0x7f,0xc5,0x46,0xff,0x00,0xb3,0xb2,0xfc,0x07,
+                0x03,0xf0,0x9f,0xfc,0x65,0x9c,0x71,0x8f,0xe1,0x4f,0x03,0xfe,
+                0x88,0x5f,0xf1,0x28,0x5e,0x07,0x70,0xa6,0x77,0x9d,0xff,0x00,
+                0xc2,0x26,0x49,0x4b,0xfe,0x23,0xf7,0xb2,0xfe,0xcd,0xcc,0xb9,
+                0xf8,0xbe,0x78,0x4c,0x5e,0x27,0xd0,0x7f,0xe1,0x9b,0xbf,0x60,
+                0x7f,0xfa,0x56,0x37,0xff,0x00,0x3b,0x45,0xf1,0x9f,0xff,0x00,
+                0x97,0xb5,0xfb,0x67,0xfc,0x45,0x1f,0xd8,0xf3,0xff,0x00,0x4b,
+                0x60,0xff,0x00,0xcf,0x14,0xfa,0x51,0x7f,0xf3,0xbc,0xff,0x00,
+                0x30,0x7f,0xe2,0xa5,0x3f,0x46,0x0f,0xfa,0x2c,0xff,0x00,0xf3,
+                0x5d,0xf1,0x0b,0xff,0x00,0xa0,0x40,0xfd,0xa4,0x7f,0xe4,0xc1,
+                0xff,0x00,0xe0,0xe7,0x2f,0xfb,0xc2,0xef,0xfe,0xae,0x7d,0x0a,
+                0x8f,0x0b,0xbf,0xe5,0x4f,0x3f,0xb2,0x7f,0xfe,0xf7,0xaf,0xff,
+                0x00,0x62,0x8b,0x30,0x0f,0xd9,0xad,0xff,0x00,0x28,0xc1,0xc1,
+                0x9f,0xf7,0x71,0x7f,0xeb,0xc2,0xe3,0xb3,0xf3,0xee,0xbf,0xc5,
+                0x13,0xff,0x00,0x4f,0x83,0xff,
+            }},
+        });
+
+    /**
+     * Test Pattern 3
+     *
+     * R = red
+     * G = green
+     * B = blue
+     * W = white
+     * C = cyan
+     * M = magenta
+     * Y = yellow
+     * K = black
+     * -------------------
+     * K R B Y G C M K K W
+     * R K R B Y G C M W K
+     * B R K R B Y G C M K
+     * Y B R K R B Y G C M
+     * G Y B R K R B Y G C
+     * C G Y B R K R B Y G
+     * M C G Y B R K R B Y
+     * K M C G Y B R K R K
+     * K W M C G Y B R K R
+     * W K K M C G Y B R K
+     * -------------------
+     *
+     */
+    template<> const bool TestPatternData<3>::m_valid =
+        TestPatternData<3>::initialize<10, 10>({
+            0x00,0x4c,0x1d,0xe2,0x96,0xb3,0x69,0x00,0x00,0xfe,
+            0x4c,0x00,0x4c,0x1d,0xe2,0x96,0xb3,0x69,0xff,0x00,
+            0x1d,0x4c,0x00,0x4c,0x1d,0xe3,0x96,0xb3,0x69,0x00,
+            0xe2,0x1d,0x4c,0x00,0x4c,0x1d,0xe2,0x96,0xb3,0x68,
+            0x96,0xe2,0x1d,0x4c,0x00,0x4c,0x1d,0xe2,0x96,0xb3,
+            0xb3,0x96,0xe3,0x1d,0x4c,0x00,0x4c,0x1d,0xe2,0x96,
+            0x69,0xb3,0x96,0xe2,0x1d,0x4c,0x00,0x4c,0x1d,0xe2,
+            0x00,0x69,0xb3,0x96,0xe2,0x1d,0x4c,0x00,0x4c,0x1d,
+            0x00,0xff,0x69,0xb3,0x96,0xe2,0x1d,0x4c,0x00,0x4c,
+            0xff,0x00,0x00,0x68,0xb3,0x96,0xe2,0x1d,0x4c,0x00,
+
+            0x80,0x55,0xff,0x00,0x2c,0xab,0xd4,0x80,0x80,0x80,
+            0x55,0x80,0x54,0xff,0x00,0x2c,0xab,0xd4,0x80,0x80,
+            0xff,0x55,0x80,0x55,0xff,0x00,0x2c,0xab,0xd4,0x80,
+            0x00,0xff,0x55,0x80,0x55,0xff,0x00,0x2c,0xab,0xd4,
+            0x2c,0x00,0xff,0x55,0x80,0x55,0xff,0x00,0x2c,0xab,
+            0xab,0x2c,0x00,0xff,0x55,0x80,0x55,0xff,0x00,0x2c,
+            0xd4,0xab,0x2c,0x00,0xff,0x54,0x80,0x55,0xff,0x00,
+            0x80,0xd4,0xab,0x2c,0x00,0xff,0x55,0x80,0x55,0xff,
+            0x80,0x80,0xd4,0xab,0x2c,0x00,0xff,0x55,0x81,0x54,
+            0x80,0x80,0x80,0xd4,0xab,0x2c,0x00,0xff,0x55,0x80,
+
+            0x80,0xff,0x6b,0x95,0x15,0x00,0xeb,0x80,0x80,0x80,
+            0xff,0x80,0xff,0x6b,0x95,0x15,0x00,0xeb,0x80,0x80,
+            0x6b,0xff,0x80,0xff,0x6b,0x95,0x15,0x00,0xeb,0x80,
+            0x95,0x6b,0xff,0x80,0xff,0x6b,0x95,0x15,0x00,0xeb,
+            0x15,0x95,0x6b,0xff,0x80,0xff,0x6b,0x95,0x16,0x00,
+            0x00,0x15,0x95,0x6b,0xff,0x80,0xff,0x6b,0x95,0x15,
+            0xeb,0x00,0x15,0x95,0x6b,0xff,0x80,0xff,0x6b,0x95,
+            0x80,0xeb,0x00,0x15,0x95,0x6b,0xff,0x80,0xff,0x6b,
+            0x80,0x80,0xeb,0x00,0x15,0x95,0x6b,0xff,0x7f,0xff,
+            0x80,0x80,0x80,0xeb,0x00,0x14,0x95,0x6b,0xff,0x80,
+        },{
+            {VA_FOURCC_IMC3, {
+                0xf8,0x6f,0xf7,0x5f,0xb0,0x2c,0x5f,0xf2,0xc3,0xf6,0xa8,0xff,
+                0x00,0x82,0x4e,0x7e,0xd5,0x10,0x7f,0xd4,0x03,0xc4,0x96,0x9e,
+                0x15,0xb4,0xf1,0x26,0x81,0xff,0x00,0x72,0xe7,0x83,0xac,0x3c,
+                0x5f,0x61,0xe0,0xef,0x0e,0x7f,0xd4,0x91,0xf0,0xe7,0xe3,0x27,
+                0xc3,0x9f,0x04,0x7f,0xcd,0x2b,0x83,0xe1,0x5f,0xfc,0x6b,0x77,
+                0xe9,0xdb,0xdf,0x87,0x16,0xba,0xed,0xed,0xde,0xb7,0xf0,0xeb,
+                0xfe,0x0e,0x06,0xfd,0xa3,0x7e,0x0b,0xfc,0x3e,0xd6,0x2e,0xae,
+                0x35,0x5f,0x02,0xfc,0x1d,0xf8,0x73,0xff,0x00,0x05,0x0e,0xf8,
+                0x3d,0xf0,0x03,0xe1,0xef,0xc2,0x7f,0x06,0xea,0x12,0xbd,0xdf,
+                0x86,0x3e,0x1a,0x78,0x13,0xe0,0x3c,0x9f,0x18,0xbe,0x10,0x49,
+                0xf0,0x4f,0xc1,0xbe,0x04,0xd1,0x26,0xb1,0xf0,0xb7,0x86,0x3e,
+                0x11,0xc9,0xf0,0x9b,0xe1,0x7b,0xfc,0x37,0xd1,0x34,0xab,0x1f,
+                0x06,0xb7,0xc3,0xbf,0x04,0xb6,0x8c,0x7c,0x35,0xa6,0x1f,0x0e,
+                0x6f,0x6f,0x35,0xcb,0x7f,0xf8,0x38,0x1f,0xe1,0xd6,0xb7,0x77,
+                0x75,0xac,0x7c,0x3e,0xf8,0x2f,0xfb,0x47,0x7f,0xc1,0x43,0xfe,
+                0x1c,0xfc,0x1d,0xf0,0x2e,0xab,0x71,0x2e,0xa1,0xe0,0xdf,0x84,
+                0xff,0x00,0x0f,0x7f,0x67,0xff,0x00,0x83,0xff,0x00,0x18,0xa4,
+                0xf8,0x0f,0xe0,0x4f,0x86,0x9e,0x18,0xbb,0x79,0xb4,0x4f,0x02,
+                0x78,0x37,0xe0,0x9c,0x9f,0x08,0x3e,0x13,0x49,0xf0,0x8f,0xc2,
+                0xfe,0x16,0xb1,0xd2,0xb4,0x4f,0x86,0xef,0xf0,0xbb,0xe1,0xdb,
+                0x78,0x36,0xc7,0x46,0x6f,0x04,0xf8,0x68,0xe9,0x9f,0xc6,0x5f,
+                0xc4,0xff,0x00,0x89,0xff,0x00,0x12,0xfc,0x35,0xf1,0x2f,0xe2,
+                0x1f,0x87,0x7c,0x39,0xf1,0x0f,0xc7,0x3a,0x07,0x87,0xf4,0x0f,
+                0x1c,0xf8,0xb7,0x45,0xd0,0xb4,0x2d,0x17,0xc5,0xba,0xfe,0x95,
+                0xa3,0x68,0xba,0x36,0x95,0xaf,0xea,0x16,0x3a,0x5e,0x93,0xa4,
+                0xe9,0x76,0x3a,0x84,0x16,0x5a,0x6e,0x99,0xa6,0xd8,0xc1,0x05,
+                0x9d,0x85,0x85,0x9c,0x10,0xda,0xd9,0xda,0xc3,0x15,0xbd,0xbc,
+                0x51,0xc3,0x1a,0x22,0xfc,0xb6,0x75,0xc4,0x99,0x8f,0x86,0xf9,
+                0x9e,0x73,0x97,0xe5,0x98,0xaa,0x98,0xca,0x54,0xf3,0x7c,0xa3,
+                0x09,0x56,0x38,0xdc,0xab,0x83,0x31,0xb8,0x6c,0xc3,0xeb,0xfe,
+                0x17,0xf8,0x5d,0xc7,0x59,0x66,0x6d,0x8e,0xcb,0x33,0x8e,0x10,
+                0xcd,0xf2,0x9c,0x17,0x11,0xe0,0x38,0x6f,0x8e,0xf2,0x3e,0x0b,
+                0xcc,0xf3,0x4e,0x13,0xc0,0xf0,0xb6,0x17,0x3e,0xa7,0xc2,0x94,
+                0xaa,0x57,0xca,0xf0,0x9c,0x1f,0x80,0xf0,0xc7,0xc3,0xef,0x09,
+                0xff,0x00,0x64,0xf0,0xa3,0xc1,0xbe,0x25,0xfa,0x4e,0x55,0xf1,
+                0x17,0x1d,0x97,0xf8,0xc1,0xc4,0x5e,0x10,0x78,0x8d,0xe1,0xdf,
+                0x17,0x70,0xf7,0x08,0xf1,0xcf,0x1f,0xf0,0xdf,0x00,0x78,0x33,
+                0xc6,0xf4,0xfc,0x6a,0xc3,0x66,0x7e,0x1a,0x70,0x3f,0x19,0x70,
+                0xcf,0x15,0x71,0x8f,0x04,0x78,0xa7,0xe1,0xdf,0x19,0x70,0x76,
+                0x43,0xe2,0x4e,0x53,0xc3,0xfc,0x49,0x95,0xf0,0x8f,0x16,0x71,
+                0xc7,0x04,0x65,0x9c,0x3d,0x8a,0xf1,0x02,0x3c,0x37,0x97,0x63,
+                0x73,0x0c,0x0e,0x55,0x93,0xe0,0xf8,0x77,0x85,0x78,0x6b,0xff,
+            }},
+            {VA_FOURCC_422H, {
+                0xf8,0x6f,0xf7,0x5f,0xb0,0x2c,0x5f,0xf2,0xc3,0xf6,0xa8,0xff,
+                0x00,0x82,0x4e,0x7e,0xd5,0x10,0x7f,0xd4,0x03,0xc4,0x96,0x9e,
+                0x15,0xb4,0xf1,0x26,0x81,0xff,0x00,0x72,0xe7,0x83,0xac,0x3c,
+                0x5f,0x61,0xe0,0xef,0x0e,0x7f,0xd4,0x91,0xf0,0xe7,0xe3,0x27,
+                0xc3,0x9f,0x04,0x7f,0xcd,0x2b,0x83,0xe1,0x5f,0xfc,0x6b,0x77,
+                0xe9,0xdb,0xdf,0x87,0x16,0xba,0xed,0xed,0xde,0xb7,0xf0,0xeb,
+                0xfe,0x0e,0x06,0xfd,0xa3,0x7e,0x0b,0xfc,0x3e,0xd6,0x2e,0xae,
+                0x35,0x5f,0x02,0xfc,0x1d,0xf8,0x73,0xff,0x00,0x05,0x0e,0xf8,
+                0x3d,0xf0,0x03,0xe1,0xef,0xc2,0x7f,0x06,0xea,0x12,0xbd,0xdf,
+                0x86,0x3e,0x1a,0x78,0x13,0xe0,0x3c,0x9f,0x18,0xbe,0x10,0x49,
+                0xf0,0x4f,0xc1,0xbe,0x04,0xd1,0x26,0xb1,0xf0,0xb7,0x86,0x3e,
+                0x11,0xc9,0xf0,0x9b,0xe1,0x7b,0xfc,0x37,0xd1,0x34,0xab,0x1f,
+                0x06,0xb7,0xc3,0xbf,0x04,0xb6,0x8c,0x7c,0x35,0xa6,0x73,0x70,
+                0x9e,0x7d,0x9a,0x70,0xfc,0xf3,0x5c,0xb7,0x3b,0xfa,0x2c,0xfd,
+                0x2c,0x7c,0x7b,0xc2,0xe2,0x31,0xb5,0x6a,0x67,0x7e,0x1e,0xfd,
+                0x0b,0x7c,0x3f,0xcf,0xbc,0x62,0xe3,0x4f,0x07,0xbc,0x47,0xe1,
+                0x7e,0x5f,0x0d,0xf8,0xc1,0xe6,0x59,0x65,0x3c,0x8b,0x88,0x33,
+                0x7c,0x67,0x83,0xb9,0xfd,0x3e,0x09,0xca,0xb8,0x33,0x82,0xf8,
+                0x9f,0x0d,0xc3,0x58,0x2c,0x06,0x6d,0x9a,0xf8,0x4d,0x8c,0xf1,
+                0x83,0x34,0xcc,0x9e,0x27,0xe9,0x23,0x93,0xcf,0x36,0xf2,0x3c,
+                0x57,0xe3,0xde,0x28,0xc0,0x61,0x32,0x4f,0xa4,0x8f,0x00,0x7d,
+                0x1a,0xb1,0x1e,0x30,0xe4,0x9e,0x3b,0xd6,0xc4,0xe0,0x3c,0x6d,
+                0xf0,0x8b,0x2f,0xfa,0x48,0xf8,0x5f,0xf4,0x68,0xcd,0x7c,0x0f,
+                0xfa,0x56,0x78,0x61,0x4a,0x87,0x87,0xbe,0x29,0x4f,0x1d,0xc4,
+                0xfc,0x4d,0xe1,0xbf,0x8b,0x1c,0x25,0x9f,0xe7,0x1c,0x4f,0x84,
+                0xe1,0xac,0xaf,0x84,0xf8,0xbb,0x21,0xc4,0xe2,0x71,0x1c,0x41,
+                0xf5,0x9f,0x0a,0xb8,0x77,0x34,0xe1,0xfc,0xc3,0x0f,0x96,0x50,
+                0xe2,0x88,0x66,0x87,0xc3,0x9b,0xdb,0xcd,0x72,0xdf,0xfe,0x0e,
+                0x07,0xf8,0x75,0xad,0xdd,0xdd,0x6b,0x1f,0x0f,0xbe,0x0b,0xfe,
+                0xd1,0xdf,0xf0,0x50,0xff,0x00,0x87,0x3f,0x07,0x7c,0x0b,0xaa,
+                0xdc,0x4b,0xa8,0x78,0x37,0xe1,0x3f,0xc3,0xdf,0xd9,0xff,0x00,
+                0xe0,0xff,0x00,0xc6,0x29,0x3e,0x03,0xf8,0x13,0xe1,0xa7,0x86,
+                0x2e,0xde,0x6d,0x13,0xc0,0x9e,0x0d,0xf8,0x27,0x27,0xc2,0x0f,
+                0x84,0xd2,0x7c,0x23,0xf0,0xbf,0x85,0xac,0x74,0xad,0x13,0xe1,
+                0xbb,0xfc,0x2e,0xf8,0x76,0xde,0x0d,0xb1,0xd1,0x9b,0xc1,0x3e,
+                0x1a,0x3a,0x67,0xf1,0x97,0xf1,0x3f,0xe2,0x7f,0xc4,0xbf,0x0d,
+                0x7c,0x4b,0xf8,0x87,0xe1,0xdf,0x0e,0x7c,0x43,0xf1,0xce,0x81,
+                0xe1,0xfd,0x03,0xc7,0x3e,0x2d,0xd1,0x74,0x2d,0x0b,0x45,0xf1,
+                0x6e,0xbf,0xa5,0x68,0xda,0x2e,0x8d,0xa5,0x6b,0xfa,0x85,0x8e,
+                0x97,0xa4,0xe9,0x3a,0x5d,0x8e,0xa1,0x05,0x96,0x9b,0xa6,0x69,
+                0xb6,0x30,0x41,0x67,0x61,0x61,0x67,0x04,0x36,0xb6,0x76,0xb0,
+                0xc5,0x6f,0x6f,0x14,0x70,0xc6,0x88,0xbc,0x9c,0x6b,0x92,0xe4,
+                0xf9,0xa7,0x1c,0x62,0x30,0xd9,0x9e,0x53,0x96,0x66,0x38,0x6c,
+                0x56,0x4f,0xc2,0xd9,0xd6,0x2b,0x0f,0x8e,0xc0,0x61,0x71,0x74,
+                0x31,0x39,0xc4,0x3c,0x21,0xf0,0x57,0x87,0xe1,0x9b,0x57,0xa5,
+                0x88,0xa5,0x52,0x9d,0x6c,0xce,0x19,0x0e,0x4d,0x93,0xe4,0x90,
+                0xc7,0xd4,0x8c,0xb1,0x51,0xca,0x32,0xac,0xb7,0x2d,0x55,0x56,
+                0x0b,0x03,0x85,0xa3,0x4b,0xf4,0xdf,0x06,0xbc,0x4d,0xf1,0x27,
+                0xc3,0x5c,0x6f,0xd2,0xfa,0xa7,0x87,0x3e,0x21,0x71,0xc7,0x00,
+                0x54,0xc1,0xf8,0xeb,0xf4,0x65,0xc0,0x61,0x27,0xc1,0x5c,0x59,
+                0x9f,0x70,0xac,0xf0,0xb8,0x1e,0x25,0xfa,0x0c,0xf8,0x3f,0xc4,
+                0xdc,0x47,0x82,0xc3,0xcb,0x22,0xc7,0xe0,0x25,0x43,0x09,0x9f,
+                0xf1,0x25,0x38,0x71,0x06,0x77,0x86,0xa4,0xe3,0x47,0x35,0xcf,
+                0x21,0x0c,0xdb,0x1d,0x0a,0xf8,0xf8,0xac,0x42,0xff,
+            }},
+            {VA_FOURCC_422V, {
+                0xf8,0x6f,0xf7,0x5f,0xb0,0x2c,0x5f,0xf2,0xc3,0xf6,0xa8,0xff,
+                0x00,0x82,0x4e,0x7e,0xd5,0x10,0x7f,0xd4,0x03,0xc4,0x96,0x9e,
+                0x15,0xb4,0xf1,0x26,0x81,0xff,0x00,0x72,0xe7,0x83,0xac,0x3c,
+                0x5f,0x61,0xe0,0xef,0x0e,0x7f,0xd4,0x91,0xf0,0xe7,0xe3,0x27,
+                0xc3,0x9f,0x04,0x7f,0xcd,0x2b,0x83,0xe1,0x5f,0xfc,0x6b,0x77,
+                0xe9,0xdf,0x87,0x37,0xb7,0x9a,0xe5,0xbf,0xfc,0x1c,0x0f,0xf0,
+                0xeb,0x5b,0xbb,0xba,0xd6,0x3e,0x1f,0x7c,0x17,0xfd,0xa3,0xbf,
+                0xe0,0xa1,0xff,0x00,0x0e,0x7e,0x0e,0xf8,0x17,0x55,0xb8,0x97,
+                0x50,0xf0,0x6f,0xc2,0x7f,0x87,0xbf,0xb3,0xff,0x00,0xc1,0xff,
+                0x00,0x8c,0x52,0x7c,0x07,0xf0,0x27,0xc3,0x4f,0x0c,0x5d,0xbc,
+                0xda,0x27,0x81,0x3c,0x1b,0xf0,0x4e,0x4f,0x84,0x1f,0x09,0xa4,
+                0xf8,0x47,0xe1,0x7f,0x0b,0x58,0xe9,0x5a,0x27,0xc3,0x77,0xf8,
+                0x5d,0xf0,0xed,0xbc,0x1b,0x63,0xa3,0x37,0x82,0x7c,0x34,0x74,
+                0xce,0x0e,0x29,0xe1,0xcf,0xf5,0x4f,0x8a,0xbe,0x8b,0xf3,0xc1,
+                0x66,0x99,0x86,0x2b,0xfe,0x23,0xaf,0x1e,0x71,0xb7,0x86,0x1e,
+                0x1f,0xe7,0xde,0xd3,0xfd,0x59,0xf1,0x03,0xc1,0xff,0x00,0xf5,
+                0x7b,0x28,0xcd,0xf8,0xdf,0x88,0x17,0xfa,0xe7,0xe1,0xcb,0xe0,
+                0x6f,0xf5,0x83,0x81,0x33,0xff,0x00,0xec,0x4c,0x06,0x59,0xff,
+                0x00,0x10,0xfb,0x83,0x72,0x6f,0x09,0x7f,0xd6,0x29,0x52,0xfa,
+                0xf7,0x8e,0xbc,0x4f,0xe3,0xc7,0xb6,0xc6,0x60,0xf1,0x77,0x98,
+                0x71,0xef,0xfa,0xc9,0xe3,0x27,0xd1,0xcf,0xe8,0xfb,0xe3,0xee,
+                0x53,0x1f,0x1b,0xff,0x00,0xe2,0x2c,0xf0,0xbf,0x1b,0xf1,0x3f,
+                0x84,0xde,0x3c,0x7d,0x77,0xfe,0x21,0x5f,0xd2,0x63,0xc1,0x0f,
+                0xf5,0x37,0x39,0xc9,0xfc,0x30,0x55,0xbf,0xe2,0x2c,0xf8,0x6b,
+                0x84,0xc9,0x3f,0xd6,0x9e,0x28,0xcc,0x7f,0xd6,0x2c,0xfb,0x3a,
+                0xff,0x00,0x5a,0x38,0x57,0x87,0x7c,0x28,0xfa,0xac,0x33,0x0f,
+                0xec,0xaa,0x99,0x46,0x37,0x92,0xb6,0x63,0x89,0x2f,0x7e,0x1c,
+                0x5a,0xeb,0xb7,0xb7,0x7a,0xdf,0xc3,0xaf,0xf8,0x38,0x1b,0xf6,
+                0x8d,0xf8,0x2f,0xf0,0xfb,0x58,0xba,0xb8,0xd5,0x7c,0x0b,0xf0,
+                0x77,0xe1,0xcf,0xfc,0x14,0x3b,0xe0,0xf7,0xc0,0x0f,0x87,0xbf,
+                0x09,0xfc,0x1b,0xa8,0x4a,0xf7,0x7e,0x18,0xf8,0x69,0xe0,0x4f,
+                0x80,0xf2,0x7c,0x62,0xf8,0x41,0x27,0xc1,0x3f,0x06,0xf8,0x13,
+                0x44,0x9a,0xc7,0xc2,0xde,0x18,0xf8,0x47,0x27,0xc2,0x6f,0x85,
+                0xef,0xf0,0xdf,0x44,0xd2,0xac,0x7c,0x1a,0xdf,0x0e,0xfc,0x12,
+                0xda,0x31,0xf0,0xd6,0x99,0xfc,0x65,0xfc,0x4f,0xf8,0x9f,0xf1,
+                0x2f,0xc3,0x5f,0x12,0xfe,0x21,0xf8,0x77,0xc3,0x9f,0x10,0xfc,
+                0x73,0xa0,0x78,0x7f,0x40,0xf1,0xcf,0x8b,0x74,0x5d,0x0b,0x42,
+                0xd1,0x7c,0x5b,0xaf,0xe9,0x5a,0x36,0x8b,0xa3,0x69,0x5a,0xfe,
+                0xa1,0x63,0xa5,0xe9,0x3a,0x4e,0x97,0x63,0xa8,0x41,0x65,0xa6,
+                0xe9,0x9a,0x6d,0x8c,0x10,0x59,0xd8,0x58,0x59,0xc1,0x0d,0xad,
+                0x9d,0xac,0x31,0x5b,0xdb,0xc5,0x1c,0x31,0xa2,0x2f,0xc6,0xd3,
+                0xf1,0xab,0x88,0xa9,0x53,0x85,0x26,0xb0,0xd8,0xe7,0x4a,0x11,
+                0xa6,0xf1,0xb9,0x97,0x08,0x78,0x32,0xb3,0x1c,0x63,0x84,0x54,
+                0x7e,0xb5,0x98,0x2c,0x8f,0xc2,0x1c,0x83,0x24,0x58,0xdc,0x45,
+                0xbd,0xae,0x29,0x64,0xf9,0x16,0x4b,0x95,0x2a,0xf3,0xa9,0xfd,
+                0x9f,0x94,0xe5,0xd8,0x4f,0x63,0x83,0xa3,0xfd,0x8b,0x8b,0xfd,
+                0x9f,0x3e,0x25,0x7d,0x6f,0x15,0xfd,0x8d,0xf4,0xd5,0xf1,0x17,
+                0x29,0xc9,0xfe,0xb1,0x5b,0xfb,0x2b,0x2a,0xaf,0xf4,0x74,0xfa,
+                0x1a,0x67,0xd5,0xf2,0xcc,0xb7,0xda,0x4b,0xea,0x39,0x7d,0x6c,
+                0xf3,0x3a,0xf0,0x0b,0x17,0x9c,0xe7,0x35,0x70,0x58,0x5f,0x65,
+                0x86,0xa9,0x9a,0xe6,0xd8,0xbc,0x56,0x67,0x98,0xce,0x9b,0xc6,
+                0x63,0xf1,0x15,0xb1,0x55,0xaa,0xd4,0x97,0xff,
+            }},
+            {VA_FOURCC_411P, {
+                0xf8,0x6f,0xf7,0x5f,0xb0,0x2c,0x5f,0xf2,0xc3,0xf6,0xa8,0xff,
+                0x00,0x82,0x4e,0x7e,0xd5,0x10,0x7f,0xd4,0x03,0xc4,0x96,0x9e,
+                0x15,0xb4,0xf1,0x26,0x81,0xff,0x00,0x72,0xe7,0x83,0xac,0x3c,
+                0x5f,0x61,0xe0,0xef,0x0e,0x7f,0xd4,0x91,0xf0,0xe7,0xe3,0x27,
+                0xc3,0x9f,0x04,0x7f,0xcd,0x2b,0x83,0xe1,0x5f,0xfc,0x6b,0x77,
+                0xe9,0xdb,0xdf,0x87,0x16,0xba,0xed,0xed,0xde,0xb7,0xf0,0xeb,
+                0xfe,0x0e,0x06,0xfd,0xa3,0x7e,0x0b,0xfc,0x3e,0xd6,0x2e,0xae,
+                0x35,0x5f,0x02,0xfc,0x1d,0xf8,0x73,0xff,0x00,0x05,0x0e,0xf8,
+                0x3d,0xf0,0x03,0xe1,0xf7,0xc2,0x7f,0x07,0x6a,0x12,0xbd,0xdf,
+                0x86,0x3e,0x1a,0x78,0x13,0xe0,0x3c,0x9f,0x18,0xbe,0x10,0x49,
+                0xf0,0x4f,0xc1,0xbe,0x04,0xd1,0x26,0xb1,0xf0,0xb7,0x86,0x3e,
+                0x11,0xc9,0xf0,0x9b,0xe1,0x7b,0xfc,0x37,0xd1,0x34,0xab,0x1f,
+                0x06,0xb7,0xc3,0xbf,0x04,0xb6,0x8c,0x7c,0x35,0xa6,0x14,0x57,
+                0xa3,0xc3,0xfc,0x53,0x1c,0x0e,0x55,0x86,0xc2,0xe7,0x7f,0x40,
+                0x6f,0xda,0x85,0xe3,0x4e,0x3e,0x0e,0xbd,0x59,0xf8,0x8b,0xf4,
+                0x50,0xfa,0x3c,0x71,0x67,0x8a,0x3e,0x0b,0xe6,0xd4,0xf1,0x98,
+                0x8a,0xb8,0xea,0x59,0x5e,0x45,0xc4,0x58,0x2e,0x01,0xe2,0x4f,
+                0xab,0x66,0x9c,0x23,0x1c,0x4f,0xfa,0x9d,0xc4,0x19,0x26,0x2b,
+                0x1d,0x87,0xc4,0xe5,0xb9,0xb6,0x41,0x89,0x4b,0x2d,0xc0,0xe1,
+                0x6b,0x61,0xa8,0xaf,0xcc,0xfc,0x42,0xf1,0xaf,0x8d,0xf8,0x43,
+                0x8a,0xf3,0x0a,0x79,0x37,0xd0,0x7b,0x3a,0xf1,0x7b,0x22,0xe2,
+                0xea,0x78,0x1f,0x14,0x32,0x6e,0x38,0xcb,0x7e,0x9f,0x1e,0x02,
+                0x78,0x07,0x4f,0x11,0x85,0xf1,0x63,0x05,0x43,0xc4,0x7c,0x57,
+                0x0e,0xd7,0xf0,0xdb,0x8b,0xfc,0x03,0xf1,0x03,0x1f,0x96,0x62,
+                0x38,0x17,0x37,0xe2,0x7c,0xcb,0x81,0xbe,0xbd,0x83,0xe2,0x9c,
+                0xcb,0x2e,0xcd,0x68,0x70,0xe5,0x0c,0x6c,0x2a,0xcf,0x1b,0x53,
+                0x1d,0x56,0xaa,0xfc,0x39,0xbd,0xbc,0xd7,0x2d,0xbf,0xe0,0xe0,
+                0x7f,0x87,0x5a,0xdd,0xdd,0xd6,0xb1,0xf0,0xfb,0xe0,0xbf,0xed,
+                0x1d,0xff,0x00,0x05,0x0f,0xf8,0x73,0xf0,0x77,0xc0,0xba,0xa4,
+                0xf2,0xea,0x1e,0x0d,0xf8,0x4f,0xf0,0xf7,0xe0,0x07,0xc1,0xff,
+                0x00,0x8c,0x52,0x7c,0x07,0xf0,0x27,0xc3,0x4f,0x0c,0x5d,0xbc,
+                0xda,0x27,0x81,0x3c,0x1b,0xf0,0x4e,0x4f,0x84,0x1f,0x09,0x9f,
+                0xe1,0x1f,0x86,0x3c,0x2d,0x63,0xa5,0x68,0x9f,0x0d,0xdf,0xe1,
+                0x7f,0xc3,0xb6,0xf0,0x6d,0x8e,0x8c,0xde,0x09,0xf0,0xd1,0xd3,
+                0x3f,0x8c,0xaf,0x89,0xff,0x00,0x13,0xfe,0x25,0x78,0x6b,0xe2,
+                0x57,0xc4,0x3f,0x0e,0xf8,0x77,0xe2,0x1f,0x8e,0x74,0x0f,0x0f,
+                0xe8,0x1e,0x39,0xf1,0x6e,0x8b,0xa1,0x68,0x5a,0x2f,0x8b,0x75,
+                0xfd,0x2b,0x46,0xd1,0x74,0x6d,0x2b,0x5f,0xd4,0x2c,0x74,0xbd,
+                0x27,0x49,0xd2,0xec,0x75,0x08,0x2c,0xb4,0xdd,0x33,0x4d,0xb2,
+                0x82,0x0b,0x3b,0x0b,0x0b,0x38,0x21,0xb5,0xb3,0xb5,0x86,0x2b,
+                0x7b,0x78,0xa3,0x86,0x34,0x40,0x51,0x5f,0x1f,0x9b,0xf0,0xa7,
+                0x0b,0xe6,0x9c,0x4b,0xc5,0xd8,0xcc,0xcf,0x86,0xf2,0x0c,0xc7,
+                0x17,0x57,0x8a,0xf3,0xe9,0x54,0xc5,0x63,0xf2,0x7c,0xbb,0x17,
+                0x89,0xa9,0x29,0xe3,0xaa,0x55,0x9c,0xa7,0x5f,0x11,0x86,0xa9,
+                0x56,0x6e,0x75,0x6a,0x54,0xa9,0x27,0x29,0x37,0x2a,0x95,0x27,
+                0x37,0x79,0x4a,0x4d,0xff,0x00,0x53,0xf0,0x6f,0x8f,0xfe,0x3b,
+                0xf0,0x1f,0x0b,0xd1,0xe1,0xbe,0x07,0xf1,0xaf,0xc5,0xbe,0x0c,
+                0xe1,0xdc,0x0f,0x19,0x78,0xd3,0x47,0x05,0x90,0xf0,0xa7,0x89,
+                0x1c,0x63,0xc3,0xb9,0x2e,0x0e,0x96,0x17,0xc7,0xbf,0x14,0xf0,
+                0x18,0x6a,0x58,0x5c,0xaf,0x28,0xce,0x70,0x78,0x1c,0x3d,0x3c,
+                0x3e,0x07,0x07,0x84,0xc1,0x50,0x85,0x2a,0x10,0x8d,0x2c,0x26,
+                0x17,0x0d,0x86,0xa6,0xa3,0x46,0x85,0x28,0x47,0xff,
+            }},
+            {VA_FOURCC_444P, {
+                0xf8,0x6f,0xf7,0x5f,0xb0,0x2c,0x5f,0xf2,0xc3,0xf6,0xa8,0xff,
+                0x00,0x82,0x4e,0x7e,0xd5,0x10,0x7f,0xd4,0x03,0xc4,0x96,0x9e,
+                0x15,0xb4,0xf1,0x26,0x81,0xff,0x00,0x72,0xe7,0x83,0xac,0x3c,
+                0x5f,0x61,0xe0,0xef,0x0e,0x7f,0xd4,0x91,0xf0,0xe7,0xe3,0x27,
+                0xc3,0x9f,0x04,0x7f,0xcd,0x2b,0x83,0xe1,0x5f,0xfc,0x6b,0x77,
+                0xe2,0x3f,0xe3,0x32,0xcb,0x38,0xcb,0xfe,0x69,0xff,0x00,0x02,
+                0x7e,0x93,0xfe,0x04,0xf0,0xff,0x00,0xfd,0x54,0xbe,0x25,0x78,
+                0x5f,0x97,0x78,0x5f,0xe2,0x57,0x12,0xff,0x00,0xdd,0xd5,0xc6,
+                0xbf,0x49,0xaf,0xd9,0x45,0xf4,0x9a,0xe3,0x5e,0x29,0xff,0x00,
+                0xaa,0xef,0xc7,0x2f,0xa2,0x17,0x8e,0x5c,0x77,0xff,0x00,0x35,
+                0x6f,0x8e,0x9c,0x5b,0xff,0x00,0x1f,0x61,0xfd,0x13,0xfe,0x10,
+                0x3e,0x9f,0xf9,0x07,0xfc,0xbe,0xfa,0x26,0x7e,0xd2,0x2f,0xa2,
+                0x65,0x6f,0xfa,0xa0,0x56,0x6f,0xc0,0xf9,0xba,0xe0,0x1f,0xfc,
+                0x54,0x3e,0x23,0x78,0x07,0xe2,0x37,0x84,0x3f,0xf6,0x1f,0xf4,
+                0x65,0xf1,0x6f,0xe8,0xcb,0x8f,0xeb,0xf4,0x29,0x7f,0xf1,0xec,
+                0x9f,0xa7,0x6f,0x7e,0x1c,0xdb,0x6b,0x97,0x97,0x7a,0xdf,0xc3,
+                0xaf,0xf8,0x38,0x1f,0xf6,0x8e,0xf8,0x2f,0xf0,0xfb,0x58,0xba,
+                0xb8,0xd5,0x7c,0x0b,0xf0,0x77,0xe1,0xcf,0xfc,0x14,0x3f,0xe0,
+                0xff,0x00,0xec,0xff,0x00,0xf0,0xf7,0xe1,0x3f,0x83,0x75,0x09,
+                0x5e,0xef,0xc3,0x1f,0x0d,0x3c,0x09,0xf0,0x1e,0x4f,0x8c,0x5f,
+                0x08,0x24,0xf8,0x27,0xe0,0xdf,0x02,0x68,0x93,0x58,0xf8,0x5b,
+                0xc3,0x1f,0x08,0xe4,0xf8,0x4d,0xf0,0xbd,0xfe,0x1b,0xe8,0x9a,
+                0x55,0x8f,0x83,0x5b,0xe1,0xdf,0x82,0x5b,0x46,0x3e,0x1a,0xd3,
+                0x3f,0x5c,0xa1,0xc7,0x78,0x5c,0x55,0x0a,0x38,0xac,0xd3,0xf6,
+                0x5a,0xfe,0xd8,0x3a,0x99,0x9e,0x26,0x95,0x3c,0x46,0x63,0x53,
+                0xc1,0x1f,0xa3,0xfe,0x6d,0xe3,0x67,0x83,0x15,0x31,0xd5,0xa1,
+                0x1a,0x98,0xb9,0xf8,0x45,0xe3,0x37,0x07,0x70,0x27,0x18,0x70,
+                0x8f,0x8b,0x9e,0x18,0x4f,0x11,0x2a,0x92,0xe0,0x1f,0x13,0xb8,
+                0x57,0x8b,0xb8,0xa7,0x87,0x38,0xf7,0x85,0x1e,0x53,0xc5,0x59,
+                0x1f,0x11,0xe7,0x79,0x66,0x6d,0x85,0xcc,0xf1,0x5f,0xc9,0x79,
+                0xb7,0x8f,0x7e,0x37,0x70,0xae,0x6b,0x99,0xf0,0xbf,0x1c,0x7e,
+                0xcd,0x6c,0x66,0x23,0x8d,0x78,0x6f,0x30,0xc6,0xe4,0x3c,0x61,
+                0x5f,0x84,0xbf,0x69,0x1f,0x83,0xbe,0x15,0xf0,0xad,0x7e,0x28,
+                0xc9,0xf1,0x35,0x32,0xfe,0x20,0xad,0xc3,0x3e,0x18,0x78,0xc3,
+                0xf4,0x6d,0xe2,0xdf,0x16,0xfc,0x38,0xe1,0xfa,0x99,0xb6,0x1f,
+                0x17,0x3c,0x9b,0x80,0xfc,0x52,0xe2,0xae,0x26,0xf1,0x1b,0x84,
+                0x32,0xd9,0x61,0xb8,0x7b,0x8d,0xf8,0x83,0x39,0xe2,0x6c,0xbb,
+                0x33,0xcc,0x71,0x27,0xc3,0x9b,0xdb,0xcd,0x72,0xdf,0xfe,0x0e,
+                0x07,0xf8,0x75,0xad,0xdd,0xdd,0x6b,0x1f,0x0f,0xbe,0x0b,0xfe,
+                0xd1,0xdf,0xf0,0x50,0xff,0x00,0x87,0x3f,0x07,0x7c,0x0b,0xaa,
+                0xdc,0x4b,0xa8,0x78,0x37,0xe1,0x3f,0xc3,0xdf,0xd9,0xff,0x00,
+                0xe0,0xff,0x00,0xc6,0x29,0x3e,0x03,0xf8,0x13,0xe1,0xa7,0x86,
+                0x2e,0xde,0x6d,0x13,0xc0,0x9e,0x0d,0xf8,0x27,0x27,0xc2,0x0f,
+                0x84,0xd2,0x7c,0x23,0xf0,0xbf,0x85,0xac,0x74,0xad,0x13,0xe1,
+                0xbb,0xfc,0x2e,0xf8,0x76,0xde,0x0d,0xb1,0xd1,0x9b,0xc1,0x3e,
+                0x1a,0x3a,0x61,0xc7,0x78,0x7a,0x18,0xbc,0x2f,0xec,0xb5,0xcd,
+                0x31,0x54,0x69,0x62,0x73,0x3a,0x9f,0xb6,0x0f,0xe8,0xff,0x00,
+                0xe0,0x8d,0x4c,0xc7,0x11,0x4e,0x15,0xb1,0xd5,0x3c,0x18,0xf1,
+                0xb3,0x36,0xe0,0x4e,0x0e,0xf1,0x9b,0xc2,0x29,0xe2,0xea,0x46,
+                0x58,0x89,0xf8,0x61,0xe2,0xe7,0x08,0xf1,0x87,0x17,0x70,0xaf,
+                0x89,0xdc,0x03,0x2a,0x8f,0x85,0x38,0xf7,0x87,0x38,0xa7,0x88,
+                0xf2,0x3e,0x2a,0xca,0x73,0x6c,0xb3,0x3b,0xcc,0xf0,0xb8,0xa3,
+                0xc7,0xbc,0xdb,0x35,0xe1,0x5f,0x1b,0xbf,0x66,0xb7,0x1c,0x70,
+                0xbe,0x67,0x98,0x70,0xdf,0x1a,0xe2,0x31,0x9f,0xb4,0x8f,0x84,
+                0xab,0xf1,0x86,0x43,0x8d,0xc4,0xe4,0xfc,0x51,0x5f,0x85,0x7c,
+                0x2b,0xf0,0x77,0xe8,0xdb,0xe3,0x0f,0x86,0x1c,0x33,0x5b,0x88,
+                0x32,0xfa,0x98,0x7c,0xda,0xa7,0x0f,0xf8,0x71,0xe2,0xdf,0x16,
+                0xf1,0x57,0x8a,0x5c,0x07,0x92,0xcf,0x17,0x2c,0xb7,0x84,0x3c,
+                0x46,0xe2,0x6e,0x20,0xe3,0x7e,0x1e,0xc3,0x65,0xdc,0x4d,0x9c,
+                0xe6,0x39,0x9e,0x27,0xf8,0xcb,0xf8,0x9f,0xf1,0x3f,0xe2,0x5f,
+                0x86,0xbe,0x25,0xfc,0x43,0xf0,0xef,0x87,0x3e,0x21,0xf8,0xe7,
+                0x40,0xf0,0xfe,0x81,0xe3,0x9f,0x16,0xe8,0xba,0x16,0x85,0xa2,
+                0xf8,0xb7,0x5f,0xd2,0xb4,0x6d,0x17,0x46,0xd2,0xb5,0xfd,0x42,
+                0xc7,0x4b,0xd2,0x74,0x9d,0x2e,0xc7,0x50,0x82,0xcb,0x4d,0xd3,
+                0x34,0xdb,0x18,0x20,0xb3,0xb0,0xb0,0xb3,0x82,0x1b,0x5b,0x3b,
+                0x58,0x62,0xb7,0xb7,0x8a,0x38,0x63,0x44,0x5f,0xc3,0xf8,0x4b,
+                0x84,0xb8,0x57,0x35,0xe1,0x5e,0x19,0xcd,0x33,0x4e,0x19,0xe1,
+                0xfc,0xcb,0x32,0xcc,0xb8,0x7f,0x26,0xc7,0xe6,0x39,0x8e,0x3f,
+                0x26,0xcb,0x71,0x98,0xec,0x7e,0x3b,0x19,0x97,0x61,0xb1,0x18,
+                0xbc,0x6e,0x37,0x17,0x88,0xc3,0x54,0xc4,0x62,0xb1,0x78,0xac,
+                0x45,0x4a,0x95,0xf1,0x38,0x9a,0xf5,0x2a,0x56,0xaf,0x5a,0xa4,
+                0xea,0xd5,0x9c,0xa7,0x29,0x49,0xff,0x00,0xa9,0xdf,0x48,0x4f,
+                0xa4,0x27,0x8f,0xbc,0x05,0xe3,0xef,0x8e,0x1c,0x0b,0xc0,0xbe,
+                0x38,0x78,0xbf,0xc1,0x7c,0x13,0xc1,0x7e,0x2f,0xf8,0x97,0xc2,
+                0x7c,0x1d,0xc1,0xdc,0x27,0xe2,0x5f,0x1a,0x70,0xe7,0x0a,0xf0,
+                0x9f,0x0a,0xf0,0xe7,0x1a,0x67,0x59,0x3f,0x0f,0x70,0xd7,0x0d,
+                0x70,0xf6,0x4f,0x9d,0x60,0xf2,0x8c,0x8b,0x87,0xf2,0x2c,0xa3,
+                0x07,0x84,0xca,0xf2,0x6c,0x9b,0x2b,0xc1,0xe1,0x72,0xec,0xaf,
+                0x2e,0xc2,0xe1,0xb0,0x38,0x1c,0x35,0x0c,0x35,0x0a,0x54,0xa3,
+                0xff,
+            }}
+        });
+
+    /**
+     * Test Pattern 4
+     *
+     * Solid Blue 150x75
+     *
+     */
+    template<> const bool TestPatternData<4>::m_valid =
+        TestPatternData<4>::initialize<150, 75>(
+
+            generateSolid({0x1d, 0xff, 0x6b}, {150, 75}),
+
+            {{VA_FOURCC_IMC3, {
+                0xfe,0x39,0xe8,0xa2,0x8a,0xff,0x00,0xbf,0x83,0xf9,0x5c,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0xff,
+            }},
+            {VA_FOURCC_422H, {
+                0xfe,0x39,0xe8,0xaf,0xfb,0xf8,0x3f,0x95,0xc2,0x8a,0x00,0x28,
+                0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,
+                0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,
+                0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,
+                0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,
+                0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,
+                0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,
+                0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,
+                0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,
+                0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,
+                0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,
+                0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,
+                0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,
+                0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,
+                0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,
+                0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,
+                0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,
+                0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,
+                0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,
+                0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,
+                0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,
+                0xa0,0x02,0x8a,0x00,0xff,
+            }},
+            {VA_FOURCC_422V, {
+                0xfe,0x39,0xe8,0xaf,0xfb,0xf8,0x3f,0x95,0xc2,0x8a,0x00,0x28,
+                0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,
+                0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,
+                0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,
+                0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,
+                0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,
+                0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,
+                0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,
+                0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,
+                0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,
+                0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,
+                0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,
+                0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,
+                0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,
+                0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,
+                0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,
+                0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,
+                0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,
+                0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,
+                0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,
+                0x00,0x28,0xa0,0x0f,0xff,
+            }},
+            {VA_FOURCC_411P, {
+                0xfe,0x39,0xe8,0xa2,0x8a,0xff,0x00,0xbf,0x83,0xf9,0x5c,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
+                0xa2,0x8a,0x00,0xff,
+            }},
+            {VA_FOURCC_444P, {
+                0xfe,0x39,0xeb,0xfe,0xfe,0x0f,0xe5,0x70,0xa0,0x02,0x80,0x0a,
+                0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,
+                0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,
+                0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,
+                0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,
+                0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,
+                0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,
+                0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,
+                0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,
+                0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,
+                0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,
+                0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,
+                0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,
+                0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,
+                0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,
+                0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,
+                0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,
+                0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,
+                0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,
+                0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,
+                0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,
+                0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,
+                0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,
+                0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,
+                0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,
+                0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,
+                0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,
+                0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,
+                0x00,0xa0,0x0f,0xff,
+            }}
+        });
+} // namespace JPEG
+
+#endif
-- 
2.4.11



More information about the Libva mailing list