📄 h261_enc_headers.cpp
字号:
/* /////////////////////////////////////////////////////////////////////////// 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) 2005 Intel Corporation. All Rights Reserved.//// Description: class ippVideoEncoderH261 (put headers to bitstream)// Contents:// EncodeFrame//*/#include "h261_enc.hpp"inline void ippVideoEncoderH261::EncodeStartCode(Ipp8u gn){ /* if gn==0 - picture start code */ cBS.PutBits(16 + gn, 20);}void ippVideoEncoderH261::EncodeZeroBitsAlign(){ if (cBS.mBitOff != 0) cBS.PutBits(0, 8 - cBS.mBitOff);}void ippVideoEncoderH261::EncodeStuffingBitsAlign(){ cBS.PutBits(0xFF >> (cBS.mBitOff + 1), 8 - cBS.mBitOff);}void ippVideoEncoderH261::EncodePicture_Header(){ cBS.PutBits(16, 20); cBS.PutBits(Frame.temporal_reference, 5); cBS.PutBits(Frame.split_screen_indicator, 1); cBS.PutBits(Frame.document_camera_indicator, 1); cBS.PutBits(Frame.freeze_picture_release, 1); cBS.PutBits(Frame.source_format, 1); cBS.PutBits(Frame.still_image_mode, 1); cBS.PutZeroBit(); cBS.PutZeroBit(); // pei}void ippVideoEncoderH261::EncodeGOB_Header(){ Ipp32u gobn_code; if (Frame.source_format == 0) gobn_code = 2*Frame.gob_number - 1; else gobn_code = Frame.gob_number; cBS.PutBits(1, 16); cBS.PutBits(gobn_code, 4); cBS.PutBits(Frame.frame_quant, 5); cBS.PutZeroBit(); // gei}void ippVideoEncoderH261::EncodeMBA(Ipp8u mba){ if (mba == IPPVC_MB_STUFFING) mba = 34; cBS.PutBits(mVLC_MBA[mba-1].val, mVLC_MBA[mba-1].len);}void ippVideoEncoderH261::EncodeMType(Ipp8u mtype){ int len; if (mtype & MTYPE_INTRA) len = (mtype & MTYPE_MQUANT) ? 7 : 4; else len = mLen_MType[mtype]; cBS.PutBits(1, len);}void ippVideoEncoderH261::EncodeMVD(IppMotionVector mvd){ int x, y, sx = 0, sy = 0; VLCcode vlc; x = mvd.dx; if (x & 16) { x = 32 - x; sx = 1; } x &= 0x1F; y = mvd.dy; if (y & 16) { y = 32 - y; sy = 1; } y &= 0x1F; vlc = mVLC_MVD[x]; cBS.PutBits((vlc.val | sx), vlc.len); vlc = mVLC_MVD[y]; cBS.PutBits((vlc.val | sy), vlc.len);}void ippVideoEncoderH261::EncodeCBP(Ipp8u cbp){ VLCcode vlc; vlc = mVLC_CBP[cbp-1]; cBS.PutBits(vlc.val, vlc.len);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -