123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- /****************************************************************************
- *
- * Module Title : vp60_comp_interface.h
- *
- * Description : Interface to VP60 compressor.
- *
- ****************************************************************************/
- #ifndef __INC_VP60_COMP_INTERFACE_H
- #define __INC_VP60_COMP_INTERFACE_H
- #ifdef _MSC_VER
- #pragma warning(disable: 4514) // Disable warning 4514: Unreferenced inline function
- #endif
- /****************************************************************************
- * Header Files
- ****************************************************************************/
- #include "codec_common_interface.h"
- #include "type_aliases.h"
- #include "string.h"
- #define DEFAULT_VALUE -999
- /****************************************************************************
- * Typedefs
- ****************************************************************************/
- typedef enum
- {
- USAGE_STREAM_FROM_SERVER = 0x0, // INTER prediction, (0,0) motion vector implied.
- USAGE_LOCAL_FILE_PLAYBACK = 0x1 // INTER prediction, (0,0) motion vector implied.
- } END_USAGE;
- typedef enum
- {
- MODE_REALTIME = 0x0,
- MODE_GOODQUALITY = 0x1,
- MODE_BESTQUALITY = 0x2,
- MODE_FIRSTPASS = 0x3,
- MODE_SECONDPASS = 0x4,
- MODE_SECONDPASS_BEST= 0x5
- } MODE;
- /* Command interface to compressor */
- typedef struct
- {
- //UINT32 FourCC;
- //UINT32 ConfigVersion;
- UINT32 FrameSize;
- UINT32 TargetBitRate;
- UINT32 FrameRate;
- UINT32 KeyFrameFrequency;
- UINT32 KeyFrameDataTarget;
- UINT32 Quality;
- BOOL AllowDF;
- BOOL QuickCompress;
- BOOL AutoKeyFrameEnabled;
- INT32 AutoKeyFrameThreshold;
- UINT32 MinimumDistanceToKeyFrame;
- INT32 ForceKeyFrameEvery;
- INT32 NoiseSensitivity;
- BOOL AllowSpatialResampling;
- // The Intended Horizontal Scale
- UINT32 HScale;
- UINT32 HRatio;
- // The Intended Vertical Scale
- UINT32 VScale;
- UINT32 VRatio;
- // The way in which we intended
- UINT32 ScalingMode;
- // Interlaced (0) means no (1) means Yes
- UINT32 Interlaced;
- BOOL FixedQ;
- INT32 StartingBufferLevel; // The initial encoder buffer level
- INT32 OptimalBufferLevel; // The buffer level target we strive to reach / maintain.
- INT32 DropFramesWaterMark; // Buffer fullness watermark for forced drop frames.
- INT32 ResampleDownWaterMark; // Buffer fullness watermark for downwards spacial re-sampling
- INT32 ResampleUpWaterMark; // Buffer fullness watermark where returning to larger image size is consdered
- INT32 OutputFrameRate;
- INT32 Speed;
- BOOL ErrorResilientMode; // compress using a mode that won't completely fall apart if we decompress using
- // the frame after a dropped frame
- INT32 Profile;
- BOOL DisableGolden; // disable golden frame updates
- BOOL VBMode; // run in variable bandwidth 1 pass mode
- UINT32 BestAllowedQ; // best allowed quality ( save bits by disallowings frames that are too high quality )
- INT32 UnderShootPct; // target a percentage of the actual frame to allow for sections that go over
- INT32 MaxAllowedDatarate; // maximum the datarate is allowed to go.
- INT32 MaximumBufferSize; // maximum buffer size.
- BOOL TwoPassVBREnabled; // two pass variable bandwidth enabled
- INT32 TwoPassVBRBias; // how variable do we want to target?
- INT32 TwoPassVBRMaxSection; // maximum
- INT32 TwoPassVBRMinSection; // minimum
- INT32 Pass; // which pass of the compression are we running.
- MODE Mode;
- END_USAGE EndUsage;
- char FirstPassFile[512];
- char SettingsFile[512];
- char RootDirectory[512];
- INT32 PlaceHolder;
- INT32 DeleteFirstPassFile;
- INT32 Sharpness;
- } COMP_CONFIG_VP6;
- typedef struct
- {
- int YWidth;
- int YHeight;
- int YStride;
- int UVWidth;
- int UVHeight;
- int UVStride;
- char *YBuffer;
- char *UBuffer;
- char *VBuffer;
- } YUV_INPUT_BUFFER_CONFIG;
- /****************************************************************************
- * Functions
- ****************************************************************************/
- #ifdef _MSC_VER
- _inline
- void comp_config_default_vp6 ( COMP_CONFIG_VP6* pcc )
- {
- pcc->FrameSize = 0; // No default value
- pcc->TargetBitRate = 300;
- pcc->FrameRate = 0; // No default value
- pcc->KeyFrameFrequency = 120;
- pcc->KeyFrameDataTarget = 0; // No default value
- pcc->Quality = 56;
- pcc->AllowDF = 0;
- pcc->AutoKeyFrameEnabled = 1;
- pcc->AutoKeyFrameThreshold = 80;
- pcc->MinimumDistanceToKeyFrame = 4;
- pcc->ForceKeyFrameEvery = 120;
- pcc->NoiseSensitivity = 0;
- pcc->AllowSpatialResampling = 0;
- pcc->HScale = 1;
- pcc->HRatio = 1;
- pcc->VScale = 1;
- pcc->VRatio = 1;
- pcc->ScalingMode = MAINTAIN_ASPECT_RATIO;
- pcc->Interlaced = 0;
- pcc->FixedQ = 0;
- pcc->StartingBufferLevel = 4;
- pcc->OptimalBufferLevel = 5;
- pcc->DropFramesWaterMark = 20;
- pcc->ResampleDownWaterMark = 35;
- pcc->ResampleUpWaterMark = 45;
- pcc->OutputFrameRate = 30;
- pcc->Speed = 4;
- pcc->ErrorResilientMode = FALSE;
- pcc->Profile = 0;
- pcc->DisableGolden = 0;
- pcc->BestAllowedQ = 4;
- pcc->UnderShootPct = 90;
- pcc->MaxAllowedDatarate = 100;
- pcc->MaximumBufferSize = 6;
- pcc->TwoPassVBRBias = 70;
- pcc->TwoPassVBRMaxSection = 400;
- pcc->TwoPassVBRMinSection = 40;
- pcc->Mode = MODE_GOODQUALITY;
- pcc->EndUsage = USAGE_STREAM_FROM_SERVER;
- // DEFAULT means default value as determined by mode and endusage
- pcc->QuickCompress = DEFAULT_VALUE;
- pcc->Pass = DEFAULT_VALUE;
- pcc->VBMode = DEFAULT_VALUE;
- pcc->TwoPassVBREnabled = DEFAULT_VALUE;
- pcc->SettingsFile[0] = 0;
- pcc->RootDirectory[0] = 0;
- pcc->Sharpness = 5;
- strncpy(pcc->FirstPassFile,"firstpass.fpf",512);
- //pcc->FourCC = '06PV';
- //pcc->ConfigVersion = 4;
- return;
- }
- #endif
- #endif
|