eas_wt_IPC_frame.h revision a8c89077d78769bf4840fa91609edc51fe2fa02d
19d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org/*---------------------------------------------------------------------------- 29d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * 39d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * File: 49d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * eas_wt_IPC_frame.h 59d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * 69d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * Contents and purpose: 79d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * This module contains data definitions for the interprocessor 89d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * communications framework for a split-architecture synthesizer. 99d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * 109d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * This sample version writes IPC data to a file that can be used 11b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.org * as a test vector for the DSP simulator. For a real-time system 12b376fed08cb9d90a3f67f655adf63c4b35feb106machenbach@chromium.org * the file I/O is replaced with an IPC protocol in the hardware. 139d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * 149d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * Synchronization with the DSP is accomplished at the API level, 159d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * i.e. the host code should call EAS_Render when it is ready to 169d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * buffer another block of data for transmission to the DSP. 179d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * 189d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * Copyright Sonic Network Inc. 2005 199d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org 209d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * Licensed under the Apache License, Version 2.0 (the "License"); 219d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * you may not use this file except in compliance with the License. 229d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * You may obtain a copy of the License at 239d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * 249d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * http://www.apache.org/licenses/LICENSE-2.0 259d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * 269d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * Unless required by applicable law or agreed to in writing, software 279d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * distributed under the License is distributed on an "AS IS" BASIS, 289d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 299d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * See the License for the specific language governing permissions and 309d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * limitations under the License. 319d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * 329d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org *---------------------------------------------------------------------------- 339d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * Revision Control: 349d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * $Revision: 818 $ 359d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * $Date: 2007-08-02 15:19:41 -0700 (Thu, 02 Aug 2007) $ 369d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org *---------------------------------------------------------------------------- 379d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org*/ 389d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org 399d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org#ifndef _EAS_WT_IPC_FRAME_H 409d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org#define _EAS_WT_IPC_FRAME_H 419d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org 429d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org/*---------------------------------------------------------------------------- 439d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * S_WT_FRAME 449d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * 459d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org * This structure contains the common parameters that are updated 469d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org *for each frame of audio. 479d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org *---------------------------------------------------------------------------- 489d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.org*/ 499d1a7a8cdb664730cf5703185e85a4716748c564machenbach@chromium.orgtypedef struct s_wt_frame_tag 50{ 51 EAS_I32 gainTarget; 52 EAS_I32 phaseIncrement; 53 54#if defined(_FILTER_ENABLED) 55 EAS_I32 k; 56 EAS_I32 b1; 57 EAS_I32 b2; 58#endif 59} S_WT_FRAME; 60 61/*---------------------------------------------------------------------------- 62 * S_WT_CONFIG 63 * 64 * This structure contains state data for the wavetable engine 65 *---------------------------------------------------------------------------- 66*/ 67typedef struct s_wt_config_tag 68{ 69 EAS_U32 loopEnd; /* points to last PCM sample (not 1 beyond last) */ 70 EAS_U32 loopStart; /* points to first sample at start of loop */ 71 EAS_U32 phaseAccum; /* current sample, integer portion of phase */ 72 73#if (NUM_OUTPUT_CHANNELS == 2) 74 EAS_I16 gainLeft; /* left channel gain */ 75 EAS_I16 gainRight; /* right channel gain */ 76#endif 77 78 EAS_I16 gain; /* current voice gain */ 79} S_WT_CONFIG; 80 81#endif 82 83