Find Jobs
Hire Freelancers

Create Ogg Vorbis plugin

$100-500 USD

Cerrado
Publicado hace alrededor de 18 años

$100-500 USD

Pagado a la entrega
Create a DLL capable of reading Ogg Vorbis files. The host application will read uncompressed audio (PCM) from/to the DLL. Upon receiving the first build of the DLL, we will supply a host application to use as a test harness. We recommend that the coder create a simple test harness to test initialization, file opening, and simple meta data editing. Each instance of the DLL will be single threaded. However, each instance may operate on a different thread. The DLL may not use ATL or MFC. Please use STL for arrays, lists, strings, etc. The code must use Unicode mode and support Unicode filenames and meta data. For reading, the host application will request data from different parts of the file. The DLL must be able to accurately seek to the right position, without having to scan the entire data stream from the beginning on each seek operation. This may require that the DLL perform an initial scan of the file to determine where each compressed data frame is. It will use this information to seek to the exact location needed to fulfill the request. ## Deliverables 1) Complete and fully-functional working DLL in source code form, that will compile in error and warning free way on Visual Studio 2003. 2) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement). Implement the following exported functions on the DLL: HRESULT CreateIPcmReader(IPcmReader** ppPcmReader); HRESULT CreateIMetaEditor(IMetaEditor** ppMetaEditor); Implement the following interfaces in the DLL, utilizing COM style AddRef and Release for instance management. For reading Ogg files: IPcmReader : public IUnknown { public: // Open the file. The profiling flag indicates a background scanning process that will sequentially read the entire file. virtual HRESULT STDMETHODCALLTYPE Open(PCWSTR pwzFileName, BOOL bProfiling) = 0; // Get the format of the decoded PCM, 44.1KHz 32-bit IEEE floating point in stereo is preferred. virtual HRESULT STDMETHODCALLTYPE GetFormatInfo(WAVEFORMATEX* pwfInfo, PDWORD pdwBitrate = NULL) = 0; // Determine whether the file opened successfully virtual HRESULT STDMETHODCALLTYPE IsValid() = 0; // Get the total length of decoded PCM virtual HRESULT STDMETHODCALLTYPE GetStreamLength(LONGLONG *pllByteLength) = 0; // Get the total number of decoded samples. For example, a single pair of left and right channel values is one sample virtual HRESULT STDMETHODCALLTYPE GetSampleCount(LONGLONG *pllCount) = 0; // Get the sample rate of the decoded PCM virtual HRESULT STDMETHODCALLTYPE GetSampleRate(ULONG *puSampleRate) = 0; // Read the decoded PCM utilizing the position of the the decoded stream. This routine must be sample accurate when positioning into the file. virtual HRESULT STDMETHODCALLTYPE LoadPcm(BYTE *pbData, LONGLONG llStreamBytePos, ULONG uLength) = 0; // Shut down any resources prior to final release of the interface virtual HRESULT STDMETHODCALLTYPE ShutDown(void) = 0; // The frame offset array is intended for accurate seeking into the stream. During the initial profiling of the stream, the DLL can record where each compressed data frame begins in the file. When seeking, it can use this information to seek to exactly the right part of the file, without having to do any scanning. The frame offset array is a data blob and can be in any format you like. For example, it could be an array of DWORDs indicating the file position of each data frame. virtual HRESULT STDMETHODCALLTYPE GetFrameOffsetArray(BYTE *pbData, ULONG *puDataSize) = 0; virtual HRESULT STDMETHODCALLTYPE SetFrameOffsetArray(BYTE *pbData, ULONG uSize) = 0; // Indicate to the host whether or not a frame offset data blob is used for this particular data file. virtual HRESULT STDMETHODCALLTYPE FrameOffsetArrayReq(void) = 0; }; // IMetaEditor is for reading and writing the tags using this set of numberical tags: #define CATITEMEL_SONGTITLE 0x0001 #define CATITEMEL_ALBUMTITLE 0x0002 #define CATITEMEL_ARTISTNAME 0x0003 #define CATITEMEL_RECORDINGYEAR 0x0005 #define CATITEMEL_GENRE 0x0006 #define CATITEMEL_COMMENTS 0x0009 #define CATITEMEL_LABEL 0x000A #define CATITEMEL_USER1 0x000B #define CATITEMEL_USER2 0x000C #define CATITEMEL_TRANSITION 0x000D #define CATITEMEL_COMPOSER 0x000F #define CATITEMEL_BPM 0x0100 #define CATITEMEL_TRACKNUMBER 0x0700 #define CATITEMEL_RATING 0x0900 #define CATITEMEL_KEY 0x0A00 IMetaEditor : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE GetMetaDataString(ULONG dwCatItemId, PCWSTR pszString, PDWORD pdwCharLen) = 0; virtual HRESULT STDMETHODCALLTYPE SetMetaDataString(ULONG dwCatItemId, PCWSTR pszString, DWORD dwCharLen) = 0; virtual HRESULT STDMETHODCALLTYPE MetaEditOpen(PCWSTR pszFileName) = 0; virtual HRESULT STDMETHODCALLTYPE GetMetaDataBin(BSTR bstrAttribName, BYTE* pbData, ULONG *puSize) = 0; virtual HRESULT STDMETHODCALLTYPE SetMetaDataBin(BSTR bstrAttribName, BYTE* pbData, ULONG uSize) = 0; }; ## Platform Must run on Windows XP and Wndows 2000.
ID del proyecto: 3388658

Información sobre el proyecto

3 propuestas
Proyecto remoto
Activo hace 18 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
3 freelancers están ofertando un promedio de $311 USD por este trabajo
Avatar del usuario
See private message.
$594,15 USD en 14 días
4,9 (18 comentarios)
6,0
6,0
Avatar del usuario
See private message.
$255 USD en 14 días
0,0 (0 comentarios)
0,0
0,0
Avatar del usuario
See private message.
$85 USD en 14 días
0,0 (0 comentarios)
0,0
0,0

Sobre este cliente

Bandera de UNITED STATES
United States
5,0
5
Miembro desde dic 8, 2005

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.