18d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/******************************************************************************
28d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
38d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Copyright (C) 2015 The Android Open Source Project
48d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
58d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Licensed under the Apache License, Version 2.0 (the "License");
68d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * you may not use this file except in compliance with the License.
78d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * You may obtain a copy of the License at:
88d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
98d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * http://www.apache.org/licenses/LICENSE-2.0
108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Unless required by applicable law or agreed to in writing, software
128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * distributed under the License is distributed on an "AS IS" BASIS,
138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * See the License for the specific language governing permissions and
158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * limitations under the License.
168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *
178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *****************************************************************************
188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/
208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**
228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*******************************************************************************
238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @file
248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  ih264e_fmt_conv.h
258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @brief
278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  The file contains extern declarations of color space conversion routines
288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @author
308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  ittiam
318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @remarks
338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*  None
348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*
358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*******************************************************************************
368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/
378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#ifndef IH264E_FMT_CONV_H_
398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define IH264E_FMT_CONV_H_
408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define COEFF1          13073
428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define COEFF2          -3207
438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define COEFF3          -6664
448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define COEFF4          16530
458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SIH264E_ERROR_T ih264e_fmt_conv(codec_t *ps_codec,
478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                               pic_buf_t *ps_pic,
488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                               UWORD8 *pu1_y_dst,
498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                               UWORD8 *pu1_u_dst,
508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                               UWORD8 *pu1_v_dst,
518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                               UWORD32 u4_dst_y_strd,
528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                               UWORD32 u4_dst_uv_strd,
538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                               WORD32 cur_row,
548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                               WORD32 num_rows);
558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef void ih264e_fmt_conv_420sp_to_rgba8888_ft(UWORD8 *pu1_y_src,
578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  UWORD8 *pu1_uv_src,
588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  UWORD32 *pu4_rgba_dst,
598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  WORD32 wd,
608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  WORD32 ht,
618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  WORD32 src_y_strd,
628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  WORD32 src_uv_strd,
638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  WORD32 dst_strd,
648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                  WORD32 is_u_first);
658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef void ih264e_fmt_conv_420sp_to_rgb565_ft(UWORD8 *pu1_y_src,
678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                UWORD8 *pu1_uv_src,
688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                UWORD16 *pu2_rgb_dst,
698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                WORD32 wd,
708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                WORD32 ht,
718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                WORD32 src_y_strd,
728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                WORD32 src_uv_strd,
738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                WORD32 dst_strd,
748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                                WORD32 is_u_first);
758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef void ih264e_fmt_conv_420sp_to_420sp_ft(UWORD8 *pu1_y_src,
778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                               UWORD8 *pu1_uv_src,
788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                               UWORD8 *pu1_y_dst,
798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                               UWORD8 *pu1_uv_dst,
808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                               WORD32 wd,
818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                               WORD32 ht,
828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                               WORD32 src_y_strd,
838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                               WORD32 src_uv_strd,
848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                               WORD32 dst_y_strd,
858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                               WORD32 dst_uv_strd);
868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef void ih264e_fmt_conv_420sp_to_420p_ft(UWORD8 *pu1_y_src,
888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                              UWORD8 *pu1_uv_src,
898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                              UWORD8 *pu1_y_dst,
908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                              UWORD8 *pu1_u_dst,
918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                              UWORD8 *pu1_v_dst,
928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                              WORD32 wd,
938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                              WORD32 ht,
948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                              WORD32 src_y_strd,
958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                              WORD32 src_uv_strd,
968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                              WORD32 dst_y_strd,
978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                              WORD32 dst_uv_strd,
988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                              WORD32 is_u_first,
998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                              WORD32 disable_luma_copy);
1008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef void ih264e_fmt_conv_420p_to_420sp_ft(UWORD8 *pu1_y_src, UWORD8 *pu1_u_src, UWORD8 *pu1_v_src,
1028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                              UWORD8 *pu1_y_dst, UWORD8 *pu1_uv_dst,
1038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                              UWORD16 u2_height, UWORD16 u2_width, UWORD16 src_y_strd,
1048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                              UWORD16 src_u_strd, UWORD16 src_v_strd,
1058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                              UWORD16 dst_y_strd, UWORD16 dst_uv_strd,
1068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                              UWORD32 convert_uv_only);
1078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef void ih264e_fmt_conv_422i_to_420sp_ft(UWORD8 *pu1_y_buf,UWORD8 *pu1_u_buf,UWORD8 *pu1_v_buf,
1098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                              UWORD8 *pu1_422i_buf,
1108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                              WORD32 u4_y_width,WORD32 u4_y_height,
1118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                              WORD32 u4_y_stride,WORD32 u4_u_stride,WORD32 u4_v_stride,
1128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S                                              WORD32 u4_422i_stride);
1138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* C function declarations */
1168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sih264e_fmt_conv_420sp_to_rgba8888_ft    ih264e_fmt_conv_420sp_to_rgba8888;
1178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sih264e_fmt_conv_420sp_to_rgb565_ft      ih264e_fmt_conv_420sp_to_rgb565;
1188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sih264e_fmt_conv_420sp_to_420sp_ft       ih264e_fmt_conv_420sp_to_420sp;
1198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sih264e_fmt_conv_420sp_to_420p_ft        ih264e_fmt_conv_420sp_to_420p;
1208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sih264e_fmt_conv_420p_to_420sp_ft        ih264e_fmt_conv_420p_to_420sp;
1218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sih264e_fmt_conv_422i_to_420sp_ft        ih264e_fmt_conv_422i_to_420sp;
1228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* A9Q function declarations */
1248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sih264e_fmt_conv_420sp_to_rgba8888_ft    ih264e_fmt_conv_420sp_to_rgba8888_a9q;
1258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sih264e_fmt_conv_420sp_to_420sp_ft       ih264e_fmt_conv_420sp_to_420sp_a9q;
1268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sih264e_fmt_conv_420sp_to_420p_ft        ih264e_fmt_conv_420sp_to_420p_a9q;
1278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sih264e_fmt_conv_420p_to_420sp_ft        ih264e_fmt_conv_420p_to_420sp_a9q;
1288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sih264e_fmt_conv_422i_to_420sp_ft        ih264e_fmt_conv_422i_to_420sp_a9q;
1298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* A9A function declarations */
1328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sih264e_fmt_conv_420sp_to_rgba8888_ft ih264e_fmt_conv_420sp_to_rgba8888_a9a;
1338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sih264e_fmt_conv_420sp_to_420sp_ft ih264e_fmt_conv_420sp_to_420sp_a9a;
1348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sih264e_fmt_conv_420sp_to_420p_ft ih264e_fmt_conv_420sp_to_420p_a9a;
1358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* SSSe31 function declarations */
1378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sih264e_fmt_conv_420sp_to_420p_ft ih264e_fmt_conv_420sp_to_420p_ssse31;
1388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* SSE4 function declarations */
1408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sih264e_fmt_conv_420sp_to_420p_ft ih264e_fmt_conv_420sp_to_420p_sse42;
1418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S
1428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif /* IH264E_FMT_CONV_H_ */
143