⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 video_enc_utils.cpp

📁 这是在PCA下的基于IPP库示例代码例子,在网上下了IPP的库之后,设置相关参数就可以编译该代码.
💻 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.////ipp#include "ipp.h"//mpeg2#include "umc_mpeg2_video_encoder.h"//h264#include "umc_h264_video_encoder.h"//mpeg4#include "umc_mpeg4_video_encoder.h"//h263#include "umc_h263_video_encoder.h"//h261#include "umc_h261_video_encoder.h"using namespace UMC;#include <utils.h>/* implementation of UMCReadYUV class */UMCReadYUV::UMCReadYUV(const vm_char *yuvFileName, int yuvWidth, int yuvHeight, ColorFormat yuvColorFormat, int yuvType){  mIsInit = false;  Init(yuvFileName, yuvWidth, yuvHeight, yuvColorFormat, yuvType);}int UMCReadYUV::Init(const vm_char *yuvFileName, int yuvWidth, int yuvHeight, ColorFormat yuvColorFormat, int yuvType){  Close();  mType = yuvType;  mColorFormat = yuvColorFormat;  mWidth = yuvWidth;  mHeight = yuvHeight;  mFrameCount = 0;  mFile = vm_file_open(yuvFileName, VM_STRING("rb"));  if (!mFile) {    mError = YUV_ERROR_FILE_OPEN;    return  mError;  }  mIsInit = true;  mError = YUV_ERROR_NOERR;  switch (mColorFormat) {      default:      case YV12:        mWidthChroma = mWidth/2;        mHeightChroma = mHeight/2;        break;      case YUV422:        mWidthChroma = mWidth/2;        mHeightChroma = mHeight;        break;      case YUV444:        mWidthChroma = mWidth;        mHeightChroma = mHeight;        break;  }  mFrameSize = mWidth*mHeight + 2*mWidthChroma*mHeightChroma;  return YUV_ERROR_NOERR;}UMCReadYUV::~UMCReadYUV(){  Close();}void UMCReadYUV::Close(){  if (mIsInit) {    fclose(mFile);  }  mIsInit = false;}int UMCReadYUV::LoadNextFrame(VideoData *data){  Ipp8u* pY = (Ipp8u*)data->m_lpDest[0];  Ipp8u* pU = (Ipp8u*)data->m_lpDest[1];  Ipp8u* pV = (Ipp8u*)data->m_lpDest[2];  int    stepY = (int)data->m_lPitch[0];  int    stepU = (int)data->m_lPitch[1];  int    stepV = (int)data->m_lPitch[2];  int    count, i;  if (!mIsInit) return YUV_ERROR_NOTINIT;  // simple yuv frame  if (mType == 0) {    for (i = 0; i < mHeight; i ++) {      count = (int)fread(pY + i * stepY, 1, mWidth, mFile);      if (count != mWidth) {        mError = YUV_ERROR_FILE_READ;        vm_string_printf(VM_STRING("Can't read Y (count=%d): mHeight = %d, mWidth =%d, step = %d \n"),          count,  mHeight , mWidth, stepY );        return mError;      }    }    for (i = 0; i < mHeightChroma; i ++) {      count = (int)fread(pU + i * stepU, 1, mWidthChroma, mFile);      if (count != mWidthChroma) {        mError = YUV_ERROR_FILE_READ;        vm_string_printf(VM_STRING("Can't read U (count=%d): mHeight = %d, mWidth =%d, step = %d \n"),          count, mHeightChroma, mWidthChroma, stepU);        return mError;      }    }    for (i = 0; i < mHeightChroma; i ++) {      count = (int)fread(pV + i * stepV, 1, mWidthChroma, mFile);      if (count != mWidthChroma) {        mError = YUV_ERROR_FILE_READ;        vm_string_printf(VM_STRING("Can't read V (count=%d): mHeight = %d, mWidth =%d, step = %d \n"),          count, mHeightChroma, mWidthChroma, stepV);        return mError;      }    }  }  mFrameCount++;  data->SetDataSize(mHeight*stepY + mHeightChroma*stepU + mHeightChroma*stepV);  return YUV_ERROR_NOERR;}/* Implementation of ReadH264EncoderParams */int ReadH264EncoderParams(vm_char *ParFileName, H264EncoderParams* pParams, vm_char *SrcFileName, int lenSrcFileName ){  if (( ParFileName==NULL ) || ( pParams==NULL ) || ( SrcFileName==NULL ))  {    vm_string_fprintf(stderr,VM_STRING("Error: null pointers!\n") );    return 1;  }  if ( pParams->ReadParamFile(ParFileName)!= UMC_OK )  {    vm_string_fprintf(stderr,VM_STRING("Error: failed reading parfile!\n") );    return 1;  }  if ((int)vm_string_strlen(pParams->SrcFName) > lenSrcFileName )  {    vm_string_fprintf(stderr,VM_STRING("Error: can't pass filename %s, len=%d, but we have =%d \n"), pParams->SrcFName, (int)vm_string_strlen(pParams->SrcFName),lenSrcFileName );    return 1;  }  vm_string_strcat(SrcFileName,pParams->SrcFName);  return 0;}/* Implementation of ReadMPEG4EncoderParams */int ReadMPEG4EncoderParams(vm_char *ParFileName, MPEG4EncoderParams* pParams, vm_char *SrcFileName, int lenSrcFileName ){  if (( !ParFileName ) || ( !pParams ) || ( !SrcFileName )){    vm_string_fprintf(stderr, VM_STRING("Error: null pointers!\n") );    return 1;  }  if ( pParams->ReadParamFile(ParFileName)!= UMC_OK ){    vm_string_fprintf(stderr, VM_STRING("Error: failed reading parfile!\n") );    return 1;  }  if ((int)vm_string_strlen(pParams->m_SourceFileName) > lenSrcFileName ){    vm_string_fprintf(stderr, VM_STRING("Error: can't pass filename %s, len=%d, but we have =%d \n"), pParams->m_SourceFileName, (int)vm_string_strlen(pParams->m_SourceFileName),lenSrcFileName );    return 1;  }  vm_string_strcat(SrcFileName,pParams->m_SourceFileName);  return 0;}/* Implementation of ReadMPEG2EncoderParams */int ReadMPEG2EncoderParams(vm_char *ParFileName, MPEG2EncoderParams* pParams, vm_char *SrcFileName, int lenSrcFileName ){  vm_char SrcFName[512];  if (( !ParFileName ) || ( !pParams ) || ( !SrcFileName )){    vm_string_fprintf(stderr, VM_STRING("Error: null pointers!\n") );    return 1;  }  if ( pParams->ReadParamFile(ParFileName, SrcFName) != UMC_OK ) {    vm_string_fprintf(stderr, VM_STRING("Error: failed reading parfile!\n") );    return 1;  }  vm_string_strcat(SrcFileName, SrcFName);  return 0;}/* Implementation of ReadH263EncoderParams */int ReadH263EncoderParams(vm_char *ParFileName, H263EncoderParams* pParams, vm_char *SrcFileName, int lenSrcFileName ){    if (( !ParFileName ) || ( !pParams ) || ( !SrcFileName )){        vm_string_fprintf(stderr, VM_STRING("Error: null pointers!\n") );        return 1;    }    if ( pParams->ReadParamFile(ParFileName)!= UMC_OK ){        vm_string_fprintf(stderr, VM_STRING("Error: failed reading parfile!\n") );        return 1;    }    if ((int)vm_string_strlen(pParams->m_SourceFileName) > lenSrcFileName ){        vm_string_fprintf(stderr, VM_STRING("Error: can't pass filename %s, len=%d, but we have =%d \n"), pParams->m_SourceFileName, (int)vm_string_strlen(pParams->m_SourceFileName),lenSrcFileName );        return 1;    }    vm_string_strcat(SrcFileName,pParams->m_SourceFileName);    return 0;}/* Implementation of ReadH261EncoderParams */int ReadH261EncoderParams(vm_char *ParFileName, H261EncoderParams* pParams, vm_char *SrcFileName, int lenSrcFileName ){    if (( !ParFileName ) || ( !pParams ) || ( !SrcFileName )){        vm_string_fprintf(stderr, VM_STRING("Error: null pointers!\n"));        return 1;    }    if ( pParams->ReadParamFile(ParFileName)!= UMC_OK ){        vm_string_fprintf(stderr, VM_STRING("Error: failed reading parfile!\n"));        return 1;    }    if ((int)vm_string_strlen(pParams->m_SourceFileName) > lenSrcFileName ){        vm_string_fprintf(stderr, VM_STRING("Error: can't pass filename %s, len=%d, but we have =%d \n"), pParams->m_SourceFileName, (int)vm_string_strlen(pParams->m_SourceFileName),lenSrcFileName );        return 1;    }    vm_string_strcat(SrcFileName,pParams->m_SourceFileName);    return 0;}/*End of file*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -