Main Page | Modules | Class Hierarchy | Data Structures | File List | Data Fields | Globals | Related Pages | Examples

jp2_encode.cpp

Simple image encoder using IMJ2Enc.

//
// jp2_encode.cpp
//
// Simple image encoder using IMJ2Enc.
//
// Copyright Morgan-Multimedia 1990-2005.
//

#include "iMJ2Enc.h"
#include "OEM_LIC.h"

int Encode(int nWidth, int nHeight, PBYTE pIn, int nIn, DWORD fccIn, int nInBits,
                   PBYTE pOut, int nOut, int nQuality)
{
        // Create an encoder
        IMJ2Enc *pEnc = new IMJ2Enc(FALSE, &OEM_LIC);

        if (!pEnc) {return 0;}

        // Is license valid ?
        if (!pEnc->IsLicenseValid())
        {
                // No
                delete pEnc;
                return 0;
        }

        // Initialize a JPEG2000INFOHEADER2
        JPEG2000INFOHEADER2 jp2;
        switch (fccIn)
        {
                case YUY2:
                case UYVY:
                InitJP2KHdrYUV422(&jp2);
                break;

                case YV12:
                case I420:
                InitJP2KHdrYUV420(&jp2);
                break;

                case BI_RGB:
                case BI_BITFIELDS:
                if (nInBits == 8)
                {
                        InitJP2KHdrY(&jp2);
                }
                else
                {
                        InitJP2KHdrRGB(&jp2);
                }
                break;
        }

        // Encode
        int nSize = pEnc->encode(
                                &jp2, 0, NULL,
                                pIn, nIn,
                                0, 0,
                                nWidth, nHeight,
                                fccIn, nInBits,
                                pOut, nOut,
                                nQuality,
                                0);

        // Delete encoder
        if (pEnc) {delete pEnc;}

        // Return the size of the encoded frame
        return nSize;
}

   

© Morgan Multimedia 1990-2005