<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Mpeg4Decoder: Some .avi file can't be Decoded. in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/Mpeg4Decoder-Some-avi-file-can-t-be-Decoded/m-p/906390#M13537</link>
    <description>&lt;P&gt;I download w_ipp-samples_p_5.3.095.zip, and try to implement the Mpeg4 Encoder/Decoder. All the .avi(produce from the Mpeg4 Encoder ) files can be played in Window Media Player, but some .avi file cann't be decode by Mpeg4 Decoder. For example two avi file: their format is all the same as follow : mpeg4 encode, 720x288 , 5fps, video length is 5 frames. The channel_0_5_1.avi can be decoded successly be Mpeg4 Decoder, but channel_0_5_bad_1.avi cann't not. Is anyone can tell me how to resolve this problem.&lt;/P&gt;
&lt;P&gt;Here is the avi link : &lt;A href="http://www.sunvision.cc/Temp/mpeg4encode_avi.rar"&gt;http://www.sunvision.cc/Temp/mpeg4encode_avi.rar&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;/P&gt;
&lt;P&gt;// Follow is the Mpeg4 Decoder source code:&lt;/P&gt;
&lt;P&gt;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;/P&gt;
&lt;P&gt;#include &lt;STDIO.H&gt;&lt;BR /&gt;#include &lt;STDLIB.H&gt;&lt;BR /&gt;#include "ippdefs.h"&lt;BR /&gt;#include "ippcore.h"&lt;BR /&gt;#include "ipps.h"&lt;BR /&gt;#include "ippi.h"&lt;BR /&gt;#include "ippj.h"&lt;BR /&gt;#include "ippcc.h"&lt;BR /&gt;#include "vm_time.h"&lt;BR /&gt;#include "umc_defs.h"&lt;BR /&gt;#include "umc_structures.h"&lt;BR /&gt;#include "umc_data_reader.h"&lt;BR /&gt;#include "umc_splitter.h"&lt;BR /&gt;#include "umc_video_decoder.h"&lt;BR /&gt;#include "umc_video_encoder.h"&lt;BR /&gt;#include "umc_video_data.h"&lt;BR /&gt;#include "umc_video_render.h"&lt;BR /&gt;#include "umc_file_writer.h"&lt;/STDLIB.H&gt;&lt;/STDIO.H&gt;&lt;/P&gt;
&lt;P&gt;#include "umc_file_reader.h"&lt;BR /&gt;#include "umc_fio_reader.h"&lt;BR /&gt;#include "umc_avi_splitter.h"&lt;BR /&gt;#include "umc_mjpeg_video_decoder.h"&lt;BR /&gt;#include "umc_mpeg4_video_decoder.h"&lt;BR /&gt;#include "umc_mpeg4_video_encoder.h"&lt;BR /&gt;#include "fw_video_render.h"&lt;/P&gt;
&lt;P&gt;using namespace UMC;&lt;/P&gt;
&lt;P&gt;static void copyright(void)&lt;BR /&gt;{&lt;BR /&gt;vm_string_printf(VM_STRING("
Intel Media processing sample based on
"));&lt;BR /&gt;vm_string_printf(VM_STRING(" UMC and Intel Integrated PerformancePrimitives
"));&lt;BR /&gt;vm_string_printf(VM_STRING("Copyright(c) 2005-2007 Intel Corporation. AllRights Reserved.

"));&lt;BR /&gt;return;&lt;BR /&gt;} // copyright()&lt;/P&gt;
&lt;P&gt;static void ipp_version(void)&lt;BR /&gt;{&lt;BR /&gt;const IppLibraryVersion* version;&lt;BR /&gt;vm_string_printf(VM_STRING("Intel Integrated Performance Primitives
"));&lt;/P&gt;
&lt;P&gt;/* ippCore version info */&lt;BR /&gt;version = ippGetLibVersion();&lt;BR /&gt;vm_string_printf(VM_STRING(" %s,	%s {%d.%d.%d.%d},	build date %s
"),&lt;BR /&gt;version-&amp;gt;Name,&lt;BR /&gt;version-&amp;gt;Version,&lt;BR /&gt;version-&amp;gt;major,version-&amp;gt;minor,version-&amp;gt;majorBuild,version-&amp;gt;build,&lt;BR /&gt;version-&amp;gt;BuildDate);&lt;/P&gt;
&lt;P&gt;/* ippSP version info */&lt;BR /&gt;version = ippsGetLibVersion();&lt;BR /&gt;vm_string_printf(VM_STRING(" %s,	%s {%d.%d.%d.%d},	build date %s
"),&lt;BR /&gt;version-&amp;gt;Name,&lt;BR /&gt;version-&amp;gt;Version,&lt;BR /&gt;version-&amp;gt;major,version-&amp;gt;minor,version-&amp;gt;majorBuild,version-&amp;gt;build,&lt;BR /&gt;version-&amp;gt;BuildDate);&lt;/P&gt;
&lt;P&gt;/* ippIP version info */&lt;BR /&gt;version = ippiGetLibVersion();&lt;BR /&gt;vm_string_printf(VM_STRING(" %s,	%s {%d.%d.%d.%d},	build date %s
"),&lt;BR /&gt;version-&amp;gt;Name,&lt;BR /&gt;version-&amp;gt;Version,&lt;BR /&gt;version-&amp;gt;major,version-&amp;gt;minor,version-&amp;gt;majorBuild,version-&amp;gt;build,&lt;BR /&gt;version-&amp;gt;BuildDate);&lt;/P&gt;
&lt;P&gt;/* ippJP vers
ion info */&lt;BR /&gt;version = ippjGetLibVersion();&lt;BR /&gt;vm_string_printf(VM_STRING(" %s,	%s {%d.%d.%d.%d},	build date %s
"),&lt;BR /&gt;version-&amp;gt;Name,&lt;BR /&gt;version-&amp;gt;Version,&lt;BR /&gt;version-&amp;gt;major,version-&amp;gt;minor,version-&amp;gt;majorBuild,version-&amp;gt;build,&lt;BR /&gt;version-&amp;gt;BuildDate);&lt;/P&gt;
&lt;P&gt;/* ippCC version info */&lt;BR /&gt;version = ippccGetLibVersion();&lt;BR /&gt;vm_string_printf(VM_STRING(" %s,	%s {%d.%d.%d.%d},	build date %s
"),&lt;BR /&gt;version-&amp;gt;Name,&lt;BR /&gt;version-&amp;gt;Version,&lt;BR /&gt;version-&amp;gt;major,version-&amp;gt;minor,version-&amp;gt;majorBuild,version-&amp;gt;build,&lt;BR /&gt;version-&amp;gt;BuildDate);&lt;BR /&gt;vm_string_printf(VM_STRING("
"));&lt;/P&gt;
&lt;P&gt;return;&lt;BR /&gt;} // ipp_version()&lt;/P&gt;
&lt;P&gt;UMC::Status&lt;BR /&gt;InitDataReader(&lt;BR /&gt;DataReader* pDataReader,&lt;BR /&gt;Ipp8u* file_name)&lt;BR /&gt;{&lt;BR /&gt;FileReaderParams reader_params;&lt;BR /&gt;reader_params.m_portion_size = 0;&lt;BR /&gt;vm_string_strcpy(reader_params.m_file_name, (const char*)file_name);&lt;BR /&gt;return pDataReader-&amp;gt;Init(&amp;amp;reader_params);&lt;BR /&gt;} // InitDataReader()&lt;/P&gt;
&lt;P&gt;UMC::Status&lt;BR /&gt;InitAVISplitter(&lt;BR /&gt;Splitter* pAVISplitter,&lt;BR /&gt;DataReader* pDataReader)&lt;BR /&gt;{&lt;BR /&gt;SplitterParams spl_params;&lt;BR /&gt;spl_params.m_lFlags = UMC::VIDEO_SPLITTER; // want to exctract only video&lt;BR /&gt;spl_params.m_pDataReader = pDataReader;&lt;BR /&gt;return pAVISplitter-&amp;gt;Init(spl_params);&lt;BR /&gt;} // InitAVISplitter()&lt;/P&gt;
&lt;P&gt;UMC::Status&lt;BR /&gt;InitVideoDecoder(&lt;BR /&gt;VideoDecoder* pVideoDecoder,&lt;BR /&gt;VideoStreamInfo* video_info, int iVideoType)&lt;BR /&gt;{&lt;BR /&gt;if (video_info-&amp;gt;stream_type != iVideoType) //UMC::MJPEG_VIDEO&lt;BR /&gt;return UMC_ERR_FAILED;&lt;BR /&gt;VideoDecoderParams dec_params;&lt;BR /&gt;dec_params.info = *video_info;&lt;BR /&gt;dec_params.lFlags = 0; &lt;BR /&gt;dec_params.numThreads = 1;&lt;BR /&gt;return pVideoDecoder-&amp;gt;Init(&amp;amp;dec_params);&lt;BR /&gt;} // InitMJPEGVideoDecoder()&lt;/P&gt;
&lt;P&gt;UMC::Status&lt;BR /&gt;InitVideoRender(&lt;BR /&gt;VideoRender* pVideoRender,&lt;BR /&gt;VideoStreamInfo* video_info, char* sOutputName)&lt;BR /&gt;{&lt;BR /&gt;UMC::Status status;&lt;BR /&gt;//use FWVideoRenderParams to replace VideoRenderParams, because it can assign the output filename&lt;BR /&gt;//VideoRenderParams : default output name: output.yuv&lt;BR /&gt;//VideoRenderParams render_params;&lt;BR /&gt;FWVideoRenderParams render_params; &lt;BR /&gt;render_params.pOutFile = sOutputName;&lt;BR /&gt;status = render_params.out_data_template.Init(&lt;BR /&gt;video_info-&amp;gt;clip_info.width,&lt;BR /&gt;video_info-&amp;gt;clip_info.height,&lt;BR /&gt;video_info-&amp;gt;color_format);&lt;BR /&gt;if(UMC_OK != status)&lt;BR /&gt;return status;&lt;BR /&gt;return pVideoRender-&amp;gt;Init(&amp;amp;render_params);&lt;BR /&gt;} // InitVideoRender()&lt;/P&gt;
&lt;P&gt;UMC::Status&lt;BR /&gt;DecodeVideo(vm_char* input_file, char* sOutputName)&lt;BR /&gt;{&lt;BR /&gt;Ipp32u track;&lt;BR /&gt;Ipp32s nframes;&lt;BR /&gt;vm_tick t0;&lt;BR /&gt;vm_tick t1;&lt;BR /&gt;vm_tick total;&lt;BR /&gt;vm_tick freq;&lt;BR /&gt;Ipp64f fps;&lt;BR /&gt;FIOReader src;&lt;BR /&gt;AVISplitter avi_spl;&lt;BR /&gt;SplitterInfo* spl_info;&lt;BR /&gt;VideoStreamInfo* video_info;&lt;BR /&gt;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;BR /&gt;// if your file format change, you must change the Decoder&lt;BR /&gt;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;BR /&gt;MPEG4VideoDecoder VedioDecoder;//MJPEGVideo
Decoder,MPEG4VideoDecoder&lt;/P&gt;
&lt;P&gt;FWVideoRender dst;&lt;BR /&gt;MediaData in;&lt;BR /&gt;VideoData out;&lt;BR /&gt;UMC::Status umcRes;&lt;/P&gt;
&lt;P&gt;// Initialize data reader component&lt;BR /&gt;umcRes = InitDataReader(&amp;amp;src, (Ipp8u *)input_file);&lt;BR /&gt;if (umcRes != UMC_OK)&lt;BR /&gt;return umcRes;&lt;/P&gt;
&lt;P&gt;// Initialize splitter component&lt;BR /&gt;umcRes = InitAVISplitter(&amp;amp;avi_spl, &amp;amp;src);&lt;BR /&gt;if (umcRes != UMC_OK)&lt;BR /&gt;return umcRes;&lt;/P&gt;
&lt;P&gt;// get stream info&lt;BR /&gt;umcRes = avi_spl.GetInfo(&amp;amp;spl_info);&lt;BR /&gt;if (umcRes != UMC_OK)&lt;BR /&gt;return umcRes;&lt;/P&gt;
&lt;P&gt;// find required track&lt;BR /&gt;int iVideoStreamType = MPEG4_VIDEO;&lt;BR /&gt;for (track = 0; track &amp;lt; spl_info-&amp;gt;m_nOfTracks; track++){&lt;BR /&gt;if (TRACK_MPEG4V == spl_info-&amp;gt;m_ppTrackInfo[track]-&amp;gt;m_Type) {&lt;BR /&gt;iVideoStreamType = MPEG4_VIDEO;&lt;BR /&gt;break;&lt;BR /&gt;} else &lt;BR /&gt;if (TRACK_MJPEG == spl_info-&amp;gt;m_ppTrackInfo[track]-&amp;gt;m_Type) {&lt;BR /&gt;iVideoStreamType = MJPEG_VIDEO;&lt;BR /&gt;break;&lt;BR /&gt;}&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;// track of MJPEG type is not found&lt;BR /&gt;if (track &amp;gt;= spl_info-&amp;gt;m_nOfTracks)&lt;BR /&gt;return UMC_ERR_INVALID_STREAM;&lt;/P&gt;
&lt;P&gt;// get VideoStreamInfo structure&lt;BR /&gt;video_info = (VideoStreamInfo*)spl_info-&amp;gt;m_ppTrackInfo[track]-&amp;gt;m_pStreamInfo;&lt;BR /&gt;video_info-&amp;gt;color_format = RGB24;//YUY2,RGB24,YUV420,YUV422&lt;BR /&gt;vm_string_printf(VM_STRING("file: %s
"),input_file);&lt;BR /&gt;vm_string_printf(VM_STRING(" video stream
"));&lt;BR /&gt;vm_string_printf(VM_STRING(" type :%s
"),GetVideoTypeString(spl_info-&amp;gt;m_video_info.stream_type));&lt;BR /&gt;vm_string_printf(VM_STRING(" dims : %dx%d
"),spl_info-&amp;gt;m_video_info.clip_info.width,spl_info-&amp;gt;m_video_info.clip_info.height);&lt;BR /&gt;vm_string_printf(VM_STRING(" color : %s
"),GetFormatTypeString(spl_info-&amp;gt;m_video_info.color_format));&lt;/P&gt;
&lt;P&gt;// Initialize video decoder component&lt;BR /&gt;umcRes = InitVideoDecoder(&amp;amp;VedioDecoder, video_info,iVideoStreamType); // MJPEG_VIDEO,MPEG4_VIDEO&lt;BR /&gt;if (umcRes != UMC_OK)&lt;BR /&gt;return umcRes;&lt;/P&gt;
&lt;P&gt;// Initialize video render component&lt;BR /&gt;umcRes = InitVideoRender(&amp;amp;dst, video_info,sOutputName);&lt;BR /&gt;if (umcRes != UMC_OK)&lt;BR /&gt;return umcRes;&lt;/P&gt;
&lt;P&gt;freq = vm_time_get_frequency();&lt;BR /&gt;total = 0;&lt;BR /&gt;nframes = 0;&lt;BR /&gt;// decoding &amp;amp; rendering loop (frame by frame)&lt;BR /&gt;while(umcRes == UMC_OK || umcRes == UMC_ERR_NOT_ENOUGH_DATA)&lt;BR /&gt;{&lt;BR /&gt;while (UMC_ERR_NOT_ENOUGH_DATA == (umcRes = avi_spl.GetNextData(&amp;amp;in,track)))&lt;BR /&gt;vm_time_sleep(5);&lt;BR /&gt;if (umcRes != UMC_OK)&lt;BR /&gt;break;&lt;BR /&gt;umcRes = dst.LockInputBuffer(&amp;amp;out); // Lock VideoData&lt;BR /&gt;if (umcRes != UMC_OK)&lt;BR /&gt;break;&lt;BR /&gt;t0 = vm_time_get_tick();&lt;BR /&gt;umcRes = VedioDecoder.GetFrame(&amp;amp;in, &amp;amp;out); //MediaData ==&amp;gt; VideoData&lt;BR /&gt;if (umcRes == UMC::UMC_ERR_END_OF_STREAM || (umcRes != UMC::UMC_OK &amp;amp;&amp;amp; umcRes !=UMC::UMC_ERR_NOT_ENOUGH_DATA))&lt;BR /&gt;break;&lt;BR /&gt;t1 = vm_time_get_tick();&lt;BR /&gt;total += (t1 - t0);&lt;BR /&gt;if (dst.UnLockInputBuffer(&amp;amp;out) != UMC_OK)&lt;BR /&gt;break;&lt;/P&gt;
&lt;P&gt;//if (umcRes != UMC_OK)
&lt;BR /&gt;//continue;&lt;BR /&gt;vm_string_printf(VM_STRING("frame# %d, FPS - %4.1f
"),nframes,&lt;BR /&gt;(Ipp64f)1.0 / ((t1 - t0) / (Ipp64f)freq));&lt;BR /&gt;if(umcRes == UMC_OK)&lt;BR /&gt;{&lt;BR /&gt;Ipp64f time = -1;&lt;BR /&gt;while (UMC_ERR_TIMEOUT == dst.GetRenderFrame(&amp;amp;time));&lt;BR /&gt;umcRes = dst.RenderFrame();&lt;BR /&gt;if (umcRes != UMC::UMC_OK)&lt;BR /&gt;break;&lt;BR /&gt;}&lt;BR /&gt;nframes++;&lt;BR /&gt;} // while()&lt;BR /&gt;fps = (Ipp64f)(freq / ((Ipp64f)total / nframes));&lt;BR /&gt;vm_string_printf(VM_STRING("processed %d frames, with avg performance %4.1f FPS
"),nframes, fps);&lt;/P&gt;
&lt;P&gt;return umcRes;&lt;BR /&gt;} // DecodeVideo()&lt;/P&gt;
&lt;P&gt;int main(int argc, char* argv[])&lt;BR /&gt;{&lt;BR /&gt;ippStaticInit();&lt;BR /&gt;copyright();&lt;BR /&gt;ipp_version();&lt;/P&gt;
&lt;P&gt;if(argc &amp;gt; 1)&lt;BR /&gt;DecodeVideo("channel_0.avi","channel_01.rgb");&lt;BR /&gt;else&lt;BR /&gt;vm_string_printf(VM_STRING("expected AVI file name"));&lt;/P&gt;
&lt;P&gt;return 0;&lt;BR /&gt;} // main()&lt;/P&gt;
&lt;P&gt;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;/P&gt;
&lt;P&gt;//End of the Mpeg4 Decoder source code:&lt;/P&gt;
&lt;P&gt;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;/P&gt;
&lt;P&gt;//Follow is the Mpeg4 Encoder source code:&lt;/P&gt;
&lt;P&gt;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;BR /&gt;#include "utils.h"&lt;BR /&gt;#include "vm_time.h"&lt;BR /&gt;#include "vm_strings.h"&lt;BR /&gt;#include "umc_sys_info.h"&lt;BR /&gt;#include "vm_sys_info.h"&lt;/P&gt;
&lt;P&gt;#include "ippvc.h"&lt;/P&gt;
&lt;P&gt;//#define ALPHA_BLENDING_H264&lt;BR /&gt;extern void AVI_Muxer(int MPEG4_W,int MPEG4_H,int MPEG4_FR,char *MPEG4filename,char *AVIfilename);&lt;/P&gt;
&lt;P&gt;using namespace UMC;&lt;/P&gt;
&lt;P&gt;#define MAX_FILELEN 1024&lt;/P&gt;
&lt;P&gt;class VideoEncodingTest : public VideoEncodingSample&lt;BR /&gt;{&lt;BR /&gt;public:&lt;BR /&gt; virtual Status PutOutputData(MediaData *out);&lt;/P&gt;
&lt;P&gt; virtual Ipp32s Main(Ipp32s argc, vm_char *argv[]);&lt;/P&gt;
&lt;P&gt; virtual Ipp64f GetTick();&lt;/P&gt;
&lt;P&gt; Status ChangeParams();&lt;BR /&gt; void DumpPerf0();&lt;BR /&gt; void DumpPerf1();&lt;/P&gt;
&lt;P&gt; VideoEncodingTest()&lt;BR /&gt; {&lt;BR /&gt; mVideoStreamType = UNDEF_VIDEO;&lt;BR /&gt; mWidth = 0;&lt;BR /&gt; mHeight = 0;&lt;BR /&gt; maxNumFrames = 0;&lt;BR /&gt; BitRate = -1; // (BitRate &amp;lt; 0) means constant quality!&lt;BR /&gt; FrameRate = 0;&lt;BR /&gt; chroma_format = 1; // 1==&amp;gt;4:2:0 , 2==&amp;gt;4:2:2&lt;BR /&gt; SrcFileName[0] = 0;&lt;BR /&gt; ParFileName = NULL;&lt;BR /&gt; DstFileName = NULL;&lt;BR /&gt; PerfFileName = NULL;&lt;BR /&gt; refEncodedFile = NULL;&lt;BR /&gt; inpLogFile = NULL;&lt;BR /&gt; outLogFile = NULL;&lt;BR /&gt;&amp;amp;n
bsp; resLogFile = NULL;&lt;BR /&gt; perf_file = NULL;&lt;BR /&gt; numThreads = 1;&lt;BR /&gt; AlphaFileName = NULL;&lt;BR /&gt; ReconFileName = NULL;&lt;/P&gt;
&lt;P&gt; fullTime = 0;&lt;BR /&gt; tickDuration = 1.0/(Ipp64f)vm_time_get_frequency();&lt;BR /&gt; *codecName = 0;&lt;BR /&gt; FrameSize = NULL;&lt;BR /&gt; lastFrameNum = 0;&lt;BR /&gt; lastPTS = -1.0;&lt;BR /&gt; }&lt;BR /&gt; ~VideoEncodingTest();&lt;/P&gt;
&lt;P&gt; // Params&lt;BR /&gt; VideoStreamType mVideoStreamType;&lt;BR /&gt; Ipp32s mWidth;&lt;BR /&gt; Ipp32s mHeight;&lt;BR /&gt; Ipp32s maxNumFrames;&lt;BR /&gt; Ipp32s BitRate;&lt;BR /&gt; Ipp64f FrameRate;&lt;BR /&gt; Ipp32s chroma_format;&lt;BR /&gt; vm_char SrcFileName[MAX_FILELEN];&lt;BR /&gt; vm_char *ParFileName;&lt;BR /&gt; vm_char *DstFileName;&lt;BR /&gt; vm_char *AlphaFileName;&lt;BR /&gt; vm_char *ReconFileName; // Name of a file to save reconstructed frame&lt;BR /&gt; vm_char *PerfFileName;&lt;BR /&gt; vm_char *refEncodedFile;&lt;BR /&gt; vm_char *inpLogFile;&lt;BR /&gt; vm_char *outLogFile;&lt;BR /&gt; vm_char *resLogFile;&lt;BR /&gt; vm_file *perf_file;&lt;BR /&gt; Ipp32s numThreads;&lt;/P&gt;
&lt;P&gt; // Info&lt;BR /&gt; SysInfo m_csysinfo;&lt;BR /&gt; Ipp64f fullTime;&lt;BR /&gt; Ipp64f tickDuration;&lt;BR /&gt; vm_char codecName[15];&lt;BR /&gt; Ipp32s *FrameSize;&lt;BR /&gt; Ipp32s lastFrameNum;&lt;BR /&gt; Ipp64f lastPTS;&lt;BR /&gt;};&lt;/P&gt;
&lt;P&gt;Ipp64f VideoEncodingTest::GetTick()&lt;BR /&gt;{&lt;BR /&gt; return (Ipp64f)vm_time_get_tick() * tickDuration;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;VideoEncodingTest::~VideoEncodingTest()&lt;BR /&gt;{&lt;BR /&gt; if (pCodec) {&lt;BR /&gt; delete pCodec;&lt;BR /&gt; pCodec = NULL;&lt;BR /&gt; }&lt;BR /&gt; if (pEncoderParams) {&lt;BR /&gt; delete pEncoderParams;&lt;BR /&gt; pEncoderParams = NULL;&lt;BR /&gt; }&lt;BR /&gt; if (FrameSize) {&lt;BR /&gt; delete [] FrameSize;&lt;BR /&gt; FrameSize = NULL;&lt;BR /&gt; }&lt;BR /&gt; if (dstFile) {&lt;BR /&gt; vm_file_fclose(dstFile);&lt;BR /&gt; dstFile = NULL;&lt;BR /&gt; }&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;Status VideoEncodingTest::PutOutputData(MediaData *out)&lt;BR /&gt;{&lt;BR /&gt; if (!out) { // at EOF&lt;BR /&gt; return UMC_ERR_NULL_PTR;&lt;BR /&gt; }&lt;BR /&gt; Ipp32s len = (Ipp32s)out-&amp;gt;GetDataSize();&lt;/P&gt;
&lt;P&gt;#if 1&lt;BR /&gt; Ipp64f PTS = out-&amp;gt;GetTime();&lt;BR /&gt; if (!FrameSize &amp;amp;&amp;amp; numFramesToEncode &amp;lt; (1 &amp;lt;&amp;lt; 16)) {&lt;BR /&gt; FrameSize = new Ipp32s[numFramesToEncode];&lt;BR /&gt; }&lt;BR /&gt; if (FrameSize &amp;amp;&amp;amp; len &amp;amp;&amp;amp; lastFrameNum &amp;lt; numFramesToEncode) {&lt;BR /&gt; if (lastFrameNum == 0 || PTS &amp;gt; lastPTS) {&lt;BR /&gt; FrameSize[lastFrameNum] = len;&lt;BR /&gt; lastPTS = PTS;&lt;BR /&gt; } else {&lt;BR /&gt; FrameSize[lastFrameNum] = FrameSize[lastFrameNum-1];&lt;BR /&gt; FrameSize[lastFrameNum-1] = len;&lt;BR /&gt; }&lt;BR /&gt; lastFrameNum++;&lt;BR /&gt; }&lt;BR /&gt;#endif&lt;/P&gt;
&lt;P&gt; m_csysinfo.GetCpuUsage();&lt;/P&gt;
&lt;P&gt; if (!(mFramesEncoded % 10)) {&lt;BR /&gt; vm_string_printf(VM_STRING("%d."), mFramesEncoded);&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt;#ifdef CHANGE_PARAMS&lt;BR /&gt; ChangeParams();&lt;BR /&gt;#endif&lt;/P&gt;
&lt;P&gt; return VideoEncodingSample::PutOutputData(out);&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;Status VideoEncodingTest::ChangeParams() // check set bitrate/set frame rate&lt;BR /&gt;{&lt;BR /&gt; Status st
;&lt;BR /&gt; VideoEncoderParams newpar;&lt;BR /&gt; st = pCodec-&amp;gt;GetInfo(&amp;amp;newpar);&lt;BR /&gt; vm_string_printf(VM_STRING("Q=%d%% "), newpar.qualityMeasure);&lt;BR /&gt; if(st != UMC_OK)&lt;BR /&gt; return st;&lt;BR /&gt; if(mFramesEncoded%9==1) {&lt;BR /&gt; //newpar.info.framerate *= 0.9; // random&lt;BR /&gt; newpar.info.bitrate = newpar.info.bitrate * 3 / 4; // random&lt;BR /&gt; if(newpar.qualityMeasure&amp;lt;40)&lt;BR /&gt; newpar.info.bitrate *= 5; // random&lt;/P&gt;
&lt;P&gt; vm_string_printf(VM_STRING("SetParams Called for bitrate = %d
"),newpar.info.bitrate);&lt;BR /&gt; st = pCodec-&amp;gt;SetParams(&amp;amp;newpar);&lt;BR /&gt; //if(st != UMC_OK) // not supported everywhere&lt;BR /&gt; // return st;&lt;BR /&gt; }&lt;BR /&gt; if(mFramesEncoded%3==1) {&lt;BR /&gt; newpar.numThreads = (newpar.numThreads &amp;amp; 3) + 1;&lt;BR /&gt; vm_string_printf(VM_STRING("SetParams Called for threads = %d
"),newpar.numThreads);&lt;BR /&gt; st = pCodec-&amp;gt;SetParams(&amp;amp;newpar);&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; if (mFramesEncoded%25==1) {&lt;BR /&gt; pCodec-&amp;gt;Reset();&lt;BR /&gt; }&lt;BR /&gt; { // close caption&lt;BR /&gt; MediaData cc;&lt;BR /&gt; vm_char text[30];&lt;BR /&gt; vm_string_sprintf(text, VM_STRING("CCaption %d"), mFramesEncoded);&lt;BR /&gt; cc.SetBufferPointer((Ipp8u*)text, sizeof(text));&lt;BR /&gt; cc.SetDataSize(vm_string_strlen(text)+1);&lt;BR /&gt; pCodec-&amp;gt;GetFrame(&amp;amp;cc, 0);&lt;BR /&gt; }&lt;BR /&gt; return UMC_OK;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;int PrintHelp(vm_char *prog_name, vm_char *err_message)&lt;BR /&gt;{&lt;BR /&gt; vm_string_printf(VM_STRING("Error: %s
"), err_message);&lt;BR /&gt; vm_string_printf(VM_STRING("Usage1: %s [m2|m4|h264|h263|h261|dv_sd|dv_50|dv_hd|vc1] [Options] InputParFile OutputEncodedFile
"), prog_name);&lt;BR /&gt; vm_string_printf(VM_STRING("Usage2: %s [m2|m4|h264|h263|h261|dv_sd|dv_50|dv_hd|vc1] [Options] -i InputYUVFile -o OutputEncodedFile
"), prog_name);&lt;BR /&gt; vm_string_printf(VM_STRING("Options: 
"));&lt;BR /&gt;#if defined ALPHA_BLENDING_H264&lt;BR /&gt; vm_string_printf(VM_STRING(" [-a file] - file for auxiliary pictures for alpha blending for H.264 encoder
"));&lt;BR /&gt;#endif // ALPHA_BLENDING_H264&lt;BR /&gt;#if defined UMC_ENABLE_H264_VIDEO_ENCODER &amp;amp;&amp;amp; defined SAVE_RECON&lt;BR /&gt; vm_string_printf(VM_STRING(" [-s file] - file for reconstructed frames (H.264 only!!!).
"));&lt;BR /&gt;#endif // UMC_ENABLE_H264_VIDEO_ENCODER &amp;amp;&amp;amp; SAVE_RECON&lt;BR /&gt; vm_string_printf(VM_STRING(" [-i inputFile] - input YUV video file
"));&lt;BR /&gt; vm_string_printf(VM_STRING(" [-w width] - video width
"));&lt;BR /&gt; vm_string_printf(VM_STRING(" [-h height] - video height
"));&lt;BR /&gt; vm_string_printf(VM_STRING(" [-f frameRate] - video frame rate (frames per second)
"));&lt;BR /&gt; vm_string_printf(VM_STRING(" [-b bitRate] - encoded bit rate (bits per second)
"));&lt;BR /&gt; vm_string_printf(VM_STRING(" [-n numFrames] - max frames to encode
"));&lt;BR /&gt; vm_string_printf(VM_STRING(" [-t num] - number of threads for encoding
"));&lt;BR /&gt; vm_string_printf(VM_STRING(" [-r] - enable
s threading of read/encode/write
"));&lt;BR /&gt; vm_string_printf(VM_STRING(" [-y dir] - directory of YUV files
"));&lt;BR /&gt; vm_string_printf(VM_STRING(" [-u file] - file for dumping perfomance info
"));&lt;BR /&gt; vm_string_printf(VM_STRING(" [-p file.csv] - file for dumping perfomance info into csv format
"));&lt;BR /&gt; vm_string_printf(VM_STRING("Note: Options -i,-w,-h,-f,-b,-n override corresponding values inside InputParFile.
"));&lt;BR /&gt; vm_string_printf(VM_STRING(" If InputParFile not specified, at least options -w,-h should be specified and -o should be added before OutputEncodedFile.
"));&lt;BR /&gt; vm_string_printf(VM_STRING("
"));&lt;BR /&gt; return 1;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;static int read_line(vm_char *file_name, int line_num, vm_char *line, int /*max_len*/)&lt;BR /&gt;{&lt;BR /&gt; vm_file *f;&lt;BR /&gt; int i;&lt;BR /&gt; if (NULL == (f = vm_file_open(file_name, VM_STRING("rt")))) {&lt;BR /&gt; vm_file_fprintf(vm_stderr, __VM_STRING("Couldn't open file %s
"), file_name);&lt;BR /&gt; return 1;&lt;BR /&gt; }&lt;BR /&gt; for (i = 0; i &amp;lt; line_num; i++) {&lt;BR /&gt; if (NULL == vm_file_fgets(line, MAX_FILELEN-1, f)) {&lt;BR /&gt; vm_file_fclose(f);&lt;BR /&gt; return 1;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; vm_file_fclose(f);&lt;BR /&gt; return 0;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;#define GET_OPTION_POINTER(PTR) &lt;BR /&gt; if (2 == vm_string_strlen(argv&lt;I&gt;)) { &lt;BR /&gt; i++; &lt;BR /&gt; if (argv&lt;I&gt;[0]=='-') { &lt;BR /&gt; return PrintHelp(argv[0], VM_STRING("in options")); &lt;BR /&gt; } else { &lt;BR /&gt; PTR = argv&lt;I&gt;; &lt;BR /&gt; } &lt;BR /&gt; } else { &lt;BR /&gt; PTR = argv&lt;I&gt; + 2; &lt;BR /&gt; }&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;#define DVEncoderParams VideoEncoderParams&lt;BR /&gt;#define DV50EncoderParams VideoEncoderParams&lt;BR /&gt;#define DV100EncoderParams VideoEncoderParams&lt;/P&gt;
&lt;P&gt;#define CREATE_ENCODER(CODEC) &lt;BR /&gt; vm_string_strcpy(codecName, VM_STRING(#CODEC)); &lt;BR /&gt; pCodec = new CODEC##VideoEncoder();&amp;amp;n
bsp; &lt;BR /&gt; if (ParFileName) { &lt;BR /&gt; pEncoderParams = new CODEC##EncoderParams; &lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt;Ipp32s VideoEncodingTest::Main(Ipp32s argc, vm_char *argv[])&lt;BR /&gt;{&lt;BR /&gt; vm_char *pVal;&lt;BR /&gt; vm_char *optFile = NULL;&lt;BR /&gt; Ipp64f t_start;&lt;BR /&gt; Ipp32s i, j;&lt;BR /&gt; Ipp64f size_ratio = 0;&lt;BR /&gt; vm_char line[MAX_FILELEN] = {0};&lt;/P&gt;
&lt;P&gt; t_start = GetTick();&lt;/P&gt;
&lt;P&gt; if (ippStaticInit() &amp;lt; ippStsNoErr) {&lt;BR /&gt; vm_file_fprintf(vm_stderr, VM_STRING("Error: Can't initialize ipp libs!
"));&lt;BR /&gt; return 5;&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; for (j = 0; j &amp;lt; 2; j++) {&lt;BR /&gt; vm_char optLine[256], *p, *p_end;&lt;BR /&gt; vm_char *argv_[256];&lt;BR /&gt; if (j) {&lt;BR /&gt; if (!optFile) {&lt;BR /&gt; break;&lt;BR /&gt; } else {&lt;BR /&gt; vm_file *f = vm_file_open(optFile, VM_STRING("r"));&lt;BR /&gt; if (!f) {&lt;BR /&gt; vm_file_fprintf(vm_stderr, VM_STRING("Cann't open opt file %s
"), optFile);&lt;BR /&gt; return PrintHelp(argv[0], VM_STRING("Cann't open opt file"));&lt;BR /&gt; }&lt;BR /&gt; *optLine = 0;&lt;BR /&gt; vm_file_fgets(optLine, 255, f);&lt;BR /&gt; vm_file_fclose(f);&lt;BR /&gt; p = optLine;&lt;BR /&gt; p_end = optLine + vm_string_strlen(optLine);&lt;BR /&gt; argc = 1;&lt;BR /&gt; argv = argv_;&lt;BR /&gt; argv_[0] = argv[0];&lt;BR /&gt; for (;;) {&lt;BR /&gt; argv[argc] = p;&lt;BR /&gt; argc++;&lt;BR /&gt; while ((p &amp;lt; p_end) &amp;amp;&amp;amp; (*p != ' ')) p++;&lt;BR /&gt; *p++ = 0;&lt;BR /&gt; while ((p &amp;lt; p_end) &amp;amp;&amp;amp; (*p == ' ')) p++;&lt;BR /&gt; if (p &amp;gt;= p_end) break;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt;/*&lt;BR /&gt; for (i = 1; i &amp;lt; argc; i++) {&lt;BR /&gt; printf("Option '%s'
", argv&lt;I&gt;);&lt;BR /&gt; }&lt;BR /&gt;*/&lt;BR /&gt; for (i = 1; i &amp;lt; argc; i++)&lt;BR /&gt; {&lt;BR /&gt; if ('-' != argv&lt;I&gt;[0]) {&lt;BR /&gt; if (UMC_OK == GetVideoType(argv&lt;I&gt;, &amp;amp;mVideoStreamType))&lt;BR /&gt;continue;&lt;BR /&gt; if (NULL == ParFileName) {&lt;BR /&gt; ParFileName = argv&lt;I&gt;;&lt;BR /&gt; } else {&lt;BR /&gt;&amp;amp;n
bsp; DstFileName = argv&lt;I&gt;;&lt;BR /&gt; }&lt;BR /&gt; continue;&lt;BR /&gt; }&lt;BR /&gt; if (UMC_OK == GetVideoType(argv&lt;I&gt; + 1, &amp;amp;mVideoStreamType)) continue;&lt;BR /&gt; if (UMC_OK == GetFormatType(argv&lt;I&gt; + 1, &amp;amp;mSrcFileColorFormat)) continue;&lt;BR /&gt; switch (argv&lt;I&gt;[1])&lt;BR /&gt; {&lt;BR /&gt; case 'y':&lt;BR /&gt; i++;&lt;BR /&gt; vm_string_strcpy(SrcFileName, argv&lt;I&gt;);&lt;BR /&gt; p = SrcFileName + vm_string_strlen(SrcFileName) - 1;&lt;BR /&gt; if (*p != '' &amp;amp;&amp;amp; *p != '/') {&lt;BR /&gt; vm_string_strcat(SrcFileName, VM_STRING(""));&lt;BR /&gt; }&lt;BR /&gt; break;&lt;BR /&gt; case 'p':&lt;BR /&gt; case 'P':&lt;BR /&gt; GET_OPTION_POINTER(PerfFileName);&lt;BR /&gt; break;&lt;BR /&gt; case 'w':&lt;BR /&gt; GET_OPTION_POINTER(pVal);&lt;BR /&gt; mWidth = (Ipp32s)vm_string_atol(pVal);&lt;BR /&gt; break;&lt;BR /&gt; case 'h':&lt;BR /&gt; GET_OPTION_POINTER(pVal);&lt;BR /&gt; mHeight = (Ipp32s)vm_string_atol(pVal);&lt;BR /&gt; break;&lt;BR /&gt; case 'f':&lt;BR /&gt; GET_OPTION_POINTER(pVal);&lt;BR /&gt; vm_string_sscanf(pVal, VM_STRING("%lf"), &amp;amp;FrameRate);&lt;BR /&gt; break;&lt;BR /&gt; case 'b':&lt;BR /&gt; GET_OPTION_POINTER(pVal);&lt;BR /&gt; BitRate = (Ipp32s)vm_string_atol(pVal);&lt;BR /&gt; break;&lt;BR /&gt; case 'n':&lt;BR /&gt; GET_OPTION_POINTER(pVal);&lt;BR /&gt; maxNumFrames = (Ipp32s)vm_string_atol(pVal);&lt;BR /&gt; break;&lt;BR /&gt; case 'i':&lt;BR /&gt; GET_OPTION_POINTER(pVal);&lt;BR /&gt; vm_string_strcpy(SrcFileName, pVal);&lt;BR /&gt; break;&lt;BR /&gt; case 'o':&lt;BR /&gt; GET_OPTION_POINTER(pVal);&lt;BR /&gt; Ds
tFileName = pVal;&lt;BR /&gt; break;&lt;BR /&gt; case 't':&lt;BR /&gt; GET_OPTION_POINTER(pVal);&lt;BR /&gt; numThreads = (Ipp32s)vm_string_atol(pVal);&lt;BR /&gt; break;&lt;BR /&gt;#if defined ALPHA_BLENDING_H264&lt;BR /&gt; case 'a':&lt;BR /&gt; GET_OPTION_POINTER(AlphaFileName);&lt;BR /&gt; break;&lt;BR /&gt;#endif // ALPHA_BLENDING_H264&lt;BR /&gt; case 's':&lt;BR /&gt; GET_OPTION_POINTER(ReconFileName);&lt;BR /&gt; break;&lt;BR /&gt; case 'u':&lt;BR /&gt; i++;&lt;BR /&gt; perf_file = vm_file_open(argv&lt;I&gt;, VM_STRING("w"));&lt;BR /&gt; break;&lt;BR /&gt; case 'z':&lt;BR /&gt; i++;&lt;BR /&gt; optFile = argv&lt;I&gt;;&lt;BR /&gt; break;&lt;BR /&gt; /////////////////&lt;BR /&gt; case 'c':&lt;BR /&gt; i++;&lt;BR /&gt; refEncodedFile = argv&lt;I&gt;;&lt;BR /&gt; break;&lt;BR /&gt; case 'l':&lt;BR /&gt; i++;&lt;BR /&gt; inpLogFile = argv&lt;I&gt;;&lt;BR /&gt; break;&lt;BR /&gt; case 'v':&lt;BR /&gt; i++;&lt;BR /&gt; outLogFile = argv&lt;I&gt;;&lt;BR /&gt; break;&lt;BR /&gt; case 'g':&lt;BR /&gt; i++;&lt;BR /&gt; resLogFile = argv&lt;I&gt;;&lt;BR /&gt; break;&lt;BR /&gt; /////////////////&lt;BR /&gt; //case 'h':&lt;BR /&gt; case '?':&lt;BR /&gt; default:&lt;BR /&gt; return PrintHelp(argv[0], VM_STRING("Unknown options"));&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; }&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt; if (!DstFileName) {&lt;BR /&gt; return PrintHelp(argv[0], VM_STRING("Destination file name not found"));&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; if (!ParFileName &amp;amp;&amp;amp; (!mWidth || !mHeight)) {&lt;BR /&gt; return PrintHelp(argv[0], VM_STRING("at least ParFile or options -w,-h should be specified"));&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; if (ParFileName) { // read first line of ParFile&lt;BR /&gt; if (read_line(ParFileName, 1, line, MAX_FILELEN)) {&lt;BR /&gt; return
 3;&lt;BR /&gt; }&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; if (mVideoStreamType == UNDEF_VIDEO) {&lt;BR /&gt; if (!ParFileName) {&lt;BR /&gt; mVideoStreamType = MPEG2_VIDEO;&lt;BR /&gt; } else {&lt;BR /&gt; if (vm_string_strstr(line, VM_STRING("MPEG-2"))) mVideoStreamType = MPEG2_VIDEO; else&lt;BR /&gt; if (vm_string_strstr(line, VM_STRING("MPEG-4"))) mVideoStreamType = MPEG4_VIDEO; else&lt;BR /&gt; if (vm_string_strstr(line, VM_STRING("H.261"))) mVideoStreamType = H261_VIDEO; else&lt;BR /&gt; if (vm_string_strstr(line, VM_STRING("H.263"))) mVideoStreamType = H263_VIDEO; else&lt;BR /&gt; if (vm_string_strstr(line, VM_STRING("H.264"))) mVideoStreamType = H264_VIDEO; else {&lt;BR /&gt; return PrintHelp(argv[0], VM_STRING("Unknown codec"));&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; if (ParFileName &amp;amp;&amp;amp; vm_string_strstr(line, VM_STRING("UseDefaultParameters"))) {&lt;BR /&gt; ParFileName = NULL; // use default parameters&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; switch (mVideoStreamType) {&lt;BR /&gt;#ifdef UMC_ENABLE_MPEG2_VIDEO_ENCODER&lt;BR /&gt; case MPEG2_VIDEO:&lt;BR /&gt; CREATE_ENCODER(MPEG2)&lt;BR /&gt; break;&lt;BR /&gt;#endif&lt;BR /&gt;#ifdef UMC_ENABLE_MPEG4_VIDEO_ENCODER&lt;BR /&gt; case MPEG4_VIDEO:&lt;BR /&gt; CREATE_ENCODER(MPEG4)&lt;BR /&gt; break;&lt;BR /&gt;#endif&lt;BR /&gt;#ifdef UMC_ENABLE_H261_VIDEO_ENCODER&lt;BR /&gt; case H261_VIDEO:&lt;BR /&gt; CREATE_ENCODER(H261)&lt;BR /&gt; break;&lt;BR /&gt;#endif&lt;BR /&gt;#ifdef UMC_ENABLE_H263_VIDEO_ENCODER&lt;BR /&gt; case H263_VIDEO:&lt;BR /&gt; CREATE_ENCODER(H263)&lt;BR /&gt; break;&lt;BR /&gt;#endif&lt;BR /&gt;#ifdef UMC_ENABLE_H264_VIDEO_ENCODER&lt;BR /&gt; case H264_VIDEO:&lt;BR /&gt; CREATE_ENCODER(H264)&lt;BR /&gt; break;&lt;BR /&gt;#endif&lt;BR /&gt;#ifdef UMC_ENABLE_DV_VIDEO_ENCODER&lt;BR /&gt; case DIGITAL_VIDEO_SD:&lt;BR /&gt; CREATE_ENCODER(DV)&lt;BR /&gt; break;&lt;BR /&gt;#endif&lt;BR /&gt;#ifdef UMC_ENABLE_DV50_VIDEO_ENCODER&lt;BR /&gt; case DIGITAL_VIDEO_50:&lt;BR /&gt; CREATE_ENCODER(DV50)&lt;BR /&gt; mColorFormat = YUV422;&lt;BR /&gt; break;&lt;BR /&gt;#endif&lt;BR /&gt;#ifdef UMC_ENABLE_DVHD_VIDEO_ENCODER&lt;BR /&gt; case DIGITAL_VIDEO_HD:&lt;BR /&gt; CREATE_ENCODER(DV100)&lt;BR /&gt; mColorFormat = YUV422;&lt;BR /&gt; break;&lt;BR /&gt;#endif&lt;BR /&gt;#ifdef UMC_ENABLE_VC1_VIDEO_ENCODER&lt;BR /&gt; case VC1_VIDEO:&lt;BR /&gt; CREATE_ENCODER(VC1)&lt;BR /&gt; break;&lt;BR /&gt;#endif&lt;BR /&gt; default:&lt;BR /&gt; vm_file_fprintf(vm_stderr, VM_STRING("Codec (%d) not supported
"), (int)mVideoStreamType);&lt;BR /&gt; return PrintHelp(argv[0], VM_STRING("Codec not supported"));&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; if (ParFileName) {&lt;BR /&gt; Status res;&lt;BR /&gt; res = pEncoderParams-&amp;gt;ReadParamFile(ParFileName);&lt;BR /&gt; if (res &amp;lt; UMC_OK) { // &amp;amp;l
t; means error&lt;BR /&gt; if (res == UMC_ERR_OPEN_FAILED) {&lt;BR /&gt; vm_file_fprintf(vm_stderr, VM_STRING("Error: Can't open par file %s
"), ParFileName);&lt;BR /&gt; } else {&lt;BR /&gt; vm_file_fprintf(vm_stderr, VM_STRING("Error: Can't parse par file %s
"), ParFileName);&lt;BR /&gt; }&lt;BR /&gt; return 3;&lt;BR /&gt; }&lt;BR /&gt;#ifdef UMC_ENABLE_MPEG2_VIDEO_ENCODER&lt;BR /&gt; if (mVideoStreamType == MPEG2_VIDEO) {&lt;BR /&gt; //chroma_format = ((MPEG2EncoderParams*)pEncoderParams)-&amp;gt;chroma_format;&lt;BR /&gt; mColorFormat = pEncoderParams-&amp;gt;info.color_format;&lt;BR /&gt; }&lt;BR /&gt;#endif&lt;BR /&gt;#ifdef UMC_ENABLE_VC1_VIDEO_ENCODER&lt;BR /&gt; if (mVideoStreamType == VC1_VIDEO) {&lt;BR /&gt; if(!maxNumFrames)&lt;BR /&gt; {&lt;BR /&gt; if (((VC1EncoderParams*)pEncoderParams)-&amp;gt;m_uiNumFrames)&lt;BR /&gt; maxNumFrames = ((VC1EncoderParams*)pEncoderParams)-&amp;gt;m_uiNumFrames;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt;#endif&lt;BR /&gt;#ifdef UMC_ENABLE_H264_VIDEO_ENCODER&lt;BR /&gt; if (mVideoStreamType == H264_VIDEO) {&lt;BR /&gt; H264EncoderParams *params = (H264EncoderParams*)pEncoderParams;&lt;BR /&gt; chroma_format = params-&amp;gt;chroma_format_idc;&lt;BR /&gt; mBitDepth = (IPP_MAX(params-&amp;gt;bit_depth_luma, params-&amp;gt;bit_depth_chroma) &amp;gt; 8)? 16 : 8;&lt;BR /&gt; mBitDepthAlpha = (params-&amp;gt;bit_depth_aux &amp;gt; 8)? 16: 8;&lt;BR /&gt; numFramesToEncode = params-&amp;gt;numFramesToEncode;&lt;BR /&gt;#if 0&lt;BR /&gt; if (ReconFileName) {&lt;BR /&gt; ((H264EncoderParams*)pEncoderParams)-&amp;gt;m_SaveReconFlag = 1;&lt;BR /&gt; vm_string_strncpy(((H264EncoderParams*)pEncoderParams)-&amp;gt;m_ReconFileName, ReconFileName, MAXIMUM_PATH);&lt;BR /&gt; printf("ReconFileName = "%s"
", ((H264EncoderParams*)pEncoderParams)-&amp;gt;m_ReconFileName);&lt;BR /&gt; }&lt;BR /&gt;#endif&lt;BR /&gt; mColorFormat = (chroma_format == 0)? GRAY&lt;BR /&gt; : (chroma_format == 2)? YUV422&lt;BR /&gt; : (chroma_format == 3)? YUV444&lt;BR /&gt; : YUV420; // Accept monochromes with UV components filled with dummy values.&lt;BR /&gt; }&lt;BR /&gt;#endif&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; if ((!SrcFileName[0] || SrcFileName[vm_string_strlen(SrcFileName) - 1] == '') &amp;amp;&amp;amp; ParFileName) {&lt;BR /&gt; // read stream filename from second line of ParFile&lt;BR /&gt; vm_char SrcName[MAX_FILELEN];&lt;/P&gt;
&lt;P&gt; if (read_line(ParFileName, 2, line, MAX_FILELEN)) {&lt;BR /&gt; return 3;&lt;BR /&gt; }&lt;BR /&gt;&amp;nbsp;
; vm_string_sscanf(line, VM_STRING("%s"), SrcName);&lt;BR /&gt; vm_string_strcat(SrcFileName, SrcName); // concatenate&lt;BR /&gt; }&lt;BR /&gt;#ifdef UMC_ENABLE_VC1_VIDEO_ENCODER&lt;BR /&gt; if (ParFileName) {&lt;BR /&gt; if (mVideoStreamType == VC1_VIDEO) {&lt;BR /&gt; ((VC1EncoderParams*)pEncoderParams)-&amp;gt;m_pStreamName = SrcFileName;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt;#endif&lt;BR /&gt; if (!ParFileName) {&lt;BR /&gt; pEncoderParams = new VideoEncoderParams;&lt;BR /&gt; pEncoderParams-&amp;gt;info.color_format = (chroma_format == 0)? GRAY&lt;BR /&gt; : (chroma_format == 2)? YUV422&lt;BR /&gt; : (chroma_format == 3)? YUV444&lt;BR /&gt; : YUV420; // Accept monochromes with UV components filled with dummy values.&lt;/P&gt;
&lt;P&gt; if (!maxNumFrames) {&lt;BR /&gt; maxNumFrames = 0x7fffffff;&lt;BR /&gt; }&lt;BR /&gt; if (!FrameRate) {&lt;BR /&gt; FrameRate = 30;&lt;BR /&gt; }&lt;BR /&gt; if (BitRate &amp;lt; 0) {&lt;BR /&gt; BitRate = 5000000;&lt;BR /&gt; }&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; // override param's if non-zero&lt;BR /&gt; if (mWidth &amp;amp;&amp;amp; mHeight) {&lt;BR /&gt; pEncoderParams-&amp;gt;info.clip_info.width = mWidth;&lt;BR /&gt; pEncoderParams-&amp;gt;info.clip_info.height = mHeight;&lt;BR /&gt; } else {&lt;BR /&gt; mWidth = pEncoderParams-&amp;gt;info.clip_info.width;&lt;BR /&gt; mHeight = pEncoderParams-&amp;gt;info.clip_info.height;&lt;BR /&gt; }&lt;BR /&gt; if (maxNumFrames) {&lt;BR /&gt; numFramesToEncode = maxNumFrames;&lt;BR /&gt; } else {&lt;BR /&gt; maxNumFrames = numFramesToEncode;&lt;BR /&gt; }&lt;BR /&gt; if (FrameRate) {&lt;BR /&gt; pEncoderParams-&amp;gt;info.framerate = FrameRate;&lt;BR /&gt; } else {&lt;BR /&gt; FrameRate = pEncoderParams-&amp;gt;info.framerate;&lt;BR /&gt; }&lt;BR /&gt; if (BitRate &amp;gt;= 0) {&lt;BR /&gt; pEncoderParams-&amp;gt;info.bitrate = BitRate;&lt;BR /&gt; } else {&lt;BR /&gt; BitRate = pEncoderParams-&amp;gt;info.bitrate;&lt;BR /&gt; }&lt;BR /&gt; pEncoderParams-&amp;gt;numThreads = numThreads;&lt;/P&gt;
&lt;P&gt; srcFile = vm_file_open(SrcFileName, VM_STRING("rb"));&lt;BR /&gt; if (NULL == srcFile) {&lt;BR /&gt; vm_file_fprintf(vm_stderr, VM_STRING("Error opening file %s"), SrcFileName);&lt;BR /&gt; return 8;&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; dstFile = vm_file_open(DstFileName, VM_STRING("wb"));&lt;BR /&gt; if (NULL == dstFile) {&lt;BR /&gt; vm_file_fprintf(vm_stderr, VM_STRING("Error: Can't open output file '%s'
"), DstFileName);&lt;BR /&gt; return 9;&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; if (AlphaFileName) {&lt;BR /&gt; srcAlphaFile = vm_file_open(AlphaFileName, VM_STRING("rb"));&lt;BR /&gt; if (NULL == srcAlphaFile) {&lt;BR /&gt; vm_file_fprintf(vm_stderr, VM_STRING("Error opening file %s"), AlphaFileName);&lt;BR /&gt; return 8;&lt;BR /&gt; }&lt;BR /&gt; if (mColorFormat == YUV420) mColorFormat = YUV420A; else&lt;BR /&gt; if (mColorFormat == YUV422) mColorFormat = YUV422A; els
e&lt;BR /&gt; if (mColorFormat == YUV444) mColorFormat = YUV444A;&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; if (pCodec-&amp;gt;Init(pEncoderParams) != UMC_OK) {&lt;BR /&gt; vm_file_fprintf(vm_stderr, VM_STRING("Error: Video encoder initialization failed
"));&lt;BR /&gt; return 6;&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; if (pCodec-&amp;gt;GetInfo(pEncoderParams) != UMC_OK) {&lt;BR /&gt; vm_file_fprintf(vm_stderr, VM_STRING("Error: Video encoder GetInfo failed
"));&lt;BR /&gt; return 7;&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; vm_string_printf(VM_STRING("
"));&lt;BR /&gt; vm_string_printf(VM_STRING("Starting %s encoding %s to file %s
"), codecName, SrcFileName, DstFileName);&lt;BR /&gt; vm_string_printf(VM_STRING("Source video width = %d, height = %d, frameRate = %.2lf
"),&lt;BR /&gt; mWidth, mHeight, FrameRate);&lt;BR /&gt; vm_string_printf(VM_STRING("Max frames to encode = %d
"), maxNumFrames);&lt;BR /&gt; if (pEncoderParams-&amp;gt;info.bitrate &amp;gt; 0)&lt;BR /&gt; vm_string_printf(VM_STRING("Encoding bit rate = %d bits per second
"), pEncoderParams-&amp;gt;info.bitrate);&lt;BR /&gt; else&lt;BR /&gt; vm_string_printf(VM_STRING("Encoding without rate control
"));&lt;/P&gt;
&lt;P&gt; m_csysinfo.GetCpuUsage();&lt;BR /&gt; DumpPerf0();&lt;/P&gt;
&lt;P&gt; Run();&lt;/P&gt;
&lt;P&gt; fullTime = GetTick() - t_start;&lt;/P&gt;
&lt;P&gt; m_csysinfo.GetCpuUsage();&lt;BR /&gt; DumpPerf1();&lt;/P&gt;
&lt;P&gt; vm_string_printf(VM_STRING("
Summary:
"));&lt;BR /&gt; vm_string_printf(VM_STRING(" Num frames encoded = %d
"), mFramesEncoded);&lt;BR /&gt; vm_string_printf(VM_STRING(" Encoding Time = %.2f sec, %.2f fps
"), encodingTime, mFramesEncoded/encodingTime);&lt;BR /&gt; vm_string_printf(VM_STRING(" Overall Time = %.2f sec, %.2f fps
"), fullTime, mFramesEncoded/fullTime);&lt;BR /&gt; vm_string_printf(VM_STRING(" Average CPU usage = %.2lf%%
"), m_csysinfo.GetAvgCpuUsage());&lt;BR /&gt; vm_string_printf(VM_STRING(" Encoded Size = %d bytes
"), encodedSize);&lt;BR /&gt; vm_string_printf(VM_STRING(" Compression Ratio = %.2f
"), ((Ipp64f)mFramesEncoded*mFrameSize)/encodedSize);&lt;/P&gt;
&lt;P&gt; if (pEncoderParams-&amp;gt;info.framerate &amp;gt; 0 &amp;amp;&amp;amp; pEncoderParams-&amp;gt;info.bitrate &amp;gt; 0) {&lt;BR /&gt; size_ratio = encodedSize/(((Ipp64f)mFramesEncoded/pEncoderParams-&amp;gt;info.framerate)*(pEncoderParams-&amp;gt;info.bitrate/8));&lt;BR /&gt; vm_string_printf(VM_STRING(" EncodedSize/ExpectedSize = %.2f
"), size_ratio);&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; if (perf_file != NULL) {&lt;BR /&gt; vm_string_fprintf(perf_file, VM_STRING("Performance = %.2f fps"), mFramesEncoded/encodingTime);&lt;BR /&gt; vm_string_fprintf(perf_file, VM_STRING(", EncodedSize/ExpectedSize = %.2f
"), size_ratio);&lt;BR /&gt; vm_string_fprintf(perf_file, VM_STRING("num = %d"), mFramesEncoded);&lt;BR /&gt; vm_string_fprintf(perf_file, VM_STRING("performance = %.5f"), mFramesEncoded/encodingTime);&lt;BR /&gt; vm_string_fprintf(perf_file, VM_STRING("perf_overall = %.5f"), fullTime);&lt;BR /&gt; vm_string_fprintf(perf_file, VM_STRING("size_ratio = %.5f"), ((Ipp64f)mFramesEncoded*mFrameSize)/encodedSize);&lt;BR /&gt; vm_file_fclose(perf_file);&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; if (dstFile) {&lt;BR /&gt; vm_file_fclose(dstFile);&lt;BR /&gt; dstFile = NU
LL;&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; if (srcFile) {&lt;BR /&gt; vm_file_fclose(srcFile);&lt;BR /&gt; srcFile = NULL;&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; return 0;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;void VideoEncodingTest::DumpPerf0()&lt;BR /&gt;{&lt;BR /&gt; sSystemInfo* m_ssysteminfo = (sSystemInfo *)m_csysinfo.GetSysInfo();&lt;BR /&gt; vm_char* stream_name = NULL;&lt;BR /&gt; vm_file *perf_file_csv = NULL;&lt;BR /&gt; vm_char tmpbuf[128]={0,};&lt;/P&gt;
&lt;P&gt; if(PerfFileName)&lt;BR /&gt; perf_file_csv = vm_file_open(PerfFileName, VM_STRING("a"));&lt;/P&gt;
&lt;P&gt; if(perf_file_csv){&lt;BR /&gt; IppLibraryVersion *ipplibversion;&lt;BR /&gt; stream_name = vm_string_strrchr(SrcFileName, (Ipp32s)(''));&lt;BR /&gt; if(!stream_name)stream_name = SrcFileName;&lt;BR /&gt; else stream_name++;&lt;BR /&gt; vm_file_fseek( perf_file_csv, 0, VM_FILE_SEEK_END);&lt;BR /&gt; if(!vm_file_ftell( perf_file_csv))&lt;BR /&gt; vm_string_fprintf(perf_file_csv, VM_STRING("Date,Time,Comp.name,OS,CPU,Num.CPU,CPU freq.,MEM,VGA,App,App description,Ver.,Ipp Type,Ipp ver.,Ipp Desc.,Streams(S) name,Output S. name,Status,Output S. size,S.Type,S.Res.,S.FR,S.BR,Video(V)Type,V.Format,V.Num,R.S.BR,V.E/D(FpS),V.E/D(MHz),Compr.(%%),CPU Usage (%%),Max Cpu Usage (%%),Work.Time,1e,2e,3e,4e,5e,
"));&lt;BR /&gt; vm_sys_info_get_date(tmpbuf,MMDDYY);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%s,"), tmpbuf);&lt;BR /&gt; vm_sys_info_get_time(tmpbuf,HHMMSS);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%s,"), tmpbuf);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%s,"), m_ssysteminfo-&amp;gt;computer_name);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%s,"), m_ssysteminfo-&amp;gt;os_name);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%s,"), m_ssysteminfo-&amp;gt;proc_name);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%d,"), m_ssysteminfo-&amp;gt;num_proc);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%.2f,"), (Ipp64f)m_ssysteminfo-&amp;gt;cpu_freq);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%d,"), m_ssysteminfo-&amp;gt;phys_mem);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%s,"), m_ssysteminfo-&amp;gt;video_card);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%s,"),m_ssysteminfo-&amp;gt;program_name);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("UMC Video Encoder Con.,"));//,m_ssysteminfo-&amp;gt;description);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING(",")); // ver. of aplications&lt;BR /&gt; ipplibversion = (IppLibraryVersion*)ippvcGetLibVersion();&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%s,"), ipplibversion-&amp;gt;targetCpu);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%d.%d.%d.%d,"), ipplibversion-&amp;gt;major,ipplibversion-&amp;gt;minor,ipplibversion-&amp;gt;majorBuild,ipplibversion-&amp;gt;build);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%s (%s),"), ipplibversion-&amp;gt;Version,ipplibversion-&amp;gt;BuildDate);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%s,"), stream_name);&lt;BR /&gt; stream_name = vm
_string_strrchr(DstFileName, (Ipp32s)(''));&lt;BR /&gt; if(!stream_name)stream_name = DstFileName;&lt;BR /&gt; else stream_name++;&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%s,"), stream_name);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("FAIL,
"));&lt;BR /&gt; vm_file_fclose(perf_file_csv);&lt;BR /&gt; }&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;void VideoEncodingTest::DumpPerf1()&lt;BR /&gt;{&lt;BR /&gt; sSystemInfo* m_ssysteminfo = (sSystemInfo *)m_csysinfo.GetSysInfo();&lt;BR /&gt; vm_file *perf_file_csv = NULL;&lt;/P&gt;
&lt;P&gt; if(PerfFileName)&lt;BR /&gt; perf_file_csv = vm_file_open(PerfFileName, VM_STRING("r+"));&lt;/P&gt;
&lt;P&gt; if(perf_file_csv) {&lt;BR /&gt; vm_file_fseek( perf_file_csv, -6, VM_FILE_SEEK_END);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("PASSED,"));&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%d,"), encodedSize);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("PV,"));&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%dx%d,"),pEncoderParams-&amp;gt;info.clip_info.width,pEncoderParams-&amp;gt;info.clip_info.height);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%.2lf,"),pEncoderParams-&amp;gt;info.framerate);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%d,"),pEncoderParams-&amp;gt;info.bitrate/1000);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%s,"), codecName);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING(","));&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%d,"), mFramesEncoded);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%d,"), (Ipp32s)(encodedSize/mFramesEncoded*pEncoderParams-&amp;gt;info.framerate*8/1000));&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%.2lf,"), mFramesEncoded/encodingTime);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%.2lf,"), (Ipp64f)(pEncoderParams-&amp;gt;info.framerate/(mFramesEncoded/encodingTime)*(m_ssysteminfo-&amp;gt;cpu_freq)));&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%.2lf,"), ((Ipp64f)encodedSize*100.0/(mFramesEncoded*mFrameSize)));&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%.2lf,"), m_csysinfo.GetAvgCpuUsage());&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%.2lf,"), m_csysinfo.GetMaxCpuUsage());&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%02d:%02d:%02d.%02d,"),(Ipp32s)fullTime/3600,(Ipp32s)(fullTime)%3600/60,(Ipp32s)fullTime%3600%60,(Ipp32s)((fullTime-(Ipp32s)fullTime)*100));&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("
" ));&lt;BR /&gt;#if 0&lt;BR /&gt; if (FrameSize) {&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("Frame Info
Num, Size
"));&lt;BR /&gt; for (i = 0; i &amp;lt; mFramesEncoded; i ++)&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%d, %d
"), i, FrameSize&lt;I&gt;);&lt;BR /&gt; }&lt;BR /&gt;#endif&lt;BR /&gt; vm_file_fclose(perf_file_csv);&lt;BR /&gt; }&lt;BR /&gt;}&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;#ifndef NO_MAIN&lt;/P&gt;
&lt;P&gt;int main(Ipp32s argc, vm_char *argv[])&lt;BR /&gt;{&lt;BR /&gt; //Command line: video_enc_con m4 -i output_mpeg4_420.yuv -w 720 -h 288 -f 25 -b 800000 -n 577 -o out.m4v&lt;BR /&gt; char lpCmdLine[MAX_PATH];&lt;BR /&gt; char sYUV_File[MAX_PATH];&lt;BR /&gt; strcpy(sYUV_File,"channel0.yuv");&lt;BR /&gt; in
t iWidth = 720;&lt;BR /&gt; int iHeight = 288;&lt;BR /&gt; int iFrameRate = 5; // 25&lt;BR /&gt; int iTotalFrame = 5; // 577&lt;BR /&gt; sprintf(lpCmdLine,"video_enc_con m4 -i %s -w %i -h %i -f %i -b 100000 -n %i -o out.m4v",sYUV_File,iWidth,iHeight,iFrameRate,iTotalFrame); &lt;/P&gt;
&lt;P&gt; int _argc = 0;&lt;BR /&gt; char* _argv[MAX_PATH]; &lt;BR /&gt; char seps[]=" "; &lt;BR /&gt; char *token; &lt;BR /&gt; token = strtok( lpCmdLine, seps ); &lt;BR /&gt; while( token != NULL ) {&lt;BR /&gt;_argv[_argc] = new char [MAX_PATH];&lt;BR /&gt; strcpy(_argv[_argc],token);&lt;BR /&gt; _argc++;&lt;BR /&gt;token = strtok( NULL, seps ); &lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; VideoEncodingTest Encode;&lt;BR /&gt; Encode.Main(_argc, _argv);&lt;BR /&gt; AVI_Muxer(iWidth,iHeight,iFrameRate,"out.m4v","channel_0_5_1.avi");&lt;BR /&gt; for (int i=0; i&amp;lt;_argc;i++)&lt;BR /&gt;delete []_argv&lt;I&gt;;&lt;BR /&gt;}&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;#endif&lt;/P&gt;
&lt;P&gt;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;/P&gt;
&lt;P&gt;//End of the Mpeg4 Encoder source code:&lt;/P&gt;
&lt;P&gt;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;</description>
    <pubDate>Mon, 11 Aug 2008 00:56:31 GMT</pubDate>
    <dc:creator>antony0604</dc:creator>
    <dc:date>2008-08-11T00:56:31Z</dc:date>
    <item>
      <title>Mpeg4Decoder: Some .avi file can't be Decoded.</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Mpeg4Decoder-Some-avi-file-can-t-be-Decoded/m-p/906390#M13537</link>
      <description>&lt;P&gt;I download w_ipp-samples_p_5.3.095.zip, and try to implement the Mpeg4 Encoder/Decoder. All the .avi(produce from the Mpeg4 Encoder ) files can be played in Window Media Player, but some .avi file cann't be decode by Mpeg4 Decoder. For example two avi file: their format is all the same as follow : mpeg4 encode, 720x288 , 5fps, video length is 5 frames. The channel_0_5_1.avi can be decoded successly be Mpeg4 Decoder, but channel_0_5_bad_1.avi cann't not. Is anyone can tell me how to resolve this problem.&lt;/P&gt;
&lt;P&gt;Here is the avi link : &lt;A href="http://www.sunvision.cc/Temp/mpeg4encode_avi.rar"&gt;http://www.sunvision.cc/Temp/mpeg4encode_avi.rar&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;/P&gt;
&lt;P&gt;// Follow is the Mpeg4 Decoder source code:&lt;/P&gt;
&lt;P&gt;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;/P&gt;
&lt;P&gt;#include &lt;STDIO.H&gt;&lt;BR /&gt;#include &lt;STDLIB.H&gt;&lt;BR /&gt;#include "ippdefs.h"&lt;BR /&gt;#include "ippcore.h"&lt;BR /&gt;#include "ipps.h"&lt;BR /&gt;#include "ippi.h"&lt;BR /&gt;#include "ippj.h"&lt;BR /&gt;#include "ippcc.h"&lt;BR /&gt;#include "vm_time.h"&lt;BR /&gt;#include "umc_defs.h"&lt;BR /&gt;#include "umc_structures.h"&lt;BR /&gt;#include "umc_data_reader.h"&lt;BR /&gt;#include "umc_splitter.h"&lt;BR /&gt;#include "umc_video_decoder.h"&lt;BR /&gt;#include "umc_video_encoder.h"&lt;BR /&gt;#include "umc_video_data.h"&lt;BR /&gt;#include "umc_video_render.h"&lt;BR /&gt;#include "umc_file_writer.h"&lt;/STDLIB.H&gt;&lt;/STDIO.H&gt;&lt;/P&gt;
&lt;P&gt;#include "umc_file_reader.h"&lt;BR /&gt;#include "umc_fio_reader.h"&lt;BR /&gt;#include "umc_avi_splitter.h"&lt;BR /&gt;#include "umc_mjpeg_video_decoder.h"&lt;BR /&gt;#include "umc_mpeg4_video_decoder.h"&lt;BR /&gt;#include "umc_mpeg4_video_encoder.h"&lt;BR /&gt;#include "fw_video_render.h"&lt;/P&gt;
&lt;P&gt;using namespace UMC;&lt;/P&gt;
&lt;P&gt;static void copyright(void)&lt;BR /&gt;{&lt;BR /&gt;vm_string_printf(VM_STRING("
Intel Media processing sample based on
"));&lt;BR /&gt;vm_string_printf(VM_STRING(" UMC and Intel Integrated PerformancePrimitives
"));&lt;BR /&gt;vm_string_printf(VM_STRING("Copyright(c) 2005-2007 Intel Corporation. AllRights Reserved.

"));&lt;BR /&gt;return;&lt;BR /&gt;} // copyright()&lt;/P&gt;
&lt;P&gt;static void ipp_version(void)&lt;BR /&gt;{&lt;BR /&gt;const IppLibraryVersion* version;&lt;BR /&gt;vm_string_printf(VM_STRING("Intel Integrated Performance Primitives
"));&lt;/P&gt;
&lt;P&gt;/* ippCore version info */&lt;BR /&gt;version = ippGetLibVersion();&lt;BR /&gt;vm_string_printf(VM_STRING(" %s,	%s {%d.%d.%d.%d},	build date %s
"),&lt;BR /&gt;version-&amp;gt;Name,&lt;BR /&gt;version-&amp;gt;Version,&lt;BR /&gt;version-&amp;gt;major,version-&amp;gt;minor,version-&amp;gt;majorBuild,version-&amp;gt;build,&lt;BR /&gt;version-&amp;gt;BuildDate);&lt;/P&gt;
&lt;P&gt;/* ippSP version info */&lt;BR /&gt;version = ippsGetLibVersion();&lt;BR /&gt;vm_string_printf(VM_STRING(" %s,	%s {%d.%d.%d.%d},	build date %s
"),&lt;BR /&gt;version-&amp;gt;Name,&lt;BR /&gt;version-&amp;gt;Version,&lt;BR /&gt;version-&amp;gt;major,version-&amp;gt;minor,version-&amp;gt;majorBuild,version-&amp;gt;build,&lt;BR /&gt;version-&amp;gt;BuildDate);&lt;/P&gt;
&lt;P&gt;/* ippIP version info */&lt;BR /&gt;version = ippiGetLibVersion();&lt;BR /&gt;vm_string_printf(VM_STRING(" %s,	%s {%d.%d.%d.%d},	build date %s
"),&lt;BR /&gt;version-&amp;gt;Name,&lt;BR /&gt;version-&amp;gt;Version,&lt;BR /&gt;version-&amp;gt;major,version-&amp;gt;minor,version-&amp;gt;majorBuild,version-&amp;gt;build,&lt;BR /&gt;version-&amp;gt;BuildDate);&lt;/P&gt;
&lt;P&gt;/* ippJP vers
ion info */&lt;BR /&gt;version = ippjGetLibVersion();&lt;BR /&gt;vm_string_printf(VM_STRING(" %s,	%s {%d.%d.%d.%d},	build date %s
"),&lt;BR /&gt;version-&amp;gt;Name,&lt;BR /&gt;version-&amp;gt;Version,&lt;BR /&gt;version-&amp;gt;major,version-&amp;gt;minor,version-&amp;gt;majorBuild,version-&amp;gt;build,&lt;BR /&gt;version-&amp;gt;BuildDate);&lt;/P&gt;
&lt;P&gt;/* ippCC version info */&lt;BR /&gt;version = ippccGetLibVersion();&lt;BR /&gt;vm_string_printf(VM_STRING(" %s,	%s {%d.%d.%d.%d},	build date %s
"),&lt;BR /&gt;version-&amp;gt;Name,&lt;BR /&gt;version-&amp;gt;Version,&lt;BR /&gt;version-&amp;gt;major,version-&amp;gt;minor,version-&amp;gt;majorBuild,version-&amp;gt;build,&lt;BR /&gt;version-&amp;gt;BuildDate);&lt;BR /&gt;vm_string_printf(VM_STRING("
"));&lt;/P&gt;
&lt;P&gt;return;&lt;BR /&gt;} // ipp_version()&lt;/P&gt;
&lt;P&gt;UMC::Status&lt;BR /&gt;InitDataReader(&lt;BR /&gt;DataReader* pDataReader,&lt;BR /&gt;Ipp8u* file_name)&lt;BR /&gt;{&lt;BR /&gt;FileReaderParams reader_params;&lt;BR /&gt;reader_params.m_portion_size = 0;&lt;BR /&gt;vm_string_strcpy(reader_params.m_file_name, (const char*)file_name);&lt;BR /&gt;return pDataReader-&amp;gt;Init(&amp;amp;reader_params);&lt;BR /&gt;} // InitDataReader()&lt;/P&gt;
&lt;P&gt;UMC::Status&lt;BR /&gt;InitAVISplitter(&lt;BR /&gt;Splitter* pAVISplitter,&lt;BR /&gt;DataReader* pDataReader)&lt;BR /&gt;{&lt;BR /&gt;SplitterParams spl_params;&lt;BR /&gt;spl_params.m_lFlags = UMC::VIDEO_SPLITTER; // want to exctract only video&lt;BR /&gt;spl_params.m_pDataReader = pDataReader;&lt;BR /&gt;return pAVISplitter-&amp;gt;Init(spl_params);&lt;BR /&gt;} // InitAVISplitter()&lt;/P&gt;
&lt;P&gt;UMC::Status&lt;BR /&gt;InitVideoDecoder(&lt;BR /&gt;VideoDecoder* pVideoDecoder,&lt;BR /&gt;VideoStreamInfo* video_info, int iVideoType)&lt;BR /&gt;{&lt;BR /&gt;if (video_info-&amp;gt;stream_type != iVideoType) //UMC::MJPEG_VIDEO&lt;BR /&gt;return UMC_ERR_FAILED;&lt;BR /&gt;VideoDecoderParams dec_params;&lt;BR /&gt;dec_params.info = *video_info;&lt;BR /&gt;dec_params.lFlags = 0; &lt;BR /&gt;dec_params.numThreads = 1;&lt;BR /&gt;return pVideoDecoder-&amp;gt;Init(&amp;amp;dec_params);&lt;BR /&gt;} // InitMJPEGVideoDecoder()&lt;/P&gt;
&lt;P&gt;UMC::Status&lt;BR /&gt;InitVideoRender(&lt;BR /&gt;VideoRender* pVideoRender,&lt;BR /&gt;VideoStreamInfo* video_info, char* sOutputName)&lt;BR /&gt;{&lt;BR /&gt;UMC::Status status;&lt;BR /&gt;//use FWVideoRenderParams to replace VideoRenderParams, because it can assign the output filename&lt;BR /&gt;//VideoRenderParams : default output name: output.yuv&lt;BR /&gt;//VideoRenderParams render_params;&lt;BR /&gt;FWVideoRenderParams render_params; &lt;BR /&gt;render_params.pOutFile = sOutputName;&lt;BR /&gt;status = render_params.out_data_template.Init(&lt;BR /&gt;video_info-&amp;gt;clip_info.width,&lt;BR /&gt;video_info-&amp;gt;clip_info.height,&lt;BR /&gt;video_info-&amp;gt;color_format);&lt;BR /&gt;if(UMC_OK != status)&lt;BR /&gt;return status;&lt;BR /&gt;return pVideoRender-&amp;gt;Init(&amp;amp;render_params);&lt;BR /&gt;} // InitVideoRender()&lt;/P&gt;
&lt;P&gt;UMC::Status&lt;BR /&gt;DecodeVideo(vm_char* input_file, char* sOutputName)&lt;BR /&gt;{&lt;BR /&gt;Ipp32u track;&lt;BR /&gt;Ipp32s nframes;&lt;BR /&gt;vm_tick t0;&lt;BR /&gt;vm_tick t1;&lt;BR /&gt;vm_tick total;&lt;BR /&gt;vm_tick freq;&lt;BR /&gt;Ipp64f fps;&lt;BR /&gt;FIOReader src;&lt;BR /&gt;AVISplitter avi_spl;&lt;BR /&gt;SplitterInfo* spl_info;&lt;BR /&gt;VideoStreamInfo* video_info;&lt;BR /&gt;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;BR /&gt;// if your file format change, you must change the Decoder&lt;BR /&gt;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;BR /&gt;MPEG4VideoDecoder VedioDecoder;//MJPEGVideo
Decoder,MPEG4VideoDecoder&lt;/P&gt;
&lt;P&gt;FWVideoRender dst;&lt;BR /&gt;MediaData in;&lt;BR /&gt;VideoData out;&lt;BR /&gt;UMC::Status umcRes;&lt;/P&gt;
&lt;P&gt;// Initialize data reader component&lt;BR /&gt;umcRes = InitDataReader(&amp;amp;src, (Ipp8u *)input_file);&lt;BR /&gt;if (umcRes != UMC_OK)&lt;BR /&gt;return umcRes;&lt;/P&gt;
&lt;P&gt;// Initialize splitter component&lt;BR /&gt;umcRes = InitAVISplitter(&amp;amp;avi_spl, &amp;amp;src);&lt;BR /&gt;if (umcRes != UMC_OK)&lt;BR /&gt;return umcRes;&lt;/P&gt;
&lt;P&gt;// get stream info&lt;BR /&gt;umcRes = avi_spl.GetInfo(&amp;amp;spl_info);&lt;BR /&gt;if (umcRes != UMC_OK)&lt;BR /&gt;return umcRes;&lt;/P&gt;
&lt;P&gt;// find required track&lt;BR /&gt;int iVideoStreamType = MPEG4_VIDEO;&lt;BR /&gt;for (track = 0; track &amp;lt; spl_info-&amp;gt;m_nOfTracks; track++){&lt;BR /&gt;if (TRACK_MPEG4V == spl_info-&amp;gt;m_ppTrackInfo[track]-&amp;gt;m_Type) {&lt;BR /&gt;iVideoStreamType = MPEG4_VIDEO;&lt;BR /&gt;break;&lt;BR /&gt;} else &lt;BR /&gt;if (TRACK_MJPEG == spl_info-&amp;gt;m_ppTrackInfo[track]-&amp;gt;m_Type) {&lt;BR /&gt;iVideoStreamType = MJPEG_VIDEO;&lt;BR /&gt;break;&lt;BR /&gt;}&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;// track of MJPEG type is not found&lt;BR /&gt;if (track &amp;gt;= spl_info-&amp;gt;m_nOfTracks)&lt;BR /&gt;return UMC_ERR_INVALID_STREAM;&lt;/P&gt;
&lt;P&gt;// get VideoStreamInfo structure&lt;BR /&gt;video_info = (VideoStreamInfo*)spl_info-&amp;gt;m_ppTrackInfo[track]-&amp;gt;m_pStreamInfo;&lt;BR /&gt;video_info-&amp;gt;color_format = RGB24;//YUY2,RGB24,YUV420,YUV422&lt;BR /&gt;vm_string_printf(VM_STRING("file: %s
"),input_file);&lt;BR /&gt;vm_string_printf(VM_STRING(" video stream
"));&lt;BR /&gt;vm_string_printf(VM_STRING(" type :%s
"),GetVideoTypeString(spl_info-&amp;gt;m_video_info.stream_type));&lt;BR /&gt;vm_string_printf(VM_STRING(" dims : %dx%d
"),spl_info-&amp;gt;m_video_info.clip_info.width,spl_info-&amp;gt;m_video_info.clip_info.height);&lt;BR /&gt;vm_string_printf(VM_STRING(" color : %s
"),GetFormatTypeString(spl_info-&amp;gt;m_video_info.color_format));&lt;/P&gt;
&lt;P&gt;// Initialize video decoder component&lt;BR /&gt;umcRes = InitVideoDecoder(&amp;amp;VedioDecoder, video_info,iVideoStreamType); // MJPEG_VIDEO,MPEG4_VIDEO&lt;BR /&gt;if (umcRes != UMC_OK)&lt;BR /&gt;return umcRes;&lt;/P&gt;
&lt;P&gt;// Initialize video render component&lt;BR /&gt;umcRes = InitVideoRender(&amp;amp;dst, video_info,sOutputName);&lt;BR /&gt;if (umcRes != UMC_OK)&lt;BR /&gt;return umcRes;&lt;/P&gt;
&lt;P&gt;freq = vm_time_get_frequency();&lt;BR /&gt;total = 0;&lt;BR /&gt;nframes = 0;&lt;BR /&gt;// decoding &amp;amp; rendering loop (frame by frame)&lt;BR /&gt;while(umcRes == UMC_OK || umcRes == UMC_ERR_NOT_ENOUGH_DATA)&lt;BR /&gt;{&lt;BR /&gt;while (UMC_ERR_NOT_ENOUGH_DATA == (umcRes = avi_spl.GetNextData(&amp;amp;in,track)))&lt;BR /&gt;vm_time_sleep(5);&lt;BR /&gt;if (umcRes != UMC_OK)&lt;BR /&gt;break;&lt;BR /&gt;umcRes = dst.LockInputBuffer(&amp;amp;out); // Lock VideoData&lt;BR /&gt;if (umcRes != UMC_OK)&lt;BR /&gt;break;&lt;BR /&gt;t0 = vm_time_get_tick();&lt;BR /&gt;umcRes = VedioDecoder.GetFrame(&amp;amp;in, &amp;amp;out); //MediaData ==&amp;gt; VideoData&lt;BR /&gt;if (umcRes == UMC::UMC_ERR_END_OF_STREAM || (umcRes != UMC::UMC_OK &amp;amp;&amp;amp; umcRes !=UMC::UMC_ERR_NOT_ENOUGH_DATA))&lt;BR /&gt;break;&lt;BR /&gt;t1 = vm_time_get_tick();&lt;BR /&gt;total += (t1 - t0);&lt;BR /&gt;if (dst.UnLockInputBuffer(&amp;amp;out) != UMC_OK)&lt;BR /&gt;break;&lt;/P&gt;
&lt;P&gt;//if (umcRes != UMC_OK)
&lt;BR /&gt;//continue;&lt;BR /&gt;vm_string_printf(VM_STRING("frame# %d, FPS - %4.1f
"),nframes,&lt;BR /&gt;(Ipp64f)1.0 / ((t1 - t0) / (Ipp64f)freq));&lt;BR /&gt;if(umcRes == UMC_OK)&lt;BR /&gt;{&lt;BR /&gt;Ipp64f time = -1;&lt;BR /&gt;while (UMC_ERR_TIMEOUT == dst.GetRenderFrame(&amp;amp;time));&lt;BR /&gt;umcRes = dst.RenderFrame();&lt;BR /&gt;if (umcRes != UMC::UMC_OK)&lt;BR /&gt;break;&lt;BR /&gt;}&lt;BR /&gt;nframes++;&lt;BR /&gt;} // while()&lt;BR /&gt;fps = (Ipp64f)(freq / ((Ipp64f)total / nframes));&lt;BR /&gt;vm_string_printf(VM_STRING("processed %d frames, with avg performance %4.1f FPS
"),nframes, fps);&lt;/P&gt;
&lt;P&gt;return umcRes;&lt;BR /&gt;} // DecodeVideo()&lt;/P&gt;
&lt;P&gt;int main(int argc, char* argv[])&lt;BR /&gt;{&lt;BR /&gt;ippStaticInit();&lt;BR /&gt;copyright();&lt;BR /&gt;ipp_version();&lt;/P&gt;
&lt;P&gt;if(argc &amp;gt; 1)&lt;BR /&gt;DecodeVideo("channel_0.avi","channel_01.rgb");&lt;BR /&gt;else&lt;BR /&gt;vm_string_printf(VM_STRING("expected AVI file name"));&lt;/P&gt;
&lt;P&gt;return 0;&lt;BR /&gt;} // main()&lt;/P&gt;
&lt;P&gt;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;/P&gt;
&lt;P&gt;//End of the Mpeg4 Decoder source code:&lt;/P&gt;
&lt;P&gt;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;/P&gt;
&lt;P&gt;//Follow is the Mpeg4 Encoder source code:&lt;/P&gt;
&lt;P&gt;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;BR /&gt;#include "utils.h"&lt;BR /&gt;#include "vm_time.h"&lt;BR /&gt;#include "vm_strings.h"&lt;BR /&gt;#include "umc_sys_info.h"&lt;BR /&gt;#include "vm_sys_info.h"&lt;/P&gt;
&lt;P&gt;#include "ippvc.h"&lt;/P&gt;
&lt;P&gt;//#define ALPHA_BLENDING_H264&lt;BR /&gt;extern void AVI_Muxer(int MPEG4_W,int MPEG4_H,int MPEG4_FR,char *MPEG4filename,char *AVIfilename);&lt;/P&gt;
&lt;P&gt;using namespace UMC;&lt;/P&gt;
&lt;P&gt;#define MAX_FILELEN 1024&lt;/P&gt;
&lt;P&gt;class VideoEncodingTest : public VideoEncodingSample&lt;BR /&gt;{&lt;BR /&gt;public:&lt;BR /&gt; virtual Status PutOutputData(MediaData *out);&lt;/P&gt;
&lt;P&gt; virtual Ipp32s Main(Ipp32s argc, vm_char *argv[]);&lt;/P&gt;
&lt;P&gt; virtual Ipp64f GetTick();&lt;/P&gt;
&lt;P&gt; Status ChangeParams();&lt;BR /&gt; void DumpPerf0();&lt;BR /&gt; void DumpPerf1();&lt;/P&gt;
&lt;P&gt; VideoEncodingTest()&lt;BR /&gt; {&lt;BR /&gt; mVideoStreamType = UNDEF_VIDEO;&lt;BR /&gt; mWidth = 0;&lt;BR /&gt; mHeight = 0;&lt;BR /&gt; maxNumFrames = 0;&lt;BR /&gt; BitRate = -1; // (BitRate &amp;lt; 0) means constant quality!&lt;BR /&gt; FrameRate = 0;&lt;BR /&gt; chroma_format = 1; // 1==&amp;gt;4:2:0 , 2==&amp;gt;4:2:2&lt;BR /&gt; SrcFileName[0] = 0;&lt;BR /&gt; ParFileName = NULL;&lt;BR /&gt; DstFileName = NULL;&lt;BR /&gt; PerfFileName = NULL;&lt;BR /&gt; refEncodedFile = NULL;&lt;BR /&gt; inpLogFile = NULL;&lt;BR /&gt; outLogFile = NULL;&lt;BR /&gt;&amp;amp;n
bsp; resLogFile = NULL;&lt;BR /&gt; perf_file = NULL;&lt;BR /&gt; numThreads = 1;&lt;BR /&gt; AlphaFileName = NULL;&lt;BR /&gt; ReconFileName = NULL;&lt;/P&gt;
&lt;P&gt; fullTime = 0;&lt;BR /&gt; tickDuration = 1.0/(Ipp64f)vm_time_get_frequency();&lt;BR /&gt; *codecName = 0;&lt;BR /&gt; FrameSize = NULL;&lt;BR /&gt; lastFrameNum = 0;&lt;BR /&gt; lastPTS = -1.0;&lt;BR /&gt; }&lt;BR /&gt; ~VideoEncodingTest();&lt;/P&gt;
&lt;P&gt; // Params&lt;BR /&gt; VideoStreamType mVideoStreamType;&lt;BR /&gt; Ipp32s mWidth;&lt;BR /&gt; Ipp32s mHeight;&lt;BR /&gt; Ipp32s maxNumFrames;&lt;BR /&gt; Ipp32s BitRate;&lt;BR /&gt; Ipp64f FrameRate;&lt;BR /&gt; Ipp32s chroma_format;&lt;BR /&gt; vm_char SrcFileName[MAX_FILELEN];&lt;BR /&gt; vm_char *ParFileName;&lt;BR /&gt; vm_char *DstFileName;&lt;BR /&gt; vm_char *AlphaFileName;&lt;BR /&gt; vm_char *ReconFileName; // Name of a file to save reconstructed frame&lt;BR /&gt; vm_char *PerfFileName;&lt;BR /&gt; vm_char *refEncodedFile;&lt;BR /&gt; vm_char *inpLogFile;&lt;BR /&gt; vm_char *outLogFile;&lt;BR /&gt; vm_char *resLogFile;&lt;BR /&gt; vm_file *perf_file;&lt;BR /&gt; Ipp32s numThreads;&lt;/P&gt;
&lt;P&gt; // Info&lt;BR /&gt; SysInfo m_csysinfo;&lt;BR /&gt; Ipp64f fullTime;&lt;BR /&gt; Ipp64f tickDuration;&lt;BR /&gt; vm_char codecName[15];&lt;BR /&gt; Ipp32s *FrameSize;&lt;BR /&gt; Ipp32s lastFrameNum;&lt;BR /&gt; Ipp64f lastPTS;&lt;BR /&gt;};&lt;/P&gt;
&lt;P&gt;Ipp64f VideoEncodingTest::GetTick()&lt;BR /&gt;{&lt;BR /&gt; return (Ipp64f)vm_time_get_tick() * tickDuration;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;VideoEncodingTest::~VideoEncodingTest()&lt;BR /&gt;{&lt;BR /&gt; if (pCodec) {&lt;BR /&gt; delete pCodec;&lt;BR /&gt; pCodec = NULL;&lt;BR /&gt; }&lt;BR /&gt; if (pEncoderParams) {&lt;BR /&gt; delete pEncoderParams;&lt;BR /&gt; pEncoderParams = NULL;&lt;BR /&gt; }&lt;BR /&gt; if (FrameSize) {&lt;BR /&gt; delete [] FrameSize;&lt;BR /&gt; FrameSize = NULL;&lt;BR /&gt; }&lt;BR /&gt; if (dstFile) {&lt;BR /&gt; vm_file_fclose(dstFile);&lt;BR /&gt; dstFile = NULL;&lt;BR /&gt; }&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;Status VideoEncodingTest::PutOutputData(MediaData *out)&lt;BR /&gt;{&lt;BR /&gt; if (!out) { // at EOF&lt;BR /&gt; return UMC_ERR_NULL_PTR;&lt;BR /&gt; }&lt;BR /&gt; Ipp32s len = (Ipp32s)out-&amp;gt;GetDataSize();&lt;/P&gt;
&lt;P&gt;#if 1&lt;BR /&gt; Ipp64f PTS = out-&amp;gt;GetTime();&lt;BR /&gt; if (!FrameSize &amp;amp;&amp;amp; numFramesToEncode &amp;lt; (1 &amp;lt;&amp;lt; 16)) {&lt;BR /&gt; FrameSize = new Ipp32s[numFramesToEncode];&lt;BR /&gt; }&lt;BR /&gt; if (FrameSize &amp;amp;&amp;amp; len &amp;amp;&amp;amp; lastFrameNum &amp;lt; numFramesToEncode) {&lt;BR /&gt; if (lastFrameNum == 0 || PTS &amp;gt; lastPTS) {&lt;BR /&gt; FrameSize[lastFrameNum] = len;&lt;BR /&gt; lastPTS = PTS;&lt;BR /&gt; } else {&lt;BR /&gt; FrameSize[lastFrameNum] = FrameSize[lastFrameNum-1];&lt;BR /&gt; FrameSize[lastFrameNum-1] = len;&lt;BR /&gt; }&lt;BR /&gt; lastFrameNum++;&lt;BR /&gt; }&lt;BR /&gt;#endif&lt;/P&gt;
&lt;P&gt; m_csysinfo.GetCpuUsage();&lt;/P&gt;
&lt;P&gt; if (!(mFramesEncoded % 10)) {&lt;BR /&gt; vm_string_printf(VM_STRING("%d."), mFramesEncoded);&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt;#ifdef CHANGE_PARAMS&lt;BR /&gt; ChangeParams();&lt;BR /&gt;#endif&lt;/P&gt;
&lt;P&gt; return VideoEncodingSample::PutOutputData(out);&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;Status VideoEncodingTest::ChangeParams() // check set bitrate/set frame rate&lt;BR /&gt;{&lt;BR /&gt; Status st
;&lt;BR /&gt; VideoEncoderParams newpar;&lt;BR /&gt; st = pCodec-&amp;gt;GetInfo(&amp;amp;newpar);&lt;BR /&gt; vm_string_printf(VM_STRING("Q=%d%% "), newpar.qualityMeasure);&lt;BR /&gt; if(st != UMC_OK)&lt;BR /&gt; return st;&lt;BR /&gt; if(mFramesEncoded%9==1) {&lt;BR /&gt; //newpar.info.framerate *= 0.9; // random&lt;BR /&gt; newpar.info.bitrate = newpar.info.bitrate * 3 / 4; // random&lt;BR /&gt; if(newpar.qualityMeasure&amp;lt;40)&lt;BR /&gt; newpar.info.bitrate *= 5; // random&lt;/P&gt;
&lt;P&gt; vm_string_printf(VM_STRING("SetParams Called for bitrate = %d
"),newpar.info.bitrate);&lt;BR /&gt; st = pCodec-&amp;gt;SetParams(&amp;amp;newpar);&lt;BR /&gt; //if(st != UMC_OK) // not supported everywhere&lt;BR /&gt; // return st;&lt;BR /&gt; }&lt;BR /&gt; if(mFramesEncoded%3==1) {&lt;BR /&gt; newpar.numThreads = (newpar.numThreads &amp;amp; 3) + 1;&lt;BR /&gt; vm_string_printf(VM_STRING("SetParams Called for threads = %d
"),newpar.numThreads);&lt;BR /&gt; st = pCodec-&amp;gt;SetParams(&amp;amp;newpar);&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; if (mFramesEncoded%25==1) {&lt;BR /&gt; pCodec-&amp;gt;Reset();&lt;BR /&gt; }&lt;BR /&gt; { // close caption&lt;BR /&gt; MediaData cc;&lt;BR /&gt; vm_char text[30];&lt;BR /&gt; vm_string_sprintf(text, VM_STRING("CCaption %d"), mFramesEncoded);&lt;BR /&gt; cc.SetBufferPointer((Ipp8u*)text, sizeof(text));&lt;BR /&gt; cc.SetDataSize(vm_string_strlen(text)+1);&lt;BR /&gt; pCodec-&amp;gt;GetFrame(&amp;amp;cc, 0);&lt;BR /&gt; }&lt;BR /&gt; return UMC_OK;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;int PrintHelp(vm_char *prog_name, vm_char *err_message)&lt;BR /&gt;{&lt;BR /&gt; vm_string_printf(VM_STRING("Error: %s
"), err_message);&lt;BR /&gt; vm_string_printf(VM_STRING("Usage1: %s [m2|m4|h264|h263|h261|dv_sd|dv_50|dv_hd|vc1] [Options] InputParFile OutputEncodedFile
"), prog_name);&lt;BR /&gt; vm_string_printf(VM_STRING("Usage2: %s [m2|m4|h264|h263|h261|dv_sd|dv_50|dv_hd|vc1] [Options] -i InputYUVFile -o OutputEncodedFile
"), prog_name);&lt;BR /&gt; vm_string_printf(VM_STRING("Options: 
"));&lt;BR /&gt;#if defined ALPHA_BLENDING_H264&lt;BR /&gt; vm_string_printf(VM_STRING(" [-a file] - file for auxiliary pictures for alpha blending for H.264 encoder
"));&lt;BR /&gt;#endif // ALPHA_BLENDING_H264&lt;BR /&gt;#if defined UMC_ENABLE_H264_VIDEO_ENCODER &amp;amp;&amp;amp; defined SAVE_RECON&lt;BR /&gt; vm_string_printf(VM_STRING(" [-s file] - file for reconstructed frames (H.264 only!!!).
"));&lt;BR /&gt;#endif // UMC_ENABLE_H264_VIDEO_ENCODER &amp;amp;&amp;amp; SAVE_RECON&lt;BR /&gt; vm_string_printf(VM_STRING(" [-i inputFile] - input YUV video file
"));&lt;BR /&gt; vm_string_printf(VM_STRING(" [-w width] - video width
"));&lt;BR /&gt; vm_string_printf(VM_STRING(" [-h height] - video height
"));&lt;BR /&gt; vm_string_printf(VM_STRING(" [-f frameRate] - video frame rate (frames per second)
"));&lt;BR /&gt; vm_string_printf(VM_STRING(" [-b bitRate] - encoded bit rate (bits per second)
"));&lt;BR /&gt; vm_string_printf(VM_STRING(" [-n numFrames] - max frames to encode
"));&lt;BR /&gt; vm_string_printf(VM_STRING(" [-t num] - number of threads for encoding
"));&lt;BR /&gt; vm_string_printf(VM_STRING(" [-r] - enable
s threading of read/encode/write
"));&lt;BR /&gt; vm_string_printf(VM_STRING(" [-y dir] - directory of YUV files
"));&lt;BR /&gt; vm_string_printf(VM_STRING(" [-u file] - file for dumping perfomance info
"));&lt;BR /&gt; vm_string_printf(VM_STRING(" [-p file.csv] - file for dumping perfomance info into csv format
"));&lt;BR /&gt; vm_string_printf(VM_STRING("Note: Options -i,-w,-h,-f,-b,-n override corresponding values inside InputParFile.
"));&lt;BR /&gt; vm_string_printf(VM_STRING(" If InputParFile not specified, at least options -w,-h should be specified and -o should be added before OutputEncodedFile.
"));&lt;BR /&gt; vm_string_printf(VM_STRING("
"));&lt;BR /&gt; return 1;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;static int read_line(vm_char *file_name, int line_num, vm_char *line, int /*max_len*/)&lt;BR /&gt;{&lt;BR /&gt; vm_file *f;&lt;BR /&gt; int i;&lt;BR /&gt; if (NULL == (f = vm_file_open(file_name, VM_STRING("rt")))) {&lt;BR /&gt; vm_file_fprintf(vm_stderr, __VM_STRING("Couldn't open file %s
"), file_name);&lt;BR /&gt; return 1;&lt;BR /&gt; }&lt;BR /&gt; for (i = 0; i &amp;lt; line_num; i++) {&lt;BR /&gt; if (NULL == vm_file_fgets(line, MAX_FILELEN-1, f)) {&lt;BR /&gt; vm_file_fclose(f);&lt;BR /&gt; return 1;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; vm_file_fclose(f);&lt;BR /&gt; return 0;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;#define GET_OPTION_POINTER(PTR) &lt;BR /&gt; if (2 == vm_string_strlen(argv&lt;I&gt;)) { &lt;BR /&gt; i++; &lt;BR /&gt; if (argv&lt;I&gt;[0]=='-') { &lt;BR /&gt; return PrintHelp(argv[0], VM_STRING("in options")); &lt;BR /&gt; } else { &lt;BR /&gt; PTR = argv&lt;I&gt;; &lt;BR /&gt; } &lt;BR /&gt; } else { &lt;BR /&gt; PTR = argv&lt;I&gt; + 2; &lt;BR /&gt; }&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;#define DVEncoderParams VideoEncoderParams&lt;BR /&gt;#define DV50EncoderParams VideoEncoderParams&lt;BR /&gt;#define DV100EncoderParams VideoEncoderParams&lt;/P&gt;
&lt;P&gt;#define CREATE_ENCODER(CODEC) &lt;BR /&gt; vm_string_strcpy(codecName, VM_STRING(#CODEC)); &lt;BR /&gt; pCodec = new CODEC##VideoEncoder();&amp;amp;n
bsp; &lt;BR /&gt; if (ParFileName) { &lt;BR /&gt; pEncoderParams = new CODEC##EncoderParams; &lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt;Ipp32s VideoEncodingTest::Main(Ipp32s argc, vm_char *argv[])&lt;BR /&gt;{&lt;BR /&gt; vm_char *pVal;&lt;BR /&gt; vm_char *optFile = NULL;&lt;BR /&gt; Ipp64f t_start;&lt;BR /&gt; Ipp32s i, j;&lt;BR /&gt; Ipp64f size_ratio = 0;&lt;BR /&gt; vm_char line[MAX_FILELEN] = {0};&lt;/P&gt;
&lt;P&gt; t_start = GetTick();&lt;/P&gt;
&lt;P&gt; if (ippStaticInit() &amp;lt; ippStsNoErr) {&lt;BR /&gt; vm_file_fprintf(vm_stderr, VM_STRING("Error: Can't initialize ipp libs!
"));&lt;BR /&gt; return 5;&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; for (j = 0; j &amp;lt; 2; j++) {&lt;BR /&gt; vm_char optLine[256], *p, *p_end;&lt;BR /&gt; vm_char *argv_[256];&lt;BR /&gt; if (j) {&lt;BR /&gt; if (!optFile) {&lt;BR /&gt; break;&lt;BR /&gt; } else {&lt;BR /&gt; vm_file *f = vm_file_open(optFile, VM_STRING("r"));&lt;BR /&gt; if (!f) {&lt;BR /&gt; vm_file_fprintf(vm_stderr, VM_STRING("Cann't open opt file %s
"), optFile);&lt;BR /&gt; return PrintHelp(argv[0], VM_STRING("Cann't open opt file"));&lt;BR /&gt; }&lt;BR /&gt; *optLine = 0;&lt;BR /&gt; vm_file_fgets(optLine, 255, f);&lt;BR /&gt; vm_file_fclose(f);&lt;BR /&gt; p = optLine;&lt;BR /&gt; p_end = optLine + vm_string_strlen(optLine);&lt;BR /&gt; argc = 1;&lt;BR /&gt; argv = argv_;&lt;BR /&gt; argv_[0] = argv[0];&lt;BR /&gt; for (;;) {&lt;BR /&gt; argv[argc] = p;&lt;BR /&gt; argc++;&lt;BR /&gt; while ((p &amp;lt; p_end) &amp;amp;&amp;amp; (*p != ' ')) p++;&lt;BR /&gt; *p++ = 0;&lt;BR /&gt; while ((p &amp;lt; p_end) &amp;amp;&amp;amp; (*p == ' ')) p++;&lt;BR /&gt; if (p &amp;gt;= p_end) break;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt;/*&lt;BR /&gt; for (i = 1; i &amp;lt; argc; i++) {&lt;BR /&gt; printf("Option '%s'
", argv&lt;I&gt;);&lt;BR /&gt; }&lt;BR /&gt;*/&lt;BR /&gt; for (i = 1; i &amp;lt; argc; i++)&lt;BR /&gt; {&lt;BR /&gt; if ('-' != argv&lt;I&gt;[0]) {&lt;BR /&gt; if (UMC_OK == GetVideoType(argv&lt;I&gt;, &amp;amp;mVideoStreamType))&lt;BR /&gt;continue;&lt;BR /&gt; if (NULL == ParFileName) {&lt;BR /&gt; ParFileName = argv&lt;I&gt;;&lt;BR /&gt; } else {&lt;BR /&gt;&amp;amp;n
bsp; DstFileName = argv&lt;I&gt;;&lt;BR /&gt; }&lt;BR /&gt; continue;&lt;BR /&gt; }&lt;BR /&gt; if (UMC_OK == GetVideoType(argv&lt;I&gt; + 1, &amp;amp;mVideoStreamType)) continue;&lt;BR /&gt; if (UMC_OK == GetFormatType(argv&lt;I&gt; + 1, &amp;amp;mSrcFileColorFormat)) continue;&lt;BR /&gt; switch (argv&lt;I&gt;[1])&lt;BR /&gt; {&lt;BR /&gt; case 'y':&lt;BR /&gt; i++;&lt;BR /&gt; vm_string_strcpy(SrcFileName, argv&lt;I&gt;);&lt;BR /&gt; p = SrcFileName + vm_string_strlen(SrcFileName) - 1;&lt;BR /&gt; if (*p != '' &amp;amp;&amp;amp; *p != '/') {&lt;BR /&gt; vm_string_strcat(SrcFileName, VM_STRING(""));&lt;BR /&gt; }&lt;BR /&gt; break;&lt;BR /&gt; case 'p':&lt;BR /&gt; case 'P':&lt;BR /&gt; GET_OPTION_POINTER(PerfFileName);&lt;BR /&gt; break;&lt;BR /&gt; case 'w':&lt;BR /&gt; GET_OPTION_POINTER(pVal);&lt;BR /&gt; mWidth = (Ipp32s)vm_string_atol(pVal);&lt;BR /&gt; break;&lt;BR /&gt; case 'h':&lt;BR /&gt; GET_OPTION_POINTER(pVal);&lt;BR /&gt; mHeight = (Ipp32s)vm_string_atol(pVal);&lt;BR /&gt; break;&lt;BR /&gt; case 'f':&lt;BR /&gt; GET_OPTION_POINTER(pVal);&lt;BR /&gt; vm_string_sscanf(pVal, VM_STRING("%lf"), &amp;amp;FrameRate);&lt;BR /&gt; break;&lt;BR /&gt; case 'b':&lt;BR /&gt; GET_OPTION_POINTER(pVal);&lt;BR /&gt; BitRate = (Ipp32s)vm_string_atol(pVal);&lt;BR /&gt; break;&lt;BR /&gt; case 'n':&lt;BR /&gt; GET_OPTION_POINTER(pVal);&lt;BR /&gt; maxNumFrames = (Ipp32s)vm_string_atol(pVal);&lt;BR /&gt; break;&lt;BR /&gt; case 'i':&lt;BR /&gt; GET_OPTION_POINTER(pVal);&lt;BR /&gt; vm_string_strcpy(SrcFileName, pVal);&lt;BR /&gt; break;&lt;BR /&gt; case 'o':&lt;BR /&gt; GET_OPTION_POINTER(pVal);&lt;BR /&gt; Ds
tFileName = pVal;&lt;BR /&gt; break;&lt;BR /&gt; case 't':&lt;BR /&gt; GET_OPTION_POINTER(pVal);&lt;BR /&gt; numThreads = (Ipp32s)vm_string_atol(pVal);&lt;BR /&gt; break;&lt;BR /&gt;#if defined ALPHA_BLENDING_H264&lt;BR /&gt; case 'a':&lt;BR /&gt; GET_OPTION_POINTER(AlphaFileName);&lt;BR /&gt; break;&lt;BR /&gt;#endif // ALPHA_BLENDING_H264&lt;BR /&gt; case 's':&lt;BR /&gt; GET_OPTION_POINTER(ReconFileName);&lt;BR /&gt; break;&lt;BR /&gt; case 'u':&lt;BR /&gt; i++;&lt;BR /&gt; perf_file = vm_file_open(argv&lt;I&gt;, VM_STRING("w"));&lt;BR /&gt; break;&lt;BR /&gt; case 'z':&lt;BR /&gt; i++;&lt;BR /&gt; optFile = argv&lt;I&gt;;&lt;BR /&gt; break;&lt;BR /&gt; /////////////////&lt;BR /&gt; case 'c':&lt;BR /&gt; i++;&lt;BR /&gt; refEncodedFile = argv&lt;I&gt;;&lt;BR /&gt; break;&lt;BR /&gt; case 'l':&lt;BR /&gt; i++;&lt;BR /&gt; inpLogFile = argv&lt;I&gt;;&lt;BR /&gt; break;&lt;BR /&gt; case 'v':&lt;BR /&gt; i++;&lt;BR /&gt; outLogFile = argv&lt;I&gt;;&lt;BR /&gt; break;&lt;BR /&gt; case 'g':&lt;BR /&gt; i++;&lt;BR /&gt; resLogFile = argv&lt;I&gt;;&lt;BR /&gt; break;&lt;BR /&gt; /////////////////&lt;BR /&gt; //case 'h':&lt;BR /&gt; case '?':&lt;BR /&gt; default:&lt;BR /&gt; return PrintHelp(argv[0], VM_STRING("Unknown options"));&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; }&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt; if (!DstFileName) {&lt;BR /&gt; return PrintHelp(argv[0], VM_STRING("Destination file name not found"));&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; if (!ParFileName &amp;amp;&amp;amp; (!mWidth || !mHeight)) {&lt;BR /&gt; return PrintHelp(argv[0], VM_STRING("at least ParFile or options -w,-h should be specified"));&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; if (ParFileName) { // read first line of ParFile&lt;BR /&gt; if (read_line(ParFileName, 1, line, MAX_FILELEN)) {&lt;BR /&gt; return
 3;&lt;BR /&gt; }&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; if (mVideoStreamType == UNDEF_VIDEO) {&lt;BR /&gt; if (!ParFileName) {&lt;BR /&gt; mVideoStreamType = MPEG2_VIDEO;&lt;BR /&gt; } else {&lt;BR /&gt; if (vm_string_strstr(line, VM_STRING("MPEG-2"))) mVideoStreamType = MPEG2_VIDEO; else&lt;BR /&gt; if (vm_string_strstr(line, VM_STRING("MPEG-4"))) mVideoStreamType = MPEG4_VIDEO; else&lt;BR /&gt; if (vm_string_strstr(line, VM_STRING("H.261"))) mVideoStreamType = H261_VIDEO; else&lt;BR /&gt; if (vm_string_strstr(line, VM_STRING("H.263"))) mVideoStreamType = H263_VIDEO; else&lt;BR /&gt; if (vm_string_strstr(line, VM_STRING("H.264"))) mVideoStreamType = H264_VIDEO; else {&lt;BR /&gt; return PrintHelp(argv[0], VM_STRING("Unknown codec"));&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; if (ParFileName &amp;amp;&amp;amp; vm_string_strstr(line, VM_STRING("UseDefaultParameters"))) {&lt;BR /&gt; ParFileName = NULL; // use default parameters&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; switch (mVideoStreamType) {&lt;BR /&gt;#ifdef UMC_ENABLE_MPEG2_VIDEO_ENCODER&lt;BR /&gt; case MPEG2_VIDEO:&lt;BR /&gt; CREATE_ENCODER(MPEG2)&lt;BR /&gt; break;&lt;BR /&gt;#endif&lt;BR /&gt;#ifdef UMC_ENABLE_MPEG4_VIDEO_ENCODER&lt;BR /&gt; case MPEG4_VIDEO:&lt;BR /&gt; CREATE_ENCODER(MPEG4)&lt;BR /&gt; break;&lt;BR /&gt;#endif&lt;BR /&gt;#ifdef UMC_ENABLE_H261_VIDEO_ENCODER&lt;BR /&gt; case H261_VIDEO:&lt;BR /&gt; CREATE_ENCODER(H261)&lt;BR /&gt; break;&lt;BR /&gt;#endif&lt;BR /&gt;#ifdef UMC_ENABLE_H263_VIDEO_ENCODER&lt;BR /&gt; case H263_VIDEO:&lt;BR /&gt; CREATE_ENCODER(H263)&lt;BR /&gt; break;&lt;BR /&gt;#endif&lt;BR /&gt;#ifdef UMC_ENABLE_H264_VIDEO_ENCODER&lt;BR /&gt; case H264_VIDEO:&lt;BR /&gt; CREATE_ENCODER(H264)&lt;BR /&gt; break;&lt;BR /&gt;#endif&lt;BR /&gt;#ifdef UMC_ENABLE_DV_VIDEO_ENCODER&lt;BR /&gt; case DIGITAL_VIDEO_SD:&lt;BR /&gt; CREATE_ENCODER(DV)&lt;BR /&gt; break;&lt;BR /&gt;#endif&lt;BR /&gt;#ifdef UMC_ENABLE_DV50_VIDEO_ENCODER&lt;BR /&gt; case DIGITAL_VIDEO_50:&lt;BR /&gt; CREATE_ENCODER(DV50)&lt;BR /&gt; mColorFormat = YUV422;&lt;BR /&gt; break;&lt;BR /&gt;#endif&lt;BR /&gt;#ifdef UMC_ENABLE_DVHD_VIDEO_ENCODER&lt;BR /&gt; case DIGITAL_VIDEO_HD:&lt;BR /&gt; CREATE_ENCODER(DV100)&lt;BR /&gt; mColorFormat = YUV422;&lt;BR /&gt; break;&lt;BR /&gt;#endif&lt;BR /&gt;#ifdef UMC_ENABLE_VC1_VIDEO_ENCODER&lt;BR /&gt; case VC1_VIDEO:&lt;BR /&gt; CREATE_ENCODER(VC1)&lt;BR /&gt; break;&lt;BR /&gt;#endif&lt;BR /&gt; default:&lt;BR /&gt; vm_file_fprintf(vm_stderr, VM_STRING("Codec (%d) not supported
"), (int)mVideoStreamType);&lt;BR /&gt; return PrintHelp(argv[0], VM_STRING("Codec not supported"));&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; if (ParFileName) {&lt;BR /&gt; Status res;&lt;BR /&gt; res = pEncoderParams-&amp;gt;ReadParamFile(ParFileName);&lt;BR /&gt; if (res &amp;lt; UMC_OK) { // &amp;amp;l
t; means error&lt;BR /&gt; if (res == UMC_ERR_OPEN_FAILED) {&lt;BR /&gt; vm_file_fprintf(vm_stderr, VM_STRING("Error: Can't open par file %s
"), ParFileName);&lt;BR /&gt; } else {&lt;BR /&gt; vm_file_fprintf(vm_stderr, VM_STRING("Error: Can't parse par file %s
"), ParFileName);&lt;BR /&gt; }&lt;BR /&gt; return 3;&lt;BR /&gt; }&lt;BR /&gt;#ifdef UMC_ENABLE_MPEG2_VIDEO_ENCODER&lt;BR /&gt; if (mVideoStreamType == MPEG2_VIDEO) {&lt;BR /&gt; //chroma_format = ((MPEG2EncoderParams*)pEncoderParams)-&amp;gt;chroma_format;&lt;BR /&gt; mColorFormat = pEncoderParams-&amp;gt;info.color_format;&lt;BR /&gt; }&lt;BR /&gt;#endif&lt;BR /&gt;#ifdef UMC_ENABLE_VC1_VIDEO_ENCODER&lt;BR /&gt; if (mVideoStreamType == VC1_VIDEO) {&lt;BR /&gt; if(!maxNumFrames)&lt;BR /&gt; {&lt;BR /&gt; if (((VC1EncoderParams*)pEncoderParams)-&amp;gt;m_uiNumFrames)&lt;BR /&gt; maxNumFrames = ((VC1EncoderParams*)pEncoderParams)-&amp;gt;m_uiNumFrames;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt;#endif&lt;BR /&gt;#ifdef UMC_ENABLE_H264_VIDEO_ENCODER&lt;BR /&gt; if (mVideoStreamType == H264_VIDEO) {&lt;BR /&gt; H264EncoderParams *params = (H264EncoderParams*)pEncoderParams;&lt;BR /&gt; chroma_format = params-&amp;gt;chroma_format_idc;&lt;BR /&gt; mBitDepth = (IPP_MAX(params-&amp;gt;bit_depth_luma, params-&amp;gt;bit_depth_chroma) &amp;gt; 8)? 16 : 8;&lt;BR /&gt; mBitDepthAlpha = (params-&amp;gt;bit_depth_aux &amp;gt; 8)? 16: 8;&lt;BR /&gt; numFramesToEncode = params-&amp;gt;numFramesToEncode;&lt;BR /&gt;#if 0&lt;BR /&gt; if (ReconFileName) {&lt;BR /&gt; ((H264EncoderParams*)pEncoderParams)-&amp;gt;m_SaveReconFlag = 1;&lt;BR /&gt; vm_string_strncpy(((H264EncoderParams*)pEncoderParams)-&amp;gt;m_ReconFileName, ReconFileName, MAXIMUM_PATH);&lt;BR /&gt; printf("ReconFileName = "%s"
", ((H264EncoderParams*)pEncoderParams)-&amp;gt;m_ReconFileName);&lt;BR /&gt; }&lt;BR /&gt;#endif&lt;BR /&gt; mColorFormat = (chroma_format == 0)? GRAY&lt;BR /&gt; : (chroma_format == 2)? YUV422&lt;BR /&gt; : (chroma_format == 3)? YUV444&lt;BR /&gt; : YUV420; // Accept monochromes with UV components filled with dummy values.&lt;BR /&gt; }&lt;BR /&gt;#endif&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; if ((!SrcFileName[0] || SrcFileName[vm_string_strlen(SrcFileName) - 1] == '') &amp;amp;&amp;amp; ParFileName) {&lt;BR /&gt; // read stream filename from second line of ParFile&lt;BR /&gt; vm_char SrcName[MAX_FILELEN];&lt;/P&gt;
&lt;P&gt; if (read_line(ParFileName, 2, line, MAX_FILELEN)) {&lt;BR /&gt; return 3;&lt;BR /&gt; }&lt;BR /&gt;&amp;nbsp;
; vm_string_sscanf(line, VM_STRING("%s"), SrcName);&lt;BR /&gt; vm_string_strcat(SrcFileName, SrcName); // concatenate&lt;BR /&gt; }&lt;BR /&gt;#ifdef UMC_ENABLE_VC1_VIDEO_ENCODER&lt;BR /&gt; if (ParFileName) {&lt;BR /&gt; if (mVideoStreamType == VC1_VIDEO) {&lt;BR /&gt; ((VC1EncoderParams*)pEncoderParams)-&amp;gt;m_pStreamName = SrcFileName;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt;#endif&lt;BR /&gt; if (!ParFileName) {&lt;BR /&gt; pEncoderParams = new VideoEncoderParams;&lt;BR /&gt; pEncoderParams-&amp;gt;info.color_format = (chroma_format == 0)? GRAY&lt;BR /&gt; : (chroma_format == 2)? YUV422&lt;BR /&gt; : (chroma_format == 3)? YUV444&lt;BR /&gt; : YUV420; // Accept monochromes with UV components filled with dummy values.&lt;/P&gt;
&lt;P&gt; if (!maxNumFrames) {&lt;BR /&gt; maxNumFrames = 0x7fffffff;&lt;BR /&gt; }&lt;BR /&gt; if (!FrameRate) {&lt;BR /&gt; FrameRate = 30;&lt;BR /&gt; }&lt;BR /&gt; if (BitRate &amp;lt; 0) {&lt;BR /&gt; BitRate = 5000000;&lt;BR /&gt; }&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; // override param's if non-zero&lt;BR /&gt; if (mWidth &amp;amp;&amp;amp; mHeight) {&lt;BR /&gt; pEncoderParams-&amp;gt;info.clip_info.width = mWidth;&lt;BR /&gt; pEncoderParams-&amp;gt;info.clip_info.height = mHeight;&lt;BR /&gt; } else {&lt;BR /&gt; mWidth = pEncoderParams-&amp;gt;info.clip_info.width;&lt;BR /&gt; mHeight = pEncoderParams-&amp;gt;info.clip_info.height;&lt;BR /&gt; }&lt;BR /&gt; if (maxNumFrames) {&lt;BR /&gt; numFramesToEncode = maxNumFrames;&lt;BR /&gt; } else {&lt;BR /&gt; maxNumFrames = numFramesToEncode;&lt;BR /&gt; }&lt;BR /&gt; if (FrameRate) {&lt;BR /&gt; pEncoderParams-&amp;gt;info.framerate = FrameRate;&lt;BR /&gt; } else {&lt;BR /&gt; FrameRate = pEncoderParams-&amp;gt;info.framerate;&lt;BR /&gt; }&lt;BR /&gt; if (BitRate &amp;gt;= 0) {&lt;BR /&gt; pEncoderParams-&amp;gt;info.bitrate = BitRate;&lt;BR /&gt; } else {&lt;BR /&gt; BitRate = pEncoderParams-&amp;gt;info.bitrate;&lt;BR /&gt; }&lt;BR /&gt; pEncoderParams-&amp;gt;numThreads = numThreads;&lt;/P&gt;
&lt;P&gt; srcFile = vm_file_open(SrcFileName, VM_STRING("rb"));&lt;BR /&gt; if (NULL == srcFile) {&lt;BR /&gt; vm_file_fprintf(vm_stderr, VM_STRING("Error opening file %s"), SrcFileName);&lt;BR /&gt; return 8;&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; dstFile = vm_file_open(DstFileName, VM_STRING("wb"));&lt;BR /&gt; if (NULL == dstFile) {&lt;BR /&gt; vm_file_fprintf(vm_stderr, VM_STRING("Error: Can't open output file '%s'
"), DstFileName);&lt;BR /&gt; return 9;&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; if (AlphaFileName) {&lt;BR /&gt; srcAlphaFile = vm_file_open(AlphaFileName, VM_STRING("rb"));&lt;BR /&gt; if (NULL == srcAlphaFile) {&lt;BR /&gt; vm_file_fprintf(vm_stderr, VM_STRING("Error opening file %s"), AlphaFileName);&lt;BR /&gt; return 8;&lt;BR /&gt; }&lt;BR /&gt; if (mColorFormat == YUV420) mColorFormat = YUV420A; else&lt;BR /&gt; if (mColorFormat == YUV422) mColorFormat = YUV422A; els
e&lt;BR /&gt; if (mColorFormat == YUV444) mColorFormat = YUV444A;&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; if (pCodec-&amp;gt;Init(pEncoderParams) != UMC_OK) {&lt;BR /&gt; vm_file_fprintf(vm_stderr, VM_STRING("Error: Video encoder initialization failed
"));&lt;BR /&gt; return 6;&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; if (pCodec-&amp;gt;GetInfo(pEncoderParams) != UMC_OK) {&lt;BR /&gt; vm_file_fprintf(vm_stderr, VM_STRING("Error: Video encoder GetInfo failed
"));&lt;BR /&gt; return 7;&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; vm_string_printf(VM_STRING("
"));&lt;BR /&gt; vm_string_printf(VM_STRING("Starting %s encoding %s to file %s
"), codecName, SrcFileName, DstFileName);&lt;BR /&gt; vm_string_printf(VM_STRING("Source video width = %d, height = %d, frameRate = %.2lf
"),&lt;BR /&gt; mWidth, mHeight, FrameRate);&lt;BR /&gt; vm_string_printf(VM_STRING("Max frames to encode = %d
"), maxNumFrames);&lt;BR /&gt; if (pEncoderParams-&amp;gt;info.bitrate &amp;gt; 0)&lt;BR /&gt; vm_string_printf(VM_STRING("Encoding bit rate = %d bits per second
"), pEncoderParams-&amp;gt;info.bitrate);&lt;BR /&gt; else&lt;BR /&gt; vm_string_printf(VM_STRING("Encoding without rate control
"));&lt;/P&gt;
&lt;P&gt; m_csysinfo.GetCpuUsage();&lt;BR /&gt; DumpPerf0();&lt;/P&gt;
&lt;P&gt; Run();&lt;/P&gt;
&lt;P&gt; fullTime = GetTick() - t_start;&lt;/P&gt;
&lt;P&gt; m_csysinfo.GetCpuUsage();&lt;BR /&gt; DumpPerf1();&lt;/P&gt;
&lt;P&gt; vm_string_printf(VM_STRING("
Summary:
"));&lt;BR /&gt; vm_string_printf(VM_STRING(" Num frames encoded = %d
"), mFramesEncoded);&lt;BR /&gt; vm_string_printf(VM_STRING(" Encoding Time = %.2f sec, %.2f fps
"), encodingTime, mFramesEncoded/encodingTime);&lt;BR /&gt; vm_string_printf(VM_STRING(" Overall Time = %.2f sec, %.2f fps
"), fullTime, mFramesEncoded/fullTime);&lt;BR /&gt; vm_string_printf(VM_STRING(" Average CPU usage = %.2lf%%
"), m_csysinfo.GetAvgCpuUsage());&lt;BR /&gt; vm_string_printf(VM_STRING(" Encoded Size = %d bytes
"), encodedSize);&lt;BR /&gt; vm_string_printf(VM_STRING(" Compression Ratio = %.2f
"), ((Ipp64f)mFramesEncoded*mFrameSize)/encodedSize);&lt;/P&gt;
&lt;P&gt; if (pEncoderParams-&amp;gt;info.framerate &amp;gt; 0 &amp;amp;&amp;amp; pEncoderParams-&amp;gt;info.bitrate &amp;gt; 0) {&lt;BR /&gt; size_ratio = encodedSize/(((Ipp64f)mFramesEncoded/pEncoderParams-&amp;gt;info.framerate)*(pEncoderParams-&amp;gt;info.bitrate/8));&lt;BR /&gt; vm_string_printf(VM_STRING(" EncodedSize/ExpectedSize = %.2f
"), size_ratio);&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; if (perf_file != NULL) {&lt;BR /&gt; vm_string_fprintf(perf_file, VM_STRING("Performance = %.2f fps"), mFramesEncoded/encodingTime);&lt;BR /&gt; vm_string_fprintf(perf_file, VM_STRING(", EncodedSize/ExpectedSize = %.2f
"), size_ratio);&lt;BR /&gt; vm_string_fprintf(perf_file, VM_STRING("num = %d"), mFramesEncoded);&lt;BR /&gt; vm_string_fprintf(perf_file, VM_STRING("performance = %.5f"), mFramesEncoded/encodingTime);&lt;BR /&gt; vm_string_fprintf(perf_file, VM_STRING("perf_overall = %.5f"), fullTime);&lt;BR /&gt; vm_string_fprintf(perf_file, VM_STRING("size_ratio = %.5f"), ((Ipp64f)mFramesEncoded*mFrameSize)/encodedSize);&lt;BR /&gt; vm_file_fclose(perf_file);&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; if (dstFile) {&lt;BR /&gt; vm_file_fclose(dstFile);&lt;BR /&gt; dstFile = NU
LL;&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; if (srcFile) {&lt;BR /&gt; vm_file_fclose(srcFile);&lt;BR /&gt; srcFile = NULL;&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; return 0;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;void VideoEncodingTest::DumpPerf0()&lt;BR /&gt;{&lt;BR /&gt; sSystemInfo* m_ssysteminfo = (sSystemInfo *)m_csysinfo.GetSysInfo();&lt;BR /&gt; vm_char* stream_name = NULL;&lt;BR /&gt; vm_file *perf_file_csv = NULL;&lt;BR /&gt; vm_char tmpbuf[128]={0,};&lt;/P&gt;
&lt;P&gt; if(PerfFileName)&lt;BR /&gt; perf_file_csv = vm_file_open(PerfFileName, VM_STRING("a"));&lt;/P&gt;
&lt;P&gt; if(perf_file_csv){&lt;BR /&gt; IppLibraryVersion *ipplibversion;&lt;BR /&gt; stream_name = vm_string_strrchr(SrcFileName, (Ipp32s)(''));&lt;BR /&gt; if(!stream_name)stream_name = SrcFileName;&lt;BR /&gt; else stream_name++;&lt;BR /&gt; vm_file_fseek( perf_file_csv, 0, VM_FILE_SEEK_END);&lt;BR /&gt; if(!vm_file_ftell( perf_file_csv))&lt;BR /&gt; vm_string_fprintf(perf_file_csv, VM_STRING("Date,Time,Comp.name,OS,CPU,Num.CPU,CPU freq.,MEM,VGA,App,App description,Ver.,Ipp Type,Ipp ver.,Ipp Desc.,Streams(S) name,Output S. name,Status,Output S. size,S.Type,S.Res.,S.FR,S.BR,Video(V)Type,V.Format,V.Num,R.S.BR,V.E/D(FpS),V.E/D(MHz),Compr.(%%),CPU Usage (%%),Max Cpu Usage (%%),Work.Time,1e,2e,3e,4e,5e,
"));&lt;BR /&gt; vm_sys_info_get_date(tmpbuf,MMDDYY);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%s,"), tmpbuf);&lt;BR /&gt; vm_sys_info_get_time(tmpbuf,HHMMSS);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%s,"), tmpbuf);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%s,"), m_ssysteminfo-&amp;gt;computer_name);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%s,"), m_ssysteminfo-&amp;gt;os_name);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%s,"), m_ssysteminfo-&amp;gt;proc_name);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%d,"), m_ssysteminfo-&amp;gt;num_proc);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%.2f,"), (Ipp64f)m_ssysteminfo-&amp;gt;cpu_freq);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%d,"), m_ssysteminfo-&amp;gt;phys_mem);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%s,"), m_ssysteminfo-&amp;gt;video_card);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%s,"),m_ssysteminfo-&amp;gt;program_name);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("UMC Video Encoder Con.,"));//,m_ssysteminfo-&amp;gt;description);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING(",")); // ver. of aplications&lt;BR /&gt; ipplibversion = (IppLibraryVersion*)ippvcGetLibVersion();&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%s,"), ipplibversion-&amp;gt;targetCpu);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%d.%d.%d.%d,"), ipplibversion-&amp;gt;major,ipplibversion-&amp;gt;minor,ipplibversion-&amp;gt;majorBuild,ipplibversion-&amp;gt;build);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%s (%s),"), ipplibversion-&amp;gt;Version,ipplibversion-&amp;gt;BuildDate);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%s,"), stream_name);&lt;BR /&gt; stream_name = vm
_string_strrchr(DstFileName, (Ipp32s)(''));&lt;BR /&gt; if(!stream_name)stream_name = DstFileName;&lt;BR /&gt; else stream_name++;&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%s,"), stream_name);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("FAIL,
"));&lt;BR /&gt; vm_file_fclose(perf_file_csv);&lt;BR /&gt; }&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;void VideoEncodingTest::DumpPerf1()&lt;BR /&gt;{&lt;BR /&gt; sSystemInfo* m_ssysteminfo = (sSystemInfo *)m_csysinfo.GetSysInfo();&lt;BR /&gt; vm_file *perf_file_csv = NULL;&lt;/P&gt;
&lt;P&gt; if(PerfFileName)&lt;BR /&gt; perf_file_csv = vm_file_open(PerfFileName, VM_STRING("r+"));&lt;/P&gt;
&lt;P&gt; if(perf_file_csv) {&lt;BR /&gt; vm_file_fseek( perf_file_csv, -6, VM_FILE_SEEK_END);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("PASSED,"));&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%d,"), encodedSize);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("PV,"));&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%dx%d,"),pEncoderParams-&amp;gt;info.clip_info.width,pEncoderParams-&amp;gt;info.clip_info.height);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%.2lf,"),pEncoderParams-&amp;gt;info.framerate);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%d,"),pEncoderParams-&amp;gt;info.bitrate/1000);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%s,"), codecName);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING(","));&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%d,"), mFramesEncoded);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%d,"), (Ipp32s)(encodedSize/mFramesEncoded*pEncoderParams-&amp;gt;info.framerate*8/1000));&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%.2lf,"), mFramesEncoded/encodingTime);&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%.2lf,"), (Ipp64f)(pEncoderParams-&amp;gt;info.framerate/(mFramesEncoded/encodingTime)*(m_ssysteminfo-&amp;gt;cpu_freq)));&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%.2lf,"), ((Ipp64f)encodedSize*100.0/(mFramesEncoded*mFrameSize)));&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%.2lf,"), m_csysinfo.GetAvgCpuUsage());&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%.2lf,"), m_csysinfo.GetMaxCpuUsage());&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%02d:%02d:%02d.%02d,"),(Ipp32s)fullTime/3600,(Ipp32s)(fullTime)%3600/60,(Ipp32s)fullTime%3600%60,(Ipp32s)((fullTime-(Ipp32s)fullTime)*100));&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("
" ));&lt;BR /&gt;#if 0&lt;BR /&gt; if (FrameSize) {&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("Frame Info
Num, Size
"));&lt;BR /&gt; for (i = 0; i &amp;lt; mFramesEncoded; i ++)&lt;BR /&gt; vm_string_fprintf(perf_file_csv,VM_STRING("%d, %d
"), i, FrameSize&lt;I&gt;);&lt;BR /&gt; }&lt;BR /&gt;#endif&lt;BR /&gt; vm_file_fclose(perf_file_csv);&lt;BR /&gt; }&lt;BR /&gt;}&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;#ifndef NO_MAIN&lt;/P&gt;
&lt;P&gt;int main(Ipp32s argc, vm_char *argv[])&lt;BR /&gt;{&lt;BR /&gt; //Command line: video_enc_con m4 -i output_mpeg4_420.yuv -w 720 -h 288 -f 25 -b 800000 -n 577 -o out.m4v&lt;BR /&gt; char lpCmdLine[MAX_PATH];&lt;BR /&gt; char sYUV_File[MAX_PATH];&lt;BR /&gt; strcpy(sYUV_File,"channel0.yuv");&lt;BR /&gt; in
t iWidth = 720;&lt;BR /&gt; int iHeight = 288;&lt;BR /&gt; int iFrameRate = 5; // 25&lt;BR /&gt; int iTotalFrame = 5; // 577&lt;BR /&gt; sprintf(lpCmdLine,"video_enc_con m4 -i %s -w %i -h %i -f %i -b 100000 -n %i -o out.m4v",sYUV_File,iWidth,iHeight,iFrameRate,iTotalFrame); &lt;/P&gt;
&lt;P&gt; int _argc = 0;&lt;BR /&gt; char* _argv[MAX_PATH]; &lt;BR /&gt; char seps[]=" "; &lt;BR /&gt; char *token; &lt;BR /&gt; token = strtok( lpCmdLine, seps ); &lt;BR /&gt; while( token != NULL ) {&lt;BR /&gt;_argv[_argc] = new char [MAX_PATH];&lt;BR /&gt; strcpy(_argv[_argc],token);&lt;BR /&gt; _argc++;&lt;BR /&gt;token = strtok( NULL, seps ); &lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt; VideoEncodingTest Encode;&lt;BR /&gt; Encode.Main(_argc, _argv);&lt;BR /&gt; AVI_Muxer(iWidth,iHeight,iFrameRate,"out.m4v","channel_0_5_1.avi");&lt;BR /&gt; for (int i=0; i&amp;lt;_argc;i++)&lt;BR /&gt;delete []_argv&lt;I&gt;;&lt;BR /&gt;}&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;#endif&lt;/P&gt;
&lt;P&gt;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;/P&gt;
&lt;P&gt;//End of the Mpeg4 Encoder source code:&lt;/P&gt;
&lt;P&gt;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 11 Aug 2008 00:56:31 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Mpeg4Decoder-Some-avi-file-can-t-be-Decoded/m-p/906390#M13537</guid>
      <dc:creator>antony0604</dc:creator>
      <dc:date>2008-08-11T00:56:31Z</dc:date>
    </item>
    <item>
      <title>Re: Mpeg4Decoder: Some .avi file can't be Decoded.</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Mpeg4Decoder-Some-avi-file-can-t-be-Decoded/m-p/906391#M13538</link>
      <description>Thank you for your answer. It work fine now when running on the Dos command line. But if the code is running on the ActiveX (IE), still some video cann't being decoded. I will trying to find why cause this problem.</description>
      <pubDate>Thu, 14 Aug 2008 03:10:54 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Mpeg4Decoder-Some-avi-file-can-t-be-Decoded/m-p/906391#M13538</guid>
      <dc:creator>antony0604</dc:creator>
      <dc:date>2008-08-14T03:10:54Z</dc:date>
    </item>
  </channel>
</rss>

