1 /****************************************************************************** 2 * 3 * Copyright (C) 2015 The Android Open Source Project 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at: 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 ***************************************************************************** 18 * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19 */ 20 21 /** 22 ******************************************************************************* 23 * @file 24 * ih264e_fmt_conv.h 25 * 26 * @brief 27 * The file contains extern declarations of color space conversion routines 28 * 29 * @author 30 * ittiam 31 * 32 * @remarks 33 * None 34 * 35 ******************************************************************************* 36 */ 37 38 #ifndef IH264E_FMT_CONV_H_ 39 #define IH264E_FMT_CONV_H_ 40 41 #define COEFF1 13073 42 #define COEFF2 -3207 43 #define COEFF3 -6664 44 #define COEFF4 16530 45 46 IH264E_ERROR_T ih264e_fmt_conv(codec_t *ps_codec, 47 pic_buf_t *ps_pic, 48 UWORD8 *pu1_y_dst, 49 UWORD8 *pu1_u_dst, 50 UWORD8 *pu1_v_dst, 51 UWORD32 u4_dst_y_strd, 52 UWORD32 u4_dst_uv_strd, 53 WORD32 cur_row, 54 WORD32 num_rows); 55 56 typedef void ih264e_fmt_conv_420sp_to_rgba8888_ft(UWORD8 *pu1_y_src, 57 UWORD8 *pu1_uv_src, 58 UWORD32 *pu4_rgba_dst, 59 WORD32 wd, 60 WORD32 ht, 61 WORD32 src_y_strd, 62 WORD32 src_uv_strd, 63 WORD32 dst_strd, 64 WORD32 is_u_first); 65 66 typedef void ih264e_fmt_conv_420sp_to_rgb565_ft(UWORD8 *pu1_y_src, 67 UWORD8 *pu1_uv_src, 68 UWORD16 *pu2_rgb_dst, 69 WORD32 wd, 70 WORD32 ht, 71 WORD32 src_y_strd, 72 WORD32 src_uv_strd, 73 WORD32 dst_strd, 74 WORD32 is_u_first); 75 76 typedef void ih264e_fmt_conv_420sp_to_420sp_ft(UWORD8 *pu1_y_src, 77 UWORD8 *pu1_uv_src, 78 UWORD8 *pu1_y_dst, 79 UWORD8 *pu1_uv_dst, 80 WORD32 wd, 81 WORD32 ht, 82 WORD32 src_y_strd, 83 WORD32 src_uv_strd, 84 WORD32 dst_y_strd, 85 WORD32 dst_uv_strd); 86 87 typedef void ih264e_fmt_conv_420sp_to_420p_ft(UWORD8 *pu1_y_src, 88 UWORD8 *pu1_uv_src, 89 UWORD8 *pu1_y_dst, 90 UWORD8 *pu1_u_dst, 91 UWORD8 *pu1_v_dst, 92 WORD32 wd, 93 WORD32 ht, 94 WORD32 src_y_strd, 95 WORD32 src_uv_strd, 96 WORD32 dst_y_strd, 97 WORD32 dst_uv_strd, 98 WORD32 is_u_first, 99 WORD32 disable_luma_copy); 100 101 typedef void ih264e_fmt_conv_420p_to_420sp_ft(UWORD8 *pu1_y_src, UWORD8 *pu1_u_src, UWORD8 *pu1_v_src, 102 UWORD8 *pu1_y_dst, UWORD8 *pu1_uv_dst, 103 UWORD16 u2_height, UWORD16 u2_width, UWORD16 src_y_strd, 104 UWORD16 src_u_strd, UWORD16 src_v_strd, 105 UWORD16 dst_y_strd, UWORD16 dst_uv_strd, 106 UWORD32 convert_uv_only); 107 108 typedef void ih264e_fmt_conv_422i_to_420sp_ft(UWORD8 *pu1_y_buf,UWORD8 *pu1_u_buf,UWORD8 *pu1_v_buf, 109 UWORD8 *pu1_422i_buf, 110 WORD32 u4_y_width,WORD32 u4_y_height, 111 WORD32 u4_y_stride,WORD32 u4_u_stride,WORD32 u4_v_stride, 112 WORD32 u4_422i_stride); 113 114 115 /* C function declarations */ 116 ih264e_fmt_conv_420sp_to_rgba8888_ft ih264e_fmt_conv_420sp_to_rgba8888; 117 ih264e_fmt_conv_420sp_to_rgb565_ft ih264e_fmt_conv_420sp_to_rgb565; 118 ih264e_fmt_conv_420sp_to_420sp_ft ih264e_fmt_conv_420sp_to_420sp; 119 ih264e_fmt_conv_420sp_to_420p_ft ih264e_fmt_conv_420sp_to_420p; 120 ih264e_fmt_conv_420p_to_420sp_ft ih264e_fmt_conv_420p_to_420sp; 121 ih264e_fmt_conv_422i_to_420sp_ft ih264e_fmt_conv_422i_to_420sp; 122 123 /* A9Q function declarations */ 124 ih264e_fmt_conv_420sp_to_rgba8888_ft ih264e_fmt_conv_420sp_to_rgba8888_a9q; 125 ih264e_fmt_conv_420sp_to_420sp_ft ih264e_fmt_conv_420sp_to_420sp_a9q; 126 ih264e_fmt_conv_420sp_to_420p_ft ih264e_fmt_conv_420sp_to_420p_a9q; 127 ih264e_fmt_conv_420p_to_420sp_ft ih264e_fmt_conv_420p_to_420sp_a9q; 128 ih264e_fmt_conv_422i_to_420sp_ft ih264e_fmt_conv_422i_to_420sp_a9q; 129 130 131 /* A9A function declarations */ 132 ih264e_fmt_conv_420sp_to_rgba8888_ft ih264e_fmt_conv_420sp_to_rgba8888_a9a; 133 ih264e_fmt_conv_420sp_to_420sp_ft ih264e_fmt_conv_420sp_to_420sp_a9a; 134 ih264e_fmt_conv_420sp_to_420p_ft ih264e_fmt_conv_420sp_to_420p_a9a; 135 136 /* SSSe31 function declarations */ 137 ih264e_fmt_conv_420sp_to_420p_ft ih264e_fmt_conv_420sp_to_420p_ssse31; 138 139 /* SSE4 function declarations */ 140 ih264e_fmt_conv_420sp_to_420p_ft ih264e_fmt_conv_420sp_to_420p_sse42; 141 142 #endif /* IH264E_FMT_CONV_H_ */ 143