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

📄 umc_vc1_enc_statistic.cpp

📁 audio-video-codecs.rar语音编解码器
💻 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) 2004-2007 Intel Corporation. All Rights Reserved.
//
//
//          VC-1 (VC1) encoder, vc1 encoder statistics
//
*/

#include "umc_defs.h"

#if defined (UMC_ENABLE_VC1_VIDEO_ENCODER)

#include "umc_vc1_enc_statistic.h"

////////////////////////////////////////////////////////////
// Coding time statistics
////////////////////////////////////////////////////////////
#ifdef _PROJECT_STATISTICS_

VC1EncTimeStatistics* m_TStat;

void TimeStatisticsStructureInitialization()
    {
        m_TStat = (VC1EncTimeStatistics*)malloc(sizeof(VC1EncTimeStatistics));
        if(!m_TStat)
        {
            return;
        }

        memset(m_TStat, 0, sizeof(VC1EncTimeStatistics));
    }

void DeleteStatistics()
{
    if(m_TStat)
    {
        free(m_TStat);
        m_TStat = NULL;
    }
}

void WriteStatisticResults()
{
    FILE* statistic_results_file = 0;
    Ipp64f frequency = 1;
    UMC::sSystemInfo* m_ssysteminfo;
    UMC::SysInfo m_csysinfo;

    m_ssysteminfo = (UMC::sSystemInfo *)m_csysinfo.GetSysInfo();

    frequency = m_ssysteminfo->cpu_freq * 1000 *1000;

    statistic_results_file = fopen("StatResults.csv","r");

    if(statistic_results_file==NULL)
    {
        statistic_results_file = fopen("StatResults.csv","w");

        if(statistic_results_file==NULL)
        {
            return;
        }

        //table title
        fprintf(statistic_results_file,"Stream,  Frame count,  GOP, Bitrate, MESpeed,");
        fprintf(statistic_results_file,"Common time,");
        fprintf(statistic_results_file,"ME time,");
        fprintf(statistic_results_file,"AC/DC coding,");
        fprintf(statistic_results_file,"Interpolation,");
        fprintf(statistic_results_file,"Intra Prediction time,");
        fprintf(statistic_results_file,"Inter Prediction time,");
        fprintf(statistic_results_file,"Fwd quant+transform,");
        fprintf(statistic_results_file,"Inv quant+transform,");
        fprintf(statistic_results_file,"Frame reconstruction,");
        fprintf(statistic_results_file,"Deblocking");

        fprintf(statistic_results_file,"\n");
    }
    else
    {
        fclose(statistic_results_file);

        statistic_results_file = fopen("StatResults.csv","a");

        if(statistic_results_file==NULL)
        {
            return;
        }
    }

    //streamName
    if(m_TStat->streamName)
        fprintf(statistic_results_file,"%s,",m_TStat->streamName);
    else
        fprintf(statistic_results_file,"%s,","NoName");

    //Frame count
    fprintf(statistic_results_file,"%d,",m_TStat->frameCount);

    //GOP
    fprintf(statistic_results_file,"(%d-%d),",m_TStat->GOPLen, m_TStat->BLen);

    //Bitrate
    fprintf(statistic_results_file,"%d,",m_TStat->bitrate/1000);

    //MESpeed
    fprintf(statistic_results_file,"%d,",m_TStat->meSpeedSearch);

    //Common time
    fprintf(statistic_results_file,"%lf,",((Ipp64f)(m_TStat->totalTime))/frequency);

    //Motion estimation time
    fprintf(statistic_results_file,"%lf,",((Ipp64f)(m_TStat->me_TotalTime))/frequency);

    //AC/DC coef coding
    fprintf(statistic_results_file,"%lf,",((Ipp64f)(m_TStat->AC_Coefs_TotalTime))/frequency);

    //Interpolation
    fprintf(statistic_results_file,"%lf,",((Ipp64f)(m_TStat->Interpolate_TotalTime))/frequency);

    //Intra prediction
    fprintf(statistic_results_file,"%lf,",((Ipp64f)(m_TStat->Intra_TotalTime))/frequency);

    //Inter prediction
    fprintf(statistic_results_file,"%lf,",((Ipp64f)(m_TStat->Inter_TotalTime))/frequency);

    //Forward quantization and transforming
    fprintf(statistic_results_file,"%lf,",((Ipp64f)(m_TStat->FwdQT_TotalTime))/frequency);

    //Inverse quantization and transforming
    fprintf(statistic_results_file,"%lf,",((Ipp64f)(m_TStat->InvQT_TotalTime))/frequency);

    //Reconstruction
    fprintf(statistic_results_file,"%lf,",((Ipp64f)(m_TStat->Reconst_TotalTime))/frequency);

    //Deblocking
    fprintf(statistic_results_file,"%lf",((Ipp64f)(m_TStat->Deblk_TotalTime))/frequency);

    fprintf(statistic_results_file,"\n");
    fclose(statistic_results_file);
}
#endif //_PROJECT_STATISTICS_

////////////////////////////////////////////////////////////
// IPP functions statistics
////////////////////////////////////////////////////////////

#ifdef _VC1_IPP_STATISTICS_
VC1EncIppStatistics* m_IppStat;

void IppStatisticsStructureInitialization()
{
    m_IppStat = (VC1EncIppStatistics*)malloc(sizeof(VC1EncIppStatistics));
    if(!m_IppStat)
    {
        return;
    }
    memset(m_IppStat, 0, sizeof(VC1EncIppStatistics));
}

void DeleteIppStatistics()
{
    if(m_IppStat)
    {
        free(m_IppStat);
        m_IppStat = NULL;
    }
}

void WriteIppStatisticResults()
{
    FILE* statistic_results_file = 0;
    Ipp64f frequency = 1;
    UMC::sSystemInfo* m_ssysteminfo;
    UMC::SysInfo m_csysinfo;

    m_ssysteminfo = (UMC::sSystemInfo *)m_csysinfo.GetSysInfo();

    frequency = m_ssysteminfo->cpu_freq * 1000 *1000;

    statistic_results_file = fopen("IppStatResults.csv","r");

    if(statistic_results_file==NULL)
    {
        statistic_results_file = fopen("IppStatResults.csv","w");

        if(statistic_results_file==NULL)
        {
            return;
        }

        //table title
        fprintf(statistic_results_file,"Stream,  Frame count,  GOP, Bitrate, MESpeed,");
        fprintf(statistic_results_file,"Common time,Ipp time");
        fprintf(statistic_results_file,"\n");
    }
    else
    {
        fclose(statistic_results_file);

        statistic_results_file = fopen("IppStatResults.csv","a");

        if(statistic_results_file==NULL)
        {
            return;
        }
    }

    //streamName
    if(m_IppStat->streamName)
        fprintf(statistic_results_file,"%s,",m_IppStat->streamName);
    else
        fprintf(statistic_results_file,"%s,","NoName");

    //Frame count
    fprintf(statistic_results_file,"%d,",m_IppStat->frameCount);

    //GOP
    fprintf(statistic_results_file,"(%d-%d),",m_IppStat->GOPLen, m_IppStat->BLen);

    //Bitrate
    fprintf(statistic_results_file,"%d,",m_IppStat->bitrate/1000);

    //MESpeed
    fprintf(statistic_results_file,"%d,",m_IppStat->meSpeedSearch);

    //Common time
    fprintf(statistic_results_file,"%lf,",((Ipp64f)(m_IppStat->totalTime))/frequency);

    //Ipp time
    fprintf(statistic_results_file,"%lf",((Ipp64f)(m_IppStat->IppTotalTime))/frequency);

    fprintf(statistic_results_file,"\n");
    fclose(statistic_results_file);
}
#endif
#endif //UMC_ENABLE_VC1_VIDEO_ENCODER

⌨️ 快捷键说明

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