17c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* 27c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Copyright (C) 2011 The Android Open Source Project 37c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * 47c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Licensed under the Apache License, Version 2.0 (the "License"); 57c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * you may not use this file except in compliance with the License. 67c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * You may obtain a copy of the License at 77c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * 87c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * http://www.apache.org/licenses/LICENSE-2.0 97c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * 107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Unless required by applicable law or agreed to in writing, software 117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * distributed under the License is distributed on an "AS IS" BASIS, 127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * See the License for the specific language governing permissions and 147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * limitations under the License. 157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */ 167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /** 177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @file M4TRAN_transition.h 197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief 207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note 217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ****************************************************************************** 227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/ 237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef __M4VFL_TRANSITION_H__ 257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define __M4VFL_TRANSITION_H__ 267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef __cplusplus 287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargiextern "C" { 297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif 307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef unsigned char UInt8; 317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef unsigned long UInt32; 327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct S_M4ViComImagePlane 347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi UInt32 u_width; /* active width, in pixels */ 367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi UInt32 u_height; /* active height, in lines */ 377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi UInt32 u_topleft; /* index of 1st active pixel */ 387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi UInt32 u_stride; /* line stride, in bytes */ 397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi UInt8 *pac_data; /* buffer address */ 407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4ViComImagePlane; 417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct S_M4VFL_modifLumParam 437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi unsigned short lum_factor; 457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi unsigned short copy_chroma; 467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} M4VFL_ModifLumParam; 477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_OK 0 497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ILLEGAL_FRAME_HEIGHT 8 507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define M4VIFI_ILLEGAL_FRAME_WIDTH 9 517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargiunsigned char M4VFL_modifyLumaByStep(M4ViComImagePlane *plane_in, M4ViComImagePlane *plane_out, 537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4VFL_ModifLumParam *lum_param, void *user_data); 547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargiunsigned char M4VFL_modifyLumaWithScale(M4ViComImagePlane *plane_in, M4ViComImagePlane *plane_out, 567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi unsigned long lum_factor, void *user_data); 577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ************************************************************************************************* 607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * M4OSA_ERR M4VIFI_ImageBlendingonYUV420 (void *pUserData, 617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * M4VIFI_ImagePlane *pPlaneIn1, 627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * M4VIFI_ImagePlane *pPlaneIn2, 637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * M4VIFI_ImagePlane *pPlaneOut, 647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * M4VIFI_UInt32 Progress) 657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief Blends two YUV 4:2:0 Planar images. 667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note Blends YUV420 planar images, 677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Map the value of progress from (0 - 1000) to (0 - 1024) 687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Set the range of blendingfactor, 697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * 1. from 0 to (Progress << 1) ;for Progress <= 512 707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * 2. from (( Progress - 512)<< 1) to 1024 ;otherwise 717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Set the increment of blendingfactor for each element in the image row by the factor, 727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * = (Range-1) / (image width-1) ;for width >= range 737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * = (Range) / (image width) ;otherwise 747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Loop on each(= i) row of output Y plane (steps of 2) 757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Loop on each(= j) column of output Y plane (steps of 2) 767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Get four Y samples and one U & V sample from two input YUV4:2:0 images and 777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Compute four Y sample and one U & V sample for output YUV4:2:0 image 787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * using the following, 797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Out(i,j) = blendingfactor(i,j) * In1(i,j)+ (l - blendingfactor(i,j)) * In2(i,j) 807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * end loop column 817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * end loop row. 827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param pUserData: (IN) User Specific Parameter 837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param pPlaneIn1: (IN) Pointer to an array of image plane structures maintained for Y, U 847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * and V planes. 857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param pPlaneIn2: (IN) Pointer to an array of image plane structures maintained for Y, U 867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * and V planes. 877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param pPlaneOut: (OUT) Pointer to an array of image plane structures maintained for Y, U 887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * and V planes. 897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param Progress: (IN) Progress value (varies between 0 and 1000) 907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return M4VIFI_OK: No error 917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return M4VIFI_ILLEGAL_FRAME_HEIGHT: Error in height 927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return M4VIFI_ILLEGAL_FRAME_WIDTH: Error in width 937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ***********************************************************************************************/ 947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargiunsigned char M4VIFI_ImageBlendingonYUV420 (void *pUserData, M4ViComImagePlane *pPlaneIn1, 957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4ViComImagePlane *pPlaneIn2, 967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4ViComImagePlane *pPlaneOut, UInt32 Progress); 977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef __cplusplus 997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} 1007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* __cplusplus */ 1017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif // __M4VFL_TRANSITION_H__ 103