1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: y2r_Types.h 4 5 Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. 6 7 These coded instructions, statements, and computer programs contain 8 proprietary information of Nintendo of America Inc. and/or Nintendo 9 Company Ltd., and are protected by Federal copyright law. They may 10 not be disclosed to third parties or copied or duplicated in any form, 11 in whole or in part, without the prior written consent of Nintendo. 12 13 $Rev: 21047 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_Y2R_CTR_Y2R_Y2RTYPES_H_ 17 #define NN_Y2R_CTR_Y2R_Y2RTYPES_H_ 18 19 #include <nn/Result.h> 20 21 namespace nn { 22 namespace y2r { 23 namespace CTR { 24 25 /*! 26 @brief 入力モードを示す列挙体です。 27 */ 28 enum InputFormat 29 { 30 INPUT_YUV422_INDIV_8 = 0, //!< YUV4:2:2 個別入力モード 8bitフォーマット 31 INPUT_YUV420_INDIV_8 = 1, //!< YUV4:2:0 個別入力モード 8bitフォーマット 32 INPUT_YUV422_INDIV_16 = 2, //!< YUV4:2:2 個別入力モード 16bit padding フォーマット 33 INPUT_YUV420_INDIV_16 = 3, //!< YUV4:2:0 個別入力モード 16bit padding フォーマット 34 INPUT_YUV422_BATCH = 4 //!< YUV4:2:2 一括入力モード 35 36 }; 37 38 /*! 39 @brief 出力ピクセルフォーマットを示す列挙体です。 40 */ 41 enum OutputFormat 42 { 43 OUTPUT_RGB_32 = 0, //!< RGB 32bit (RGB=888, Alpha=8) 44 OUTPUT_RGB_24 = 1, //!< RGB 24bit (RGB=888) 45 OUTPUT_RGB_16_555 = 2, //!< RGB 16bit (RGB=555, Alpha=1) 46 OUTPUT_RGB_16_565 = 3 //!< RGB 16bit (RGB=565) 47 }; 48 49 /*! 50 @brief 出力バッファローテーションを示す列挙体です。 51 */ 52 enum Rotation 53 { 54 ROTATION_NONE = 0, //!< 回転なし 55 ROTATION_CLOCKWISE_90 = 1, //!< 時計回りに90度 56 ROTATION_CLOCKWISE_180 = 2, //!< 180度 57 ROTATION_CLOCKWISE_270 = 3 //!< 時計回りに270度(反時計回りに90度) 58 }; 59 60 /*! 61 @brief 出力バッファ配列を示す列挙体です。 62 */ 63 enum BlockAlignment 64 { 65 BLOCK_LINE = 0, //!< 水平ラインフォーマット 66 BLOCK_8_BY_8 = 1 //!< 8x8ブロックフォーマット 67 }; 68 69 /*! 70 @brief YUVからRGBへの変換係数を示す構造体です。 71 72 :private 73 74 計算式は以下のとおり 75 R = Y_A * Y + R_V * V + R_Offset 76 G = Y_A * Y - G_U * U - G_V * V + G_Offset 77 B = Y_A * Y + B_U * U + B_Offset 78 */ 79 struct CoefficientParams 80 { 81 u16 Y_A; 82 u16 R_V; 83 u16 G_V; 84 u16 G_U; 85 u16 B_U; 86 u16 R_Offset; 87 u16 G_Offset; 88 u16 B_Offset; 89 }; 90 91 /*! 92 @brief 標準的な変換係数を示す列挙体です。 93 */ 94 enum StandardCoefficient 95 { 96 COEFFICIENT_ITU_R_BT_601 = 0, //!< ITU-R BT.601 の変換係数。入力値の範囲は 0<=Y,U,V<=255。 97 COEFFICIENT_ITU_R_BT_709, //!< ITU-R BT.709 の変換係数。入力値の範囲は 0<=Y,U,V<=255。 98 COEFFICIENT_ITU_R_BT_601_SCALING, //!< ITU-R BT.601 の変換係数。入力値の範囲は 16<=Y<=235, 16<=U,V<=240。 99 COEFFICIENT_ITU_R_BT_709_SCALING, //!< ITU-R BT.709 の変換係数。入力値の範囲は 16<=Y<=235, 16<=U,V<=240。 100 101 COEFFICIENT_MAX 102 }; 103 104 /*! 105 @brief ディザリングパターンを示す構造体です。 106 107 時間的ディザリングが disable のとき、w0_* の設定値のみが使用されます。 108 空間的ディザリングが disable のとき、w*_xEven_yEven の設定値のみが使用されます。 109 各メンバ変数に指定する値は 0 から 3 の範囲でなければいけません。 110 */ 111 struct DitheringWeightParams 112 { 113 u16 w0_xEven_yEven; //!< 時間0, x座標が偶数, y座標が偶数 の画素に対する重み 114 u16 w0_xOdd_yEven; //!< 時間0, x座標が奇数, y座標が偶数 の画素に対する重み 115 u16 w0_xEven_yOdd; //!< 時間0, x座標が偶数, y座標が奇数 の画素に対する重み 116 u16 w0_xOdd_yOdd; //!< 時間0, x座標が奇数, y座標が奇数 の画素に対する重み 117 118 u16 w1_xEven_yEven; //!< 時間1, x座標が偶数, y座標が偶数 の画素に対する重み 119 u16 w1_xOdd_yEven; //!< 時間1, x座標が奇数, y座標が偶数 の画素に対する重み 120 u16 w1_xEven_yOdd; //!< 時間1, x座標が偶数, y座標が奇数 の画素に対する重み 121 u16 w1_xOdd_yOdd; //!< 時間1, x座標が奇数, y座標が奇数 の画素に対する重み 122 123 u16 w2_xEven_yEven; //!< 時間2, x座標が偶数, y座標が偶数 の画素に対する重み 124 u16 w2_xOdd_yEven; //!< 時間2, x座標が奇数, y座標が偶数 の画素に対する重み 125 u16 w2_xEven_yOdd; //!< 時間2, x座標が偶数, y座標が奇数 の画素に対する重み 126 u16 w2_xOdd_yOdd; //!< 時間2, x座標が奇数, y座標が奇数 の画素に対する重み 127 128 u16 w3_xEven_yEven; //!< 時間3, x座標が偶数, y座標が偶数 の画素に対する重み 129 u16 w3_xOdd_yEven; //!< 時間3, x座標が奇数, y座標が偶数 の画素に対する重み 130 u16 w3_xEven_yOdd; //!< 時間3, x座標が偶数, y座標が奇数 の画素に対する重み 131 u16 w3_xOdd_yOdd; //!< 時間3, x座標が奇数, y座標が奇数 の画素に対する重み 132 }; 133 134 /*! 135 @brief パラメータの一括設定用の構造体です。 136 */ 137 struct PackageParameter 138 { 139 InputFormat inputFormat; //!< SetInputFormat で指定する値 140 OutputFormat outputFormat; //!< SetOutputFormat で指定する値 141 Rotation rotation; //!< SetRotation で指定する値 142 BlockAlignment blockAlignment; //!< SetBlockAlignment で指定する値 143 s16 inputLineWidth; //!< SetInputLineWidth で指定する値 144 s16 inputLines; //!< SetInputLines で指定する値 145 StandardCoefficient standardCoefficientNo; //!< SetStandardCoefficientParams で指定する値 146 NN_PADDING1; 147 s16 alpha; //!< SetAlpha で指定する値 148 }; 149 150 } // namespace CTR 151 } // namespace y2r 152 } // namespace nn 153 154 #endif //NN_Y2R_CTR_Y2R_Y2RTYPES_H_ 155