[Libva] [PATCH intel-driver v2 4/7] test: add streamable operators for VA structs and other
Zhao Yakui
yakui.zhao at intel.com
Tue Sep 27 01:36:04 UTC 2016
On 09/27/2016 04:11 AM, U. Artie Eoff wrote:
> Add convenience streamable operators for VA and other common
> data structures so that tests can log them as needed.
>
> v2: put std::array stream operators into the std namespace
> otherwise gcc 5.x complains.
This looks good to me.
Add: Reviewed-by: Zhao Yakui <yakui.zhao at intel.com>
Thanks
>
> Signed-off-by: U. Artie Eoff<ullysses.a.eoff at intel.com>
> ---
> test/i965_streamable.h | 361 +++++++++++++++++++++++++++++++++++++++++++++++
> test/i965_test_fixture.h | 1 +
> 2 files changed, 362 insertions(+)
> create mode 100644 test/i965_streamable.h
>
> diff --git a/test/i965_streamable.h b/test/i965_streamable.h
> new file mode 100644
> index 000000000000..1c2f217d0a21
> --- /dev/null
> +++ b/test/i965_streamable.h
> @@ -0,0 +1,361 @@
> +/*
> + * 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_STREAMABLE_H
> +#define I965_STREAMABLE_H
> +
> +#include<array>
> +#include<iostream>
> +#include<iomanip>
> +#include<va/va.h>
> +
> +namespace std {
> + template<typename T, const size_t S> inline std::ostream&
> + operator<<(std::ostream& os, const std::array<T, S>& a)
> + {
> + os<< "{";
> + for (const auto& s : a) {
> + if (&s !=&a[0])
> + os<< ",";
> + os<< s;
> + }
> + return os<< "}";
> + }
> +
> + template<const size_t S> inline std::ostream&
> + operator<<(std::ostream& os, const std::array<uint8_t, S>& a)
> + {
> + os<< "{"<< std::hex;
> + for (const auto& s : a) {
> + if (&s !=&a[0])
> + os<< ",";
> + os<< "0x"<< std::setfill('0')<< std::setw(2)<< unsigned(s);
> + }
> + return os<< std::dec<< "}";
> + }
> +}// namespace std
> +
> +inline std::ostream&
> +operator<<(std::ostream& os, const VAEncPictureParameterBufferJPEG& b)
> +{
> + os<< "VAEncPictureParameterBufferJPEG ("<< &b<< ")"<< std::endl
> +<< " .reconstructed_picture = "<< b.reconstructed_picture
> +<< std::endl
> +
> +<< " .picture_width = "<< b.picture_width
> +<< std::endl
> +
> +<< " .picture_height = "<< b.picture_height
> +<< std::endl
> +
> +<< " .coded_buf = "<< b.coded_buf
> +<< std::endl
> +
> +<< " .pic_flags.value ="
> +<< std::hex<< std::setw(8)<< std::setfill('0')<< b.pic_flags.value
> +<< std::dec
> +<< std::endl
> +
> +<< " ...profile = "<< b.pic_flags.bits.profile
> +<< " (0 - Baseline, 1 - Extended, 2 - Lossless, 3 - Hierarchical)"
> +<< std::endl
> +
> +<< " ...progressive = "<< b.pic_flags.bits.progressive
> +<< " (0 - sequential, 1 - extended, 2 - progressive)"
> +<< std::endl
> +
> +<< " ...huffman = "<< b.pic_flags.bits.huffman
> +<< " (0 - arithmetic, 1 - huffman)"
> +<< std::endl
> +
> +<< " ...interleaved = "<< b.pic_flags.bits.interleaved
> +<< " (0 - non interleaved, 1 - interleaved)"
> +<< std::endl
> +
> +<< " ...differential = "<< b.pic_flags.bits.differential
> +<< " (0 - non differential, 1 - differential)"
> +<< std::endl
> +
> +<< " .sample_bit_depth = "<< (unsigned)b.sample_bit_depth
> +<< std::endl
> +
> +<< " .num_scan = "<< (unsigned)b.num_scan
> +<< std::endl
> +
> +<< " .num_components = "<< (unsigned)b.num_components
> +<< std::endl
> +
> +<< " .component_id ="
> +<< (unsigned)b.component_id[0]<< ","
> +<< (unsigned)b.component_id[1]<< ","
> +<< (unsigned)b.component_id[2]<< ","
> +<< (unsigned)b.component_id[3]<< ","
> +<< std::endl
> +
> +<< " .quantiser_table_selector ="
> +<< (unsigned)b.quantiser_table_selector[0]<< ","
> +<< (unsigned)b.quantiser_table_selector[1]<< ","
> +<< (unsigned)b.quantiser_table_selector[2]<< ","
> +<< (unsigned)b.quantiser_table_selector[3]<< ","
> +<< std::endl
> +
> +<< " .quality = "<< (unsigned)b.quality
> +<< std::endl
> + ;
> + return os;
> +}
> +
> +inline std::ostream&
> +operator<<(std::ostream& os, const VAEncPictureParameterBufferJPEG* b)
> +{
> + os<< *b;
> + return os;
> +}
> +
> +inline std::ostream&
> +operator<<(std::ostream& os, const VAQMatrixBufferJPEG& b)
> +{
> + os<< "VAQMatrixBufferJPEG ("<< &b<< ")"<< std::endl;
> +
> + os<< " .load_lum_quantiser_matrix = "<< b.load_lum_quantiser_matrix
> +<< std::endl
> + ;
> +
> + if (b.load_lum_quantiser_matrix)
> + {
> + os<< " .lum_quantiser_matrix = ";
> + for (size_t i(0); i< sizeof(b.lum_quantiser_matrix); ++i) {
> + os<< std::hex<< std::setw(2)<< std::setfill('0')
> +<< (unsigned)b.lum_quantiser_matrix[i]<< ",";
> + if (((i+1) % 12) == 0)
> + os<< std::endl<< " ";
> + }
> + os<< std::dec<< std::endl;
> + }
> +
> + os<< " .load_chroma_quantiser_matrix = "<< b.load_chroma_quantiser_matrix
> +<< std::endl
> + ;
> +
> + if (b.load_lum_quantiser_matrix)
> + {
> + os<< " .chroma_quantiser_matrix = ";
> + for (size_t i(0); i< sizeof(b.chroma_quantiser_matrix); ++i) {
> + os<< std::hex<< std::setw(2)<< std::setfill('0')
> +<< (unsigned)b.chroma_quantiser_matrix[i]<< ",";
> + if (((i+1) % 12) == 0)
> + os<< std::endl<< " ";
> + }
> + os<< std::dec<< std::endl;
> + }
> +
> + return os;
> +}
> +
> +inline std::ostream&
> +operator<<(std::ostream& os, const VAQMatrixBufferJPEG* b)
> +{
> + os<< *b;
> + return os;
> +}
> +
> +inline std::ostream&
> +operator<<(std::ostream& os, const VAHuffmanTableBufferJPEGBaseline& b)
> +{
> + os<< "VAHuffmanTableBufferJPEGBaseline ("<< &b<< ")"<< std::endl;
> +
> + os<< " .load_huffman_table ="
> +<< (unsigned)b.load_huffman_table[0]<< ","
> +<< (unsigned)b.load_huffman_table[1]<< ","
> +<< std::endl
> + ;
> +
> + for (size_t i(0); i< 2; ++i) {
> + unsigned sum(0);
> + os<< " .huffman_table["<< i<< "].num_dc_codes = ";
> + for (size_t j(0); j< sizeof(b.huffman_table[i].num_dc_codes); ++j) {
> + if (j and (j % 12) == 0)
> + os<< std::endl<< " ";
> + os<< std::hex<< std::setfill('0')<< std::setw(2)
> +<< (unsigned)b.huffman_table[i].num_dc_codes[j]<< ","
> +<< std::dec
> + ;
> + sum += b.huffman_table[i].num_dc_codes[j];
> + }
> + os<< " (sum = "<< sum<< ")"<< std::endl;
> +
> + os<< " .huffman_table["<< i<< "].dc_values = ";
> + for (size_t j(0); j< sizeof(b.huffman_table[i].dc_values); ++j) {
> + if (j and (j % 12) == 0)
> + os<< std::endl<< " ";
> + os<< std::hex<< std::setfill('0')<< std::setw(2)
> +<< (unsigned)b.huffman_table[i].dc_values[j]<< ","
> +<< std::dec
> + ;
> + }
> + os<< std::endl;
> +
> + sum = 0;
> + os<< " .huffman_table["<< i<< "].num_ac_codes = ";
> + for (size_t j(0); j< sizeof(b.huffman_table[i].num_ac_codes); ++j) {
> + if (j and (j % 12) == 0)
> + os<< std::endl<< " ";
> + os<< std::hex<< std::setfill('0')<< std::setw(2)
> +<< (unsigned)b.huffman_table[i].num_ac_codes[j]<< ","
> +<< std::dec
> + ;
> + sum += b.huffman_table[i].num_ac_codes[j];
> + }
> + os<< " (sum = "<< sum<< ")"<< std::endl;
> +
> + os<< " .huffman_table["<< i<< "].ac_values = ";
> + for (size_t j(0); j< sizeof(b.huffman_table[i].ac_values); ++j) {
> + if (j and (j % 12) == 0)
> + os<< std::endl<< " ";
> + os<< std::hex<< std::setfill('0')<< std::setw(2)
> +<< (unsigned)b.huffman_table[i].ac_values[j]<< ","
> +<< std::dec
> + ;
> + }
> + os<< std::endl;
> + }
> + return os;
> +}
> +
> +inline std::ostream&
> +operator<<(std::ostream& os, const VAHuffmanTableBufferJPEGBaseline* b)
> +{
> + os<< *b;
> + return os;
> +}
> +
> +inline std::ostream&
> +operator<<(std::ostream& os, const VAEncSliceParameterBufferJPEG& b)
> +{
> + os<< "VAEncSliceParameterBufferJPEG ("<< &b<< ")"<< std::endl
> +<< " .restart_interval = "<< b.restart_interval
> +<< std::endl
> +
> +<< " .num_components = "<< b.num_components
> +<< std::endl
> + ;
> +
> + for (size_t i(0); i< 4; ++i) {
> + os<< " .components["<< i<< "]"<< std::endl
> +<< " .component_selector ="
> +<< (unsigned)b.components[i].component_selector
> +<< std::endl
> +
> +<< " .dc_table_selector ="
> +<< (unsigned)b.components[i].dc_table_selector
> +<< std::endl
> +
> +<< " .ac_table_selector ="
> +<< (unsigned)b.components[i].ac_table_selector
> +<< std::endl
> + ;
> + }
> +
> + return os;
> +}
> +
> +inline std::ostream&
> +operator<<(std::ostream& os, const VAEncSliceParameterBufferJPEG* b)
> +{
> + os<< *b;
> + return os;
> +}
> +
> +inline std::ostream&
> +operator<<(std::ostream& os, const VAEncPackedHeaderParameterBuffer& b)
> +{
> + os<< "VAEncPackedHeaderParameterBuffer ("<< &b<< ")"<< std::endl
> +<< " .type = "<< b.type
> +<< std::endl
> +<< " .bit_length = "<< b.bit_length
> +<< std::endl
> +<< " .has_emulation_bytes = "<< (unsigned)b.has_emulation_bytes
> +<< std::endl
> + ;
> +
> + return os;
> +}
> +
> +inline std::ostream&
> +operator<<(std::ostream& os, const VAEncPackedHeaderParameterBuffer* b)
> +{
> + os<< *b;
> + return os;
> +}
> +
> +inline std::ostream&
> +operator<<(std::ostream& os, const VAImage& image)
> +{
> + os<< "VAImage ("<< &image<< ")"
> +<< std::dec<< std::endl
> +<< " id : "<< image.image_id
> +<< std::endl
> +<< " fourcc :"
> +<< std::string(reinterpret_cast<const char*>(&image.format.fourcc), 4)
> +<< std::endl
> +<< " size : "<< image.width<< "x"<< image.height
> +<< 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]
> +<< "}"
> +<< std::endl
> +<< " bpp : "<< image.format.bits_per_pixel
> +<< std::endl
> +<< " depth : "<< image.format.depth
> +<< std::endl
> +<< " byteorder: "<< image.format.byte_order
> +<< std::endl
> +<< " rgba mask:"
> +<< "{"
> +<< image.format.red_mask<< ","
> +<< image.format.green_mask<< ","
> +<< image.format.blue_mask<< ","
> +<< image.format.alpha_mask
> +<< "}"
> +<< std::endl
> +<< " buffer id: "<< image.buf
> +<< std::endl
> +<< " data size: "<< image.data_size
> + ;
> + return os;
> +}
> +
> +#endif // I965_STREAMABLE_H
> diff --git a/test/i965_test_fixture.h b/test/i965_test_fixture.h
> index 5915852c0f4b..d09f31d859b1 100644
> --- a/test/i965_test_fixture.h
> +++ b/test/i965_test_fixture.h
> @@ -27,6 +27,7 @@
>
> #include "test.h"
> #include "i965_internal_decl.h"
> +#include "i965_streamable.h"
>
> #include<string>
> #include<vector>
More information about the Libva
mailing list