Do you or anyone on the list know if there are code examples on the DVSDK that show you how to do audio I/O on the DSP side? I will receive the DVSDK development kit next week. I really need to offload audio I/O processing to the DSP side to reserve the ARM CPU for a lot of real-time critical processing.
Thanks, Andy ----- Original Message ---- From: "Ring, Chris" <[EMAIL PROTECTED]> To: Andy Ngo <[EMAIL PROTECTED]> Sent: Tuesday, January 2, 2007 12:51:43 PM Subject: RE: Sample AIC33 loopback test Privately, I don't know anything about the performance of the Linux drivers TI/MontaVista provides - hopefully someone else on the list will respond. Chris > -----Original Message----- > From: Andy Ngo [mailto:[EMAIL PROTECTED] > Sent: Tuesday, January 02, 2007 10:29 AM > To: Ring, Chris; [email protected] > Subject: Re: Sample AIC33 loopback test > > Hi Chris, > > Thank you for your response; at least now I know why not many > people are > trying to do I/O on the DSP side. Basically, the ARM > application is an IP > application that sends and receives the encoded data via IP > from another > ARM application (on another DaVinci board); so basically the > ARM application > just acts like a routing and transporting agent (multicast) > of encoded data to ARM > applications and I want the DSP side to do the bulk of the > work (sampling and > encoding, decoding and playback). The reason so is that for > the project I'm > working on, I need to reserve the ARM CPU for real time > critical processing and > I don't want to waste any time on it doing I/O (sampling and > playback). How > efficient is the Linux OSS driver on the ARM side? Can it do > full duplex? > I'm worried that having I/O done on the ARM side will slow it > down while the > DSP side is not doing much (the ARM application will be doing > a lot of time > critical processing in our final custom hardware). Also, is > there an ALSA > implementation of the sound driver for Linux? Your advice is deeply > appreciated. > > Regards, > Andy > > > ----- Original Message ---- > From: "Ring, Chris" <[EMAIL PROTECTED]> > To: Andy Ngo <[EMAIL PROTECTED]>; > [email protected] > Sent: Tuesday, January 2, 2007 7:16:31 AM > Subject: RE: Sample AIC33 loopback test > > Briefly, one reason you're probably not seeing to much > response to this > is that, for support reasons, TI is encouraging I/O take place via > ARM-side device drivers. This is to avoid things like ARM/DSP > peripheral ownership collisions - e.g. what if someone reads from > /dev/dsp on the ARM at the same time your DSP-side driver is reading > from it? (I realize you can constrain your system to avoid this) > > Codec Engine itself doesn't support I/O as a side effect of > calling its > "VISA" API's. That is, when an ARM-side application calls, > for example, > AUDENC_process(), it's a blocking call that returns the encoded data > back to the ARM-side app. No I/O occurs within AUDENC_process(). > There's nothing like a "AUDENC_readAndEncodeNextBlockOfData()" API, > which your diagram may be suggesting. > > If you _really_ need to do I/O on the DSP side, you might want to > consider using your own DSP Link-based framework to move data from the > ARM->DSP or vise-versa. Note that you can still use Codec Engine APIs > _on the DSP-side_ to invoke "local" DSP-side codecs. This is not the > traditional use case exemplified in the demos, but can be supported by > the software in the DVEVM/DVSDK. The data flow might look > like this for > a "player": > > 1. ARM-side app reads encoded data (from disk?) > 2. ARM-side app uses Link APIs (like MSGQ_put) to send > data from ARM > to DSP. > 3. DSP-side app uses Link APIs (like MSGQ_get) to receive data from > ARM. > 4. DSP-side app uses CE APIs (like AUDDEC_process) on a locally > configured codec to decode data. > 5. DSP-side app plays decoded data out using a DSP-side device > driver. > > This will be more work, and I don't know of any examples of this, but > it's possible. I'd encourage you revisit your requirement that I/O > occur on the DSP-side - if it can take place on the ARM, I > think you're > well enabled. > > A few direct replies also inline'd below... > > Chris > > > -----Original Message----- > > From: [EMAIL PROTECTED] > > [mailto:[EMAIL PROTECTED] > ] On Behalf Of Andy Ngo > > Sent: Thursday, December 21, 2006 5:53 PM > > To: [email protected] > > Subject: Re: Sample AIC33 loopback test > > > > In trying to figure out the topic I posted below, I searched > > through the DaVinci audio driver (in > > /opt/mv_pro_4.0/montavista/pro/devkit/lsp/ti-davinci/sound/oss > ) and noticed that it doesn't use > > any CE API. Does this mean all the audio processing is done > > on the ARM side? > > Audio I/O is done on the ARM (e.g. this OSS driver). An app > acquires/plays raw data using these drivers. > > Audio processing is typically done on the DSP, when the same > application > uses the CE APIs to encode or decode a buffer of data. > > > The project > > I'm working on requires me to offload all the audio > > processing (reading samples in and writing > > samples out) to the DSP side; the ARM side is reserved for a > > very critical real-time application > > so I need to do all audio processing on the DSP side. Does > > this mean I can't use the Linux > > driver for my requirements? > > Where does the encoded data live? On an ARM-side disk drive > or device? > If so, you'll have to do at least half the I/O (reading/writing the > encoded data to/from disk) on the ARM. > > > How do the demo programs do it; > > for example for the g711 > > encoding, does it use the ARM side to sample the audio (via > > the audio driver), send it via CE > > API to the DSP side to encode the data into g711 and the > > resulting encoded file is sent back > > to the ARM side and saved on the filesystem? If that's the > > case, for g711 decoding, the > > ARM side gvies the encoded data to the DSP side via CE API, > > which decodes it and gives > > it back the ARM side to play the decoded audio via the audio > > driver; am I correct? > > Exactly. > > > For my > > project, the ARM side is only used to exchange encoded data > > with the DSP side, which does > > all the process (sample and encode, decode and playback). > > Any advice/comment is > > appreciated! > > > > Regards, > > Andy > > > > ----- Original Message ---- > > From: Andy Ngo <[EMAIL PROTECTED]> > > To: [email protected] > > Sent: Thursday, December 21, 2006 2:49:10 PM > > Subject: Sample AIC33 loopback test > > > > > > Hi, > > > > Does anyone have or know if there's a sample DSP loopback > > program that samples the AIC33 mic input (like say 8Khz, > mono, 16-bit) > > and then plays it through the AIC33 headphone output? I know > > I can do this on the ARM side by accessing the /dev/dsp > device, but I > > need to access the mic input and headphone output directly > > from the DSP side. Basically, I want to create a DSP codec > > that reads from > > AIC33 mic input and sends the data to the ARM side (via CE > > API) and vice versa: gets data from the ARM side and writes > > it to the AIC33 > > headphone output. I looked at the encode/decode examples in > > the DVSDK but still don't know how to access ore make use of the > > AIC33. Sorry, I'm very new to the TI DSP development > > environment and don't know much; I spent the last week just > > learning about > > xDAIS and DSP/BIOS by going through the CCS 3.2 tutorial. > > Your help is much appreciated. Thanks. > > > > > > Basic flow diagram: > > > > DSP side > > > > AIC33 > > headphone output <------- DSP codec <--------- CE API > > <--------- simple ARM application > > > > AIC33 > > microphone input -------> DSP codec ---------> CE API > > ----------> simple ARM application > > > > > > Regards, > > Andy Ngo > > _______________________________________________ > > Davinci-linux-open-source mailing list > > [email protected] > > > http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source > > _______________________________________________ > > Davinci-linux-open-source mailing list > > [email protected] > > > http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source > > > > > > _______________________________________________ Davinci-linux-open-source mailing list [email protected] http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
