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