Version 1.1.5 참조매뉴얼 DiscretePhoton www.discretephoton.com
참조매뉴얼 개요 는 DiscretePhoton 사의자체창작물로서국산소프트웨어입니다. 본 H.264 encoder 의 Windows version 은 32-bit 와 64-bit 의 DirectX Media Object (DMO) 형태로제공됩니다. 따라서직접또는 DirectShow 환경에서사용될수있습니다. 본 H.264 encoder 는최대 64 개의 thread 를지원하고있습니다. 하지만실제로인코딩시활용되는 thread 갯수는사용자 PC 의 CPU 코어 ( 또는 hyper-thread) 갯수와화면의크기에의해결정됩니다. 사용자가 thread 의갯수를더감소시킬수는있습니다. 본 H.264 encoder 의 multi-threading 은 wavefront 라는방식에기초하고있습니다. 모든작업 thread 는가장최근에입력을받은화면의인코딩작업에집중하게되며, 이방식은최종품질이나압축크기의저하등이없이아주낮은인코딩처리지연효과를가져올수있습니다. 본제품의 CBR rate-control 방식또한실시간처리시나리오에맞추어져있습니다. 따라서 DiscretePhoton H.264 encoder 는비디오컨퍼런싱과같은즉시성이중요한분야의어플리케이션에특히더적합합니다. 낮은인코딩처리지연은또한처리지연변동량의감소를의미합니다. 따라서이방식은실시간인코딩시아주낮은프레임 drop-rate 를가져올수있을것입니다. 본 H.264 encoder 의성능비교테스트자료를다음위치에서찾아보실수있습니다. 7-th annual video codec comparison by MSU. 더자세한내용과평가판의다운로드를위해서는 www.discretephoton.com 을방문하여주시기바랍니다. Reference Manual 1
GraphEdt.exe 를이용한사용법 GraphEdt.exe 는 Windows SDK 에포함되어있습니다. 이프로그램을이용하면 DirectShow 필터그래프를시각적으로구성하고테스트해볼수있습니다. 32-bit 버전의 설치후, GraphEdt.exe 의메뉴바로부터 Graph -> Insert Filters... -> Video Compressors 위치에서찾을수있습니다. 위그림에서 H.264 encoder 노드가녹색으로표시되어있는것은이것이사실상 DirectShow 필터가아닌 DMO(DirectX Media Object) 임을나타냅니다. 는입력비디오포맷으로 I420, YV12, UYVY, YUYV, RGB24, RGB32 를처리할수있으며그처리결과는 H.264 byte stream (FourCC: H264) 으로출력합니다. 위 노드를마우스오른쪽버튼으로클릭하면다음과같은속성페이지를나타나게할수있습니다. Reference Manual 2
Reference Manual 3
속성페이지에는 'General' 과 'Rate control' 이라는두개의탭이있습니다. 이곳에서값을변경후적용할경우그변경된값들은윈도우즈레지스트리 ( 위치 : HKEY_CURRENT_USER\Software\DiscretePhoton\Encoder) 에저장됩니다. 사용자는이레지스트리상의값들을직접읽거나변경할수도있습니다. 각속성항목의의미는다음과같습니다. Max # of threads: ( 레지스트리상이름 : "Max worker threads") 인코딩과정에서활용될최대 thread 갯수. 이숫자는실제값이아닌최대값으로되어있고, 그이유는실제값이사용자 PC 의 CPU 코어 ( 또는 Hyper thread) 갯수와화면의크기에의해결정되어지기때문입니다. 사용자는만약 CPU 의 100% 를인코딩과정에서사용하고싶지않다면이값을 CPU 코어의갯수보다더낮게설정할수도있습니다. Max key-frame period: ( 레지스트리상이름 : "Max key frame period") 여기서의키프레임은 H.264 상의 IDR 프레임을의미합니다. 이것역시실제값이아닌최대값을지정하도록되어있는데, 실제의키프레임간격은인코딩효율상지정된값보다더짧게나타날수도있기때문입니다. 키프레임간격의최소값은여기서지정된값의 1/2 로설정하고있습니다. Reference Manual 4
Reference-frame period: ( 레지스트리상이름 : "Ref frame period") 기본적으로는모든프레임이레퍼런스프레임으로사용됩니다. 하지만이값을증가시키고 ( 이경우일부의프레임들만레퍼런스로사용됨 ) Max key- frame period 값을감소시킴으로써 (UDP 와같은 ) 불확실한네트워크를통한비디오전송시의오류를감추는효과를얻을수도있을것입니다. Level: ( 레지스트리상값 : -1:Auto, 0:Level_1, 1:Level_1b,...) 이것은 H.264 인코딩레벨 ( 표준문서 annex A.3 에나타나는 ) 을지정합니다. 보통의경우사용자는이값을 'Auto' 로지정할수있습니다. 이때레벨은주어진다른파라미터와입력비디오에의해자동결정됩니다. Encoding speed: ( 레지스트리상이름 : "Fast mode". 0:Default, 1:Fast, 2:Even faster) 더빠른인코딩속도는품질을 ( 조금 ) 희생시키는방식으로얻어질수도있습니다. 따라서만약사용자가비교적높은출력 bit-rate 를사용하고있다면, 이항목을 'Fast' 또는 'Even faster' 로지정할수있을것입니다. 반대로낮은출력 bit-rate 를사용하고있다면 'Even faster' 로지정할경우결과화면에서블럭이보이는현상이나타날수도있습니다. Encoding live source / Encoding file source: ( 레지스트리상이름 : "Live source". 0:file source, 1:live source) 만약웹캠이나 TV 튜너등과같은라이브비디오를인코딩하는경우라면 'Encoding live source' 를, 그렇지않고파일등을인코딩하는경우라면 'Encoding file source' 를설정하시기바랍니다. Constant Qp: ( 레지스트리상값 : 0 은비활성화 ) 이항목이적용될경우출력비디오품질은거의동일성을유지하게될것이나, 출력 bit-rate 은상당히큰변동성을가질수있습니다. 즉이경우출력 bit-rate 의조정과정이생략됩니다. 따라서네트워크를통해전송되어질비디오에대해서는이항목을사용하지않는것이좋습니다. 이값의범위는 18-51 입니다. 값이클수록압축률이높아지고품질은낮아지게됩니다. Minimum Qp: 출력 bit-rate 에대한 rate-control 과정에서여기에서지정된값보다더낮은 Qp (quantization parameter) 값은사용하지않게됩니다. Bit rate: 출력 bit-rate 의지정. 초당 bit 수. Decoder buffer verifier: ( 레지스트리상이름 : "CPB verifier". 0:Hard, 1:Soft, 2:None) 디코더버퍼검증과정의엄밀성정도를설정합니다. 여기서말하는디코더버퍼는 H.264 표준문서 annex C 에나타나는 CPB(coded picture buffer) 에해당합니다. ( 주의 : 이값을 'Hard' 로설정하더라도완벽한검증을의미하지는않습니다.) Decoder buffer size: ( 레지스트리상이름 : "CPB size") Bit 단위의크기를지정합니다. 이값을 'Auto' 로지정하면허용되는최대값 (VCL HRD) 으로설정되어집니다. Insert filler data: 만약디코더버퍼가오버플로우에근접하고 Qp 또한최소값에근접해있다면 filler data 라는것을출력비트스트림에삽입함으로써출력 bit-rate 을유지하게됩니다. 따라서일반적으로이항목은필수적으로설정되어있어야합니다. Reference Manual 5
DirectShow 를이용한프로그래밍 DirectShow 환경에서의프로그래밍에관한참고자료들은어렵지않게접할수있으리라생각합니다. 를이용한비교적단순한예제프로그램들을다음위치에서다운로드하실수있습니다. 32-bit: http://www.discretephoton.com/php/downloader.php?f=examples.zip. 64-bit: http://www.discretephoton.com/php/downloader.php?f=examples_x64.zip. 위예제프로그램의 C++ 버전을빌드하기위해서는 Windows SDK 에포함된 DirectShow base class library 라는것이필요합니다. 그리고 C# 버전의경우 DirectShow.Net 을이용하고있습니다. 더자세한내용은예제프로그램에첨부된 README.htm 을참조하시기바랍니다. Reference Manual 6