Find Jobs
Hire Freelancers

Audio Processing Shared Library on Linux(repost)

$100-500 USD

En curso
Publicado hace casi 14 años

$100-500 USD

Pagado a la entrega
We are looking for an audio processing shared library (.so) that can be called from a program written in C# for Mono in Linux. The .so will work mainly with memory resident byte arrays but will also need to create a file from memory resident data in GSM 6.10 format. We are looking for the following functionality: 1. Convert a byte array from PCM audio to GSM and GSM to PCM 2. Capture microphone input in either PCM or GSM into byte array 3. Play audio on speakers from byte array input 4. Write GSM 6.10 file from byte array data 5. Documentation on library and installation of necessary components The .so will be written in c such that it can be called from a C# program written with MonoDevelop on Linux (more information below). openSUSE is our development environment but the .so will also need to run on Debian and RHEL5. We anticipate the use of the GStreamer library in the .so. Other approaches that achieve the same results are highly encouraged. Mono knowledge is highly valued. ## Deliverables Planned Use The software will be used in a distance learning environment over the Internet. It is an enhancement to an existing application currently running on Windows. The student's PC will capture audio from either the PC's microphone or a USB (ttyUSB0) device in 8 bit, 8000mhz, PCM format. The audio from either source is converted to GSM 6.10 (also 8 bit, 8000mhz mono) and sent via .Net sockets to an audio server for processing. The student's PC will also receive GSM audio from the instructor via sockets and will be played on the student's PC speakers. Students are also able to record audio and create a file locally that will be sent via FTP to a storage location for later processing. The recorded audio file will be converted into .flv format on the server using ffmpeg, but the library needs to create the audio file in a format that ffmpeg can use to create the .flv. Development and Execution Environments The student application is currently written in C# using MonoDevelop 2.2.2 running Mono 2.6.3 on openSUSE. The .so needs to be able to be called from C#. Please reference [login to view URL] for further information on interacting with unmanaged code in Mono. Other execution environments will include Debian and RHEL5. We anticipate the use of the GStreamer library to do the actual audio functions like Banshee did (see example in libBanshee sources). Deliverables We anticipate the use of a Linux .so, written in c, that can be called from C# using Mono. This program will primarily deal with PCM and GSM 6.10 audio in byte arrays rather than files, although one function will be to create a file in GSM 6.10 format. Our development environment is openSUSE but this will have to run on Debian and RHEL5. The program will support the following four functions. Included with each function is pseudo-code that illustrates how the C# program might call that function. 1. Conversion of byte array audio // byte arrays will be received from a USB RF receiver in PCM format // They will be converted to GSM and sent via IP to a remote location for playback // type = type of conversion // 1 = PCM to GSM 6.10 // 2 = GSM 6.10 to PCM byte[] outBuff = CADEconvert(byte[] inBuff,int type); 2. Play audio on default PC speakers // The byte arrays will be received from a remote IP connection // inBuff is byte array of PCM or GSM audio // function will return an error code if audio can't be played bool canPlay = CADEPlay(byte[] inBuff); 3. Get microphone output into byte array // Microphone input is captured, converted to GSM if necessary, and sent via IP // function will return an error code if the operation cannot be completed // outBuff is a byte array of PCM or GSM audio int err = [login to view URL](); // Opens the microphone and starts recording [login to view URL](); // Closes the microphone and stops recording CADEMicHandler(byte[] outBuff); // Event fires when outBuffer has audio data 4. Write byte array to create a GSM 6.10 formatted file // Audio is received via the microphone or USB RF receiver // Audio converted into GSM format if necessary and written to a file // function will return an error code if the operation cannot be completed // inBuff is byte array of GSM audio int err = [login to view URL](string fileName); // Opens the specified file and formats for output int err = [login to view URL](byte[] inBuff); // Writes audio data to the file int err = [login to view URL](); // Closes the file Bidders should describe their approach, what 3rd party libraries (if any) are required, installation requirements, and sample calling functions. We also encourage creativity and if you have a better approach than calling unmanaged code from C#, we would welcome your ideas. We're not necessarily happy about that, but haven't been able to find a better solution. Our objective is to make the audio processing as efficient and as high quality as possible.
ID del proyecto: 3379775

Información sobre el proyecto

Proyecto remoto
Activo hace 14 años

¿Buscas ganar dinero?

Beneficios de presentar ofertas en Freelancer

Fija tu plazo y presupuesto
Cobra por tu trabajo
Describe tu propuesta
Es gratis registrarse y presentar ofertas en los trabajos

Sobre este cliente

Bandera de UNITED STATES
Ann Arbor, United States
4,9
5
Miembro desde nov 27, 2007

Verificación del cliente

¡Gracias! Te hemos enviado un enlace para reclamar tu crédito gratuito.
Algo salió mal al enviar tu correo electrónico. Por favor, intenta de nuevo.
Usuarios registrados Total de empleos publicados
Freelancer ® is a registered Trademark of Freelancer Technology Pty Limited (ACN 142 189 759)
Copyright © 2024 Freelancer Technology Pty Limited (ACN 142 189 759)
Cargando visualización previa
Permiso concedido para Geolocalización.
Tu sesión de acceso ha expirado y has sido desconectado. Por favor, inica sesión nuevamente.