SSM. Samsung Software Membership Writed by Minsung, Kim Paper Design VER.2 2008-2-25 IPP 5.2 설치및 Sample 코드환경설정 copyright @ 2008 Gwangju Samsung Software Membership DMBG - 1 -
제 1 장 IPP 설치및환경설정 1.1 IPP 설치및환경설정 본환경설정은영상처리및영상코덱을위해개발된 Intel사의 IPP(Integrated Performance Primitives) 버전 5.2기반으로구성하였다. 5.2이상버전에서는옵션설정부분이복잡하여 ipp5.2기반으로이루어졌다. 아래는 IPP의설치과정이다. 그림 1의설치과정-1에서는 IPP 인스톨파일을더블클릭했을때의초기화면이다. 그림 1 설치과정 -1 그림 2 는 IPP 설치경로를지정한모습이다. 그림 2 설치과정 -2 그림 3에서그림 5까지는설치과정중 Intel사의라이센스를지정한다. 라이센스경로설정시영문으로된디렉토리밑에라이센스파일이존재하여야한다. - 2 -
그림 3 설치과정 -3 그림 4 설치과정 -4 그림 5 설치과정 -5 프로그램을설치하면 Program Files 폴더의하위폴더에 Intel이라는폴더가생성이된다. 그리고다운받은 ipp_sample.zip파일의압축을풀면 ipp-sample폴더가생성이된다. 그리고프로젝트에서사용할 ipp-samples 하위폴더에위치한 audio-video-codecs이라는폴더의라이브러리및코덱들이존재한다. audio-video-codecs 폴더에샘플들을빌드하기위해 build32.bat, build64.bat 등등의파일이있다. 이것들은시스템에사양에맞게빌드를할수있다. 가령사용하고있는시스템이 32비트시스템이라면 buil32.bat 를실행하면되겠다. 마찬가지로 64비트면 "build32.bat" 를입력하면되겠다. - 3 -
그림 6 audio-video-codec description 그림 6은 audio-video-codecs 폴더의내용을표시한것이다. 이중에프로젝트에서사용하기위해서 32비트 CPU의상위에서작업하기때문에 buil32.bat라는명령어를 Consol 창에서실행한다. 또한선수조건으로빌드를하기전 DirectX SDK와 Platform SDK를설치를해야한다. ( 이내용은 ReleaseNotes.htm 파일에표시되어있다 ) 주의사항가령, 자신의컴퓨터에비주얼 6, 비주얼 2003, 비주얼 2005가깔려있는상태에서 build32.bat cl8" 이라는명령어를치면 umc_pipeline부분에서 Failed 나게된다. 이렇게빌드과정중실패라는메시지가나오게되면핵심부분을수정을가하기힘들어진다. 구지 2005를쓰고싶다면비주얼 2005 하위버전들을전부지우고빌드해야지만 PASSED라는메시지를보게될것이다. ( 인텔의게시판참고 ) 하지만, 이렇게모든버전이깔려있는상태에서비주얼 2003에서프로젝트생성하여사용하고싶다면 "build32.bat cl7" 이렇게쳐도 Failed 는나지않고전과정이 PASSED가된다. 왜그런지는잘모르겠다. 아무래도호환문제인것같다. - 4 -
아래그림 7은 "build32.bat cl8 이라는명령을친후의과정을나타냈다. 실행된화면을보면 cl8로옵션을지정한모습이다. 즉, cl8은비주얼스튜디오 2005을기준으로컴파일하게된다. 좀더자세한빌드옵션을보고자한다면표 1에서제시한내용을보면되겠다. ( 그림에서는 cl7으로옵션을지정했다. 비주얼 2003으로작업하기위해예로든것이다.) 그림 7 빌드완료된화면 - 5 -
표 2. 컴파일러선택옵션사항 Compiler Intel C++ Compiler 9.1 for Windows Intel C++ Compiler 10.0 for Windows Intel C++ Compiler 9.0 for Windows Microsoft Visual C++.NET 2005 Microsoft Visual C++.NET 2003 Option icl91 icl10 icl9 cl8 cl7 빌드가완료되었다면 audio_video_codecs 폴더아래에 _bin\win32_cl8 폴더와 _log\win32_cl8이생성된다. 그폴더에는다른시스템에서사용하기쉽게 dll, lib, log 파일및어플리케이션실행파일들이생성이된다. 1.2 Visual C++ 2005 환경설정프로젝트에서마이크로소프트사의 MFC 환경으로구성하기위해서간단한환경설정을통하여 IPP 라이브러리를사용할수가있다. 아래는기본적으로자신의환경을구축하고자할때기본옵션에대한내용을적어놓았다. 첫번째, Visual Studio 2005에서디렉토리추가하기 ( 도구-옵션 ) - Include Files C:\Program Files\Intel\ipp\ia32\include - Library Files C:\Program Files\Intel\ipp\ia32\lib C:\Program Files\Intel\ipp\ia32\stublib 두번째, 프로젝트에라이브러리링크하기 ( 프로젝트-속성 ) - ippcorel.lib, emerged.lib, merged.lib ( 이부분은샘플코드로작업할시변동될수있다 ) 세번째, 소스파일에 Header 파일 Include 하기 - #include <ipp.h> // stdafx.h 전역파일에추가 ( 이부분은샘플코드로작업할시변동될수있다 ) 그림 8 프로젝트디렉토리설정화면 - 6 -
1.3 IPP Sample Code 환경설정 1.3.1 umc_h264_dec_con 환경설정 ipp5.2_sample.zip 파일을다운로드받을수있는데, 그폴더에는 sample로된코드가담겨져있다. 이코드에서필요한부분을추출하여프로젝트를생성하게되는데, 그부분의옵션이나포함파일및라이브러리파일이어떠한것들이필요한지가샘플코드아래의 _log파일에포함되어있다. 한예로, h264_enc부분과 h264_dec 부분을추가하는요령을설명하겠다. 먼저, 비주얼 C++ 2005를열어솔루션을생성하여 H264Encoder 프로젝트와 H264Decoder프로젝트를생성한다. 그런후 IPP에서제공하는샘플의 umc_video_enc_con 폴더에있는부분과 umc_h264_dec_con폴더의내용들을복사하여프로젝트폴더에복사해둔다. 먼저, H264Decoder부분을컴파일을성공시키기위해아래와같은환경설정작업을하여야한다.( 물론, 생성된 _log폴더의내용을보고옵션과링크를설정하였다 ) 일단프로젝트를생성하여프로젝트폴더를구성해야한다. 핵심 Core와 Codec부분을추가하기위해서아래와같이폴더를구성하였다. 그림 9 Folder Description - 7 -
그림 10 속성페이지 - 일반 그림 10 에서추가포함디렉토리에는아래와같이입력한다. 긁어다써도됨... Core core vm include;.. Core core vm include sys;.. Core core umc include;.. Core core umc src;.. Core core vm_plus include;.. Core core usc include;.. Core codec color_space_converter incl ude;.. Core io audio_renders include;.. Core io media_buffers include;.. Core io umc_io include;.. Co re io video_renders include;.. Core pipeline umc_pipeline include;".. Core plug-in object_factory includ e";".. Core plug-in audio_codecs include";.. Core codec H264_spl src;.. Core codec H264_spl include;.. Core codec H264_dec include 그림 11 속성페이지 - 코드생성 위그림 11은코드생성부분페이지에서런타임라이브러리부분을 다중스레드 DLL(/MD) 로설정을한다. - 8 -
그림 12 속성페이지 - 언어 그림 12 에서언어페이지의 OpenMP 지원부분을 " 예 (/openmp) 로설정한다. 그림 13 속성페이지 - 고급 그림 13에서고급페이지의 특정경고사용안함 에서기타 Warning이뜨게되는데보기싫다면특정 Warning메시지번호를입력한다. (4512;4996;4100;4244;4267) - 9 -
그림 14 속성페이지 - 링커, 일반 그림 14 에서는내부적으로 IPP 의 Core 부분의라이브러리파일이있는곳을연결한모습이다. 그림 15 속성페이지 - 링커, 입력 그림 15에서입력페이지부분에서추가종속성과특정라이브러리무시부분을설정해야만한다. 추가종속성에는아래와같은내용을추가한다. umc_pipeline.lib avi_spl.lib mpeg4_spl.lib demuxer.lib aac_dec_int.lib mp3_dec_int.lib audio_renders.lib video_renders.lib dv_dec.lib mpeg2_dec.lib mpeg4_dec.lib h264_dec.lib h264_spl.lib jpeg.lib h261_dec.lib h263_dec.lib vc1_dec.lib vc1_spl.lib vc1_common.lib color_space_converter.lib media_buffers.lib common.lib umc_io.lib umc.lib vm.lib vm_plus.lib aac_dec.lib mp3_dec.lib ac3_dec.lib ippcore.lib ipps.lib ippi.lib ippdc.lib ippac.lib ippcc.lib ippvc.lib ippcv.lib ippj.lib ippsr.lib ippsc.lib comctl32.lib winmm.lib comsuppw.lib comsuppwd.lib 특정라이브러리무시 부분에는 "libcmt.lib;libcmtd.lib" 부분을추가한다. (IPP 샘플코드의공통적인요소 ) - 10 -
그림 16 과정중발생하는링크에러메시지 참고로, 위와같은설정대로컴파일을하다보면 LNK 에러가뜨게되는데그럴경우에러가뜨는함수명을검색하여소스파일을링크를해주면에러는없어지게된다. 참고 : 다른코덱어플리케이션도마찬가지로위와같은설정을따르지만각어플리케이션마다설정하는것을보고싶다면빌드후생성된 _log 파일을보면서옵션설정과디렉토리설정문제그리고라이브러리링크부분을확인하여추가하면된다. 또한그림 17과같이링크에러가뜬다면위와같이했던방법으로진행하면되겠다. 주의사항간혹, #include XXX 추가할시문제시되는점을발견하게되었는데, 샘플코드에구성된포함파일설정문제가발생하였다.. 만약순서대로포함하지않을시적지않는에러메시지나경고메시지가뜨게된다. - 11 -
1. umc_video_enc_con 프로젝트생성시추가사항추가포함디렉토리.. Core core vm include;.. Core core vm include sys;.. Core core umc include;.. Core core v m_plus include;.. Core core usc include;.. Core codec color_space_converter include;.. Core pipelin e umc_pipeline include;.. Core io audio_renders include;.. Core io media_buffers include;.. Core io umc_io include;.. Core io video_renders include;".. Core plug-in object_factory include";.. Core c odec H264_enc include;.. Core codec mpeg2_enc include;".. Core plug-in audio_codecs include";.. Core core umc src 특정경고사용안함 4996 입력 - 링커 - 추가종속성 mpeg2_enc.lib h264_enc.lib comctl32.lib color_space_converter.lib umc_io.lib media_buffers.lib common.lib umc.lib vm.lib vm_plus.lib ippcore.lib ipps.lib ippi.lib ippdc.lib ippac.lib ippcc.lib ippvc.lib ippcv.lib ippj.lib ippsr.lib ippsc.lib comsuppw.lib comsuppwd.lib 링커에러오류발생시 video_enc_con.cpp 파일부분맨위에 cpp파일링크해야함.(#include "umc_utils.cpp") - 12 -