📄 umc_vc1_enc_sequence_adv.h
字号:
/* /////////////////////////////////////////////////////////////////////////////
//
// INTEL CORPORATION PROPRIETARY INFORMATION
// This software is supplied under the terms of a license agreement or
// nondisclosure agreement with Intel Corporation and may not be copied
// or disclosed except in accordance with the terms of that agreement.
// Copyright(c) 2007 Intel Corporation. All Rights Reserved.
//
//
// VC-1 (VC1) encoder, advance profile sequence header level functionality
//
*/
#include "umc_defs.h"
#if defined (UMC_ENABLE_VC1_VIDEO_ENCODER)
#ifndef _ENCODER_VC1_SEQUENCE_ADV_H_
#define _ENCODER_VC1_SEQUENCE_ADV_H_
#include "umc_vc1_enc_bitstream.h"
#include "umc_vc1_enc_def.h"
#include "umc_vc1_video_encoder.h"
namespace UMC_VC1_ENCODER
{
enum
{
VC1_ENC_LEVEL_0 = 0x00,
VC1_ENC_LEVEL_1 = 0x01,
VC1_ENC_LEVEL_2 = 0x02,
VC1_ENC_LEVEL_3 = 0x03,
VC1_ENC_LEVEL_4 = 0x04,
};
enum
{
VC1_ENC_COND_OVERLAP_NO = 0,
VC1_ENC_COND_OVERLAP_SOME = 1,
VC1_ENC_COND_OVERLAP_ALL = 2,
};
class VC1EncoderSequenceADV
{
private:
Ipp32u m_uiPictureWidth;
Ipp32u m_uiPictureHeight;
Ipp32u m_nMBRow;
Ipp32u m_nMBCol;
//------------------ for simple/main profiles:--------------------------------------------
// Ipp32u m_uiNumberOfFrames; //Number of frames (0xffffff - if unknown)
// bool m_bMultiRes; // Multi resolution coding
// bool m_bSyncMarkers; // Should be equal to 0 in simple profile
// bool m_bRangeRedution; // Should be equal to 0 in simple profile
// Ipp8u m_uiMaxBFrames; // Number of B frames between I,P frames[0,7]
bool m_bFrameInterpolation;
Ipp8u m_uiFrameRateQ; // [0, 7]
Ipp8u m_uiBitRateQ; // [0,31]
bool m_bLoopFilter; // Should be equal to 0 in simple profile
bool m_bFastUVMC; // Should be equal to 1 in simple profile
bool m_bExtendedMV; // Should be equal to 0 in simple profile
Ipp8u m_uiDQuant; // [0] - simple profile,
// [0,1,2] - main profile (if m_bMultiRes then only 0)
bool m_bVSTransform; // variable-size transform
bool m_bOverlap;
eQuantType m_uiQuantazer; // [0,3] - quantizer specification
Ipp8u m_uiLevel; //VC1_ENC_LEVEL_S, VC1_ENC_LEVEL_M, VC1_ENC_LEVEL_H
bool m_bConstBitRate;
Ipp32u m_uiHRDBufferSize; // buffersize in milliseconds [1,65536]
Ipp32u m_uiHRDFrameRate; // rate: bits per seconds [1,65536]
Ipp32u m_uiFrameRate; // 0xffffffff - if unknown
//-------------------- for advance profile ------------------------------------------------------------
bool m_bClosedEnryPoint ;
bool m_bBrokenLink ; // if !m_bClosedEnryPoint -> true or false
bool m_bPanScan ;
bool m_bReferenceFrameDistance;
bool m_bExtendedDMV ;
bool m_bSizeInEntryPoint;
Ipp8s m_iRangeMapY ;
Ipp8s m_iRangeMapUV ;
bool m_bPullDown ;
bool m_bInterlace ;
bool m_bFrameCounter ;
bool m_bDisplayExtention ;
bool m_bHRDParams ;
bool m_bPostProc ;
public:
VC1EncoderSequenceADV():
m_uiPictureWidth(0),
m_uiPictureHeight(0),
m_uiLevel(0),
//m_uiNumberOfFrames(0),
m_uiFrameRateQ(0),
m_uiBitRateQ(0),
m_bLoopFilter(false),
//m_bMultiRes(false),
m_bFastUVMC(false),
m_bExtendedMV(false),
m_uiDQuant(0),
m_bVSTransform(false),
m_bOverlap(false),
//m_bSyncMarkers(false),
//m_bRangeRedution(false),
//m_uiMaxBFrames(0),
m_uiQuantazer(VC1_ENC_QTYPE_IMPL),
m_bFrameInterpolation(0),
m_bConstBitRate (false),
m_uiHRDBufferSize(0),
m_uiHRDFrameRate(0),
m_uiFrameRate(0),
m_nMBRow(0),
m_nMBCol(0),
m_bClosedEnryPoint(true),
m_bBrokenLink(false),
m_bPanScan(false),
m_bReferenceFrameDistance(false),
m_bExtendedDMV(false),
m_bSizeInEntryPoint(false),
m_iRangeMapY(-1),
m_iRangeMapUV(-1) ,
m_bPullDown(false),
m_bInterlace(false),
m_bFrameCounter(false),
m_bDisplayExtention(false),
m_bHRDParams(false),
m_bPostProc (false)
{}
bool IsFrameInterpolation() {return m_bFrameInterpolation;}
bool IsFastUVMC() {return m_bFastUVMC;}
bool IsExtendedMV() {return m_bExtendedMV;}
bool IsLoopFilter() {return m_bLoopFilter;}
bool IsVSTransform() {return m_bVSTransform;}
bool IsOverlap() {return m_bOverlap;}
bool IsInterlace() {return m_bInterlace;}
bool IsPullDown() {return m_bPullDown;}
bool IsPostProc() {return m_bPostProc;}
bool IsFrameCounter() {return m_bFrameCounter;}
bool IsPanScan() {return m_bPanScan;}
Ipp8u GetDQuant() {return m_uiDQuant;}
Ipp32u GetPictureWidth() {return m_uiPictureWidth;}
Ipp32u GetPictureHeight() {return m_uiPictureHeight;}
Ipp32u GetNumMBInRow() {return m_nMBRow;}
Ipp32u GetNumMBInCol() {return m_nMBCol;}
eQuantType GetQuantType() {return m_uiQuantazer;}
UMC::Status WriteSeqHeader(VC1EncoderBitStreamAdv* pCodedSH);
UMC::Status CheckParameters(vm_char* pLastError);
UMC::Status Init(UMC::VC1EncoderParams* pParams);
UMC::Status WriteEntryPoint(VC1EncoderBitStreamAdv* pCodedSH);
Ipp8u GetProfile() {return VC1_ENC_PROFILE_A;}
Ipp8u GetLevel() {return m_uiLevel;}
void SetLevel(Ipp8u level) {m_uiLevel = level;}
};
}
#endif
#endif // defined (UMC_ENABLE_VC1_VIDEO_ENCODER)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -