1219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard/* 2219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** Copyright 2003-2010, VisualOn, Inc. 3219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** 4219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** Licensed under the Apache License, Version 2.0 (the "License"); 5219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** you may not use this file except in compliance with the License. 6219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** You may obtain a copy of the License at 7219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** 8219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** http://www.apache.org/licenses/LICENSE-2.0 9219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** 10219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** Unless required by applicable law or agreed to in writing, software 11219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** distributed under the License is distributed on an "AS IS" BASIS, 12219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** See the License for the specific language governing permissions and 14219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** limitations under the License. 15219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard */ 16219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 17219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard/*********************************************************************** 18219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard* File: util.c * 19219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard* * 20219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard* Description: Reset and Copy buffer * 21219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard* * 22219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard************************************************************************/ 23219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 24219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard#include "typedef.h" 25219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard#include "basic_op.h" 26219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 27219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard/*********************************************************************** 28219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard* Function: Set_zero() * 29219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard* Description: Set vector x[] to zero * 30219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard************************************************************************/ 31219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 32219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgardvoid Set_zero( 33219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard Word16 x[], /* (o) : vector to clear */ 34219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard Word16 L /* (i) : length of vector */ 35219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ) 36219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard{ 37219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard Word32 num = (Word32)L; 38219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard do{ 39219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard *x++ = 0; 40219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard }while(--num !=0); 41219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard} 42219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 43219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 44219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard/********************************************************************* 45219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard* Function: Copy() * 46219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard* * 47219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard* Description: Copy vector x[] to y[] * 48219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard*********************************************************************/ 49219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 50219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgardvoid Copy( 51219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard Word16 x[], /* (i) : input vector */ 52219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard Word16 y[], /* (o) : output vector */ 53219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard Word16 L /* (i) : vector length */ 54219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ) 55219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard{ 56219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard Word32 temp1,temp2,num; 57219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard if(L&1) 58219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard { 59219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard temp1 = *x++; 60219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard *y++ = temp1; 61219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard } 62219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard num = (Word32)(L>>1); 63219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard temp1 = *x++; 64219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard temp2 = *x++; 65219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard do{ 66219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard *y++ = temp1; 67219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard *y++ = temp2; 68219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard temp1 = *x++; 69219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard temp2 = *x++; 70219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard }while(--num!=0); 71219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard} 72219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 73219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 74219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 75