1e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard/* 2e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** Copyright 2003-2010, VisualOn, Inc. 3e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** 4e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** Licensed under the Apache License, Version 2.0 (the "License"); 5e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** you may not use this file except in compliance with the License. 6e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** You may obtain a copy of the License at 7e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** 8e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** http://www.apache.org/licenses/LICENSE-2.0 9e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** 10e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** Unless required by applicable law or agreed to in writing, software 11e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** distributed under the License is distributed on an "AS IS" BASIS, 12e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** See the License for the specific language governing permissions and 14e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** limitations under the License. 15e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard */ 16e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 17e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard/*********************************************************************** 18e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard* File: util.c * 19e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard* * 20e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard* Description: Reset and Copy buffer * 21e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard* * 22e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard************************************************************************/ 23e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 24e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard#include "typedef.h" 25e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard#include "basic_op.h" 26e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 27e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard/*********************************************************************** 28e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard* Function: Set_zero() * 29e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard* Description: Set vector x[] to zero * 30e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard************************************************************************/ 31e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 32e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgardvoid Set_zero( 335d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen Word16 x[], /* (o) : vector to clear */ 345d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen Word16 L /* (i) : length of vector */ 355d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen ) 36e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard{ 375d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen Word32 num = (Word32)L; 385d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen while (num > 0) { 395d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen *x++ = 0; 409dd01777aa14bbb90a6cdccf97383bb4e3d717a5Wei Jia --num; 415d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen } 42e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard} 43e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 44e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 45e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard/********************************************************************* 46e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard* Function: Copy() * 47e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard* * 48e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard* Description: Copy vector x[] to y[] * 49e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard*********************************************************************/ 50e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 51e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgardvoid Copy( 525d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen Word16 x[], /* (i) : input vector */ 535d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen Word16 y[], /* (o) : output vector */ 545d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen Word16 L /* (i) : vector length */ 555d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen ) 56e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard{ 575d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen Word32 temp1,temp2,num; 589dd01777aa14bbb90a6cdccf97383bb4e3d717a5Wei Jia if (L <= 0) { 599dd01777aa14bbb90a6cdccf97383bb4e3d717a5Wei Jia return; 609dd01777aa14bbb90a6cdccf97383bb4e3d717a5Wei Jia } 615d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen if(L&1) 625d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen { 635d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen temp1 = *x++; 645d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen *y++ = temp1; 655d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen } 665d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen num = (Word32)(L>>1); 675d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen while (num > 0) { 685d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen temp1 = *x++; 695d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen temp2 = *x++; 705d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen *y++ = temp1; 715d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen *y++ = temp2; 729dd01777aa14bbb90a6cdccf97383bb4e3d717a5Wei Jia --num; 735d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen } 74e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard} 75e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 76e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 77e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 78