FileDocCategorySizeDatePackage
VCM.javaAPI DocJMF 2.1.1e3389Mon May 12 12:21:20 BST 2003com.sun.media.codec.video.vcm

VCM.java

/*
 * @(#)VCM.java	1.10 03/04/24
 *
 * Copyright (c) 1996-2003 Sun Microsystems, Inc.  All rights reserved.
 */

package com.sun.media.codec.video.vcm;

import com.sun.media.vfw.BitMapInfo;

/**
 * VCM wrapper for windows.
 */
class VCM {

    static final int ICMODE_COMPRESS = 1;
    static final int ICMODE_DECOMPRESS = 2;
    static final int ICDECOMPRESS_HURRYUP = 4;
    static final int ICDECOMPRESS_NOTKEYFRAME = 8;
    static final int ICDECOMPRESS_PREROLL = 16;
    static final int ICCOMPRESS_KEYFRAME = 1;

    static final int VIDCF_QUALITY  = 1;
    static final int VIDCF_CRUNCH   = 2;
    static final int VIDCF_TEMPORAL = 4;
    static final int VIDCF_FASTC    = 32;

    static final int AVIIF_KEYFRAME = 16;
    
    
    /**
     * Returns a Handle to a compressor/decompressor that
     * accepts the specified input format and if non-null, the specified
     * output format.
     */
    native static int icLocate(String fccType, String fccHandler,
			       BitMapInfo biIn, BitMapInfo biOut,
			       int icMode);

    /**
     * Returns a handle to the specified compressor/decompressor.
     */
    native static int icOpen(String fccType, String fccHandler,
			     int icMode);

    /**
     * Closes the driver with the specified handle.
     */
    native static boolean icClose(int handle);

    /**
     * Get Info about a driver specified by handle.
     * Returns true if succesful.
     */
    native static boolean icGetInfo(int handle, ICInfo info);

    /**
     * Get Info about a handler with specified fourcc.
     */
    native static boolean icInfo(String fccType, String fccHandler, ICInfo info);

    /**
     * Get info about the handler with an index of enum.
     */
    native static boolean icInfoEnum(String fccType, int enum, ICInfo info);

    /**
     * Prepare for decompression.
     */
    native static boolean icDecompressBegin(int handle,
					    BitMapInfo biIn, BitMapInfo biOut);

    /**
     * Decompress the data.
     */
    native static int icDecompress(int handle, long flags,
				   BitMapInfo biIn,
				   Object dataIn, long inBytes,
				   BitMapInfo biOut,
				   Object dataOut, long outBytes,
				   int outType);

    /**
     * End the decompression sequence. Should be done when resetting or
     * repositioning.
     */
    native static boolean icDecompressEnd(int handle);

    native static boolean icDecompressQuery(int handle, BitMapInfo biIn,
					    BitMapInfo biOut);

    /**
     * Returns the output format in biOut. Input format needs to be specified
     * in biIn.
     */
    native static boolean icDecompressGetFormat(int handle, BitMapInfo biIn,
						BitMapInfo biOut);


    native static boolean icCompressBegin(int handle, BitMapInfo biIn,
					  BitMapInfo biOut);

    native static int     icCompress(int handle,
				     int inFlags,
				     BitMapInfo biOut,
				     Object dataOut,
				     BitMapInfo biIn,
				     Object dataIn,
				     int [] ckid,
				     int [] outFlags,
				     int frameNo,
				     int reqFrameSize,
				     int quality,
				     BitMapInfo biPrev,
				     Object dataPrev);

    native static boolean icCompressEnd(int handle);

    native static int     icCompressGetFormat(int handle,
					      BitMapInfo biIn,
					      BitMapInfo biOut);
    
    native static int     icCompressGetFormatSize(int handle,
						  BitMapInfo biIn);

}