=====================================
 QUALCOMM PureVoice Windows SDK v2.1
=====================================

This QUALCOMM PureVoice SDK provides High level API's and Mid level API's 
that manipulates the wave and PureVoice files for 32-bit system(Win95, 
WIN98, NT 4.0).


High Level
  * Converts a wave file (8-kHz, 16-bit PCM) into PureVoice(.qcp)
    file and vice versa as well as memory based conversion.


Mid Level
  * Opens .qcp file in either READ or WRITE mode
  * Closes .qcp file
  * Reads blocks of PureVoice data and decodes to linear 8-kHz, 16-bit PCM 
    samples.
  * Writes blocks of PCM data into PureVoice format after encoding.
  * Retrieves a length of file in blocks.
  * Retrieves ablock size in milliseconds.

=========
 Content
=========
  * readme.txt (this file)

Files for Qualcomm PureVoice Library (QPL):
  * Qpl.dll  - PureVoice libraray
  * Qpl.lib  - Import LIB for QPl.dll
  * Qpl.h    - Contains the necessary defines and COM classes.
  * QplCom.h - Contains basic COM defines/functions and other misc 
               defines for Qualcomm PureVoice Library.

A sample program consists of Microsoft VC++ 6 project:
  * test.cpp - Sample source code
  * test.dsp - Project file
  * test.dsw - Project file
  * test.wav - Sample .WAV input file 

Command line wav<->qcp file conversion tool which can convert wave files 
into QCP files in different rate setttings, including a fixed fullrate:
  * PVConv.exe

=========================================================
Objects and their interfaces (see qpl.h for more detail)
=========================================================

 QPLPvQcpFile
  |
  --> IQPLConvertFile [converts .qcp <-> .wav files]
  |     |
  |     |-ConvertFile  convert qcp to wav and vice-versa
  |     |-GetProgress  get progress of conversion
  |
  --> IQPLQcpFile [reads or writes .qcp files]
        |-Open         open file
        |-Close        close file
        |-Read         read and decode
        |-Write        encode and write
        |-GetLength    get file length in milliseconds
	|-GetBlockSize get size of a block in milliseconds

------------------------------------------------------------------------------

 QPLPvQcpFile1
  |
  --> IQPLConvertFile1 [converts .qcp <-> .wav files]
  |     |
  |     |-ConvertFile  convert qcp to wav and vice-versa
  |     |-GetProgress  get progress of conversion
  |
  --> IQPLQcpFile1 [reads or writes .qcp files]
        |-Open         open file
        |-Close        close file
        |-Read         read and decode
        |-Write        encode and write
        |-GetLength    get file length in milliseconds
	|-GetBlockSize get size of a block in milliseconds

Note: 

QPLPvQcpFile1 is exactly same as QPLPvQcpFile except that one can specify
the encoding level to the following:
 - QPL_QCELP_FULL_MAX    full max rate (variable rate 14000 bps max) 
 - QPL_QCELP_FULL_FIXED  full fixed rate (14000 bps)
 - QPL_QCELP_HALF_MAX    half max rate (variable rate 6800 bps max)
 - QPL_QCELP_HALF_FULL   half fixed rate (6800 bps)
QPL_QCELP_FULL_MAX is default.

------------------------------------------------------------------------------

 QPLPvCodec
  |
  --> IQPLPvHrCodec [PureVoice Fixed Half Rate Codec (6800 bps)]
        |
        |-Reset    initialize CODEC
        |-GetInfo  get info on CODEC
        |-Convert  encode or decode depending on mode set in Reset
 
------------------------------------------------------------------------------

 QPLPvCodec1
  |
  --> IQPLPvVrHrCodec [PureVoice Variable Half Rate Codec (Max 6800 bps)]
        |
        |-Reset    initialize CODEC
        |-GetInfo  get info on CODEC
        |-Convert  encode or decode depending on mode set in Reset

------------------------------------------------------------------------------

 QPLPvCodec2
  |
  --> IQPLPvFrCodec [PureVoice Fixed Full Rate Codec (14000 bps)]
        |
        |-Reset    initialize CODEC
        |-GetInfo  get info on CODEC
        |-Convert  encode or decode depending on mode set in Reset

------------------------------------------------------------------------------

 QPLPvCodec3
  |
  --> IQPLPvVrFrCodec [PureVoice Variable Full Rate Codec (Max 14000 bps)]
        |
        |-Reset    initialize CODEC
        |-GetInfo  get info on CODEC
        |-Convert  encode or decode depending on mode set in Reset

------------------------------------------------------------------------------

==============================
CHANGES SINCE 2.0
==============================
Added validation of wave file. Accept 8000 Hz and 16-bit only.

Switched descriptions for -e 2 and 3 to be correct for PVconv.exe

Sets the avgBitsPerSec correctly for each mode(no longer fixed at 8000)

Sets sizeInPackett in the 'vrat' chunk for fixed full-rate mode also to 
support CDMA MSM3100 and beyond VoiceMemo support. 

Added PVConv.exe example with SDK, which is a command line interface
which converts PCM (mono, 8 kHz, 16-bit) wave file to PureVoice qcp file using 
different encoding mode(Variable Rate, Full Fixed, Half Max Variable and 
Half Fixed) and vice-versa.

==============================
FAQ
==============================
Q: There is one extra byte at the end of the file.
A: This is by design. The QCP file will always word aligned. So if the real 
   size happens to be odd size, then we'll add a pad byte.

Q: What's wrong with my test code?
   if ( S_OK != pfn( CLSID_QPLPvCodec3, IID_IQPLPvFrCodec, 
                     (void**)&m_pureVoice ) )
   {
     printf("Can't Create Instance\n");
     return;
   }
A: IID_IQPLPvFrCodec must be IID_IQPLPvVrFrCodec and make sure m_pureVoice is 
   a type of IQPLPvVrFrCodec*


==============================
LICENSE AND LEGAL INFORMATION
==============================

QUALCOMM Incorporated


License Terms for the freeware versions of the PureVoice Player/Recorder and PureVoice
Converter for Windows/95, Windows/98, Windows/NT, Macintosh, and Solaris platforms, the
PureVoice ActiveX Plug-in for Windows/95, Windows/98, and Windows/NT, and the PureVoice
encoder and decoder for SCO Unix,  (collectively the "QUALCOMM PureVoice Software").


QUALCOMM grants to the user a nonexclusive license to use this PureVoice software
solely for user's own personal or internal business purposes.  The user may not
commercially distribute, sublicense, resell, or otherwise transfer for any
consideration, or reproduce for any such purposes, the PureVoice software or any
modification or derivation thereof, either alone or in conjunction with any other
product or program.  Further, the user may not modify the PureVoice software.


THE PUREVOICE SOFTWARE IS PROVIDED TO THE USER ''AS IS.''  QUALCOMM MAKES NO WARRANTIES,
EITHER EXPRESS OR IMPLIED, WITH RESPECT TO THE PUREVOICE SOFTWARE AND/OR ASSOCIATED
MATERIALS PROVIDED TO THE USER, INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR AGAINST INFRINGEMENT. QUALCOMM
DOES NOT WARRANT THAT THE FUNCTIONS CONTAINED IN THE SOFTWARE WILL MEET YOUR REQUIREMENTS,
OR THAT THE OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT DEFECTS
IN THE SOFTWARE WILL BE CORRECTED.  FURTHERMORE, QUALCOMM DOES NOT WARRANT OR MAKE ANY
REPRESENTATIONS REGARDING THE USE OR THE RESULTS OF THE USE OF THE SOFTWARE OR ANY
DOCUMENTATION PROVIDED THEREWITH IN TERMS OF THEIR CORRECTNESS, ACCURACY, RELIABILITY,
OR OTHERWISE. NO ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN BY QUALCOMM OR A QUALCOMM
AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY OR IN ANY WAY INCREASE THE SCOPE OF T
HIS WARRANTY.


LIMITATION OF LIABILITY - QUALCOMM IS NOT LIABLE FOR ANY CLAIMS OR DAMAGES WHATSOEVER,
INCLUDING PROPERTY DAMAGE, PERSONAL INJURY, INTELLECTUAL PROPERTY INFRINGEMENT, LOSS OF
PROFITS, OR INTERRUPTION OF BUSINESS, OR FOR ANY SPECIAL, CONSEQUENTIAL OR INCIDENTAL
DAMAGES, HOWEVER CAUSED, WHETHER ARISING OUT OF BREACH OF WARRANTY, CONTRACT, TORT
(INCLUDING NEGLIGENCE), STRICT LIABILITY, OR OTHERWISE.


Copyright © 2001 by QUALCOMM Incorporated.  All rights reserved.


PureVoice(TM) is a registered trademark of QUALCOMM Incorporated.
QUALCOMM and Eudora are registered trademarks and QUALCOMM is a registered service
mark of QUALCOMM Incorporated.
Windows is a trademark of Microsoft Corporation registered in the U.S. and other countries.


All other trademarks and service marks are the property of their respective owners.


Feb. 2001


 
