H265|HEVC Reference Code

映像圧縮技術 H265| HEVC のReference Codeで、エンコードをしてみます。
Refernceo Codeは、H264|AVCの規格を作った団体が作ったエンコーダ/デコーダになります。
ソフトウェアは、以下のサイトで入手可能です。

https://hevc.hhi.fraunhofer.de/ 

HEVCのソフトウェアの場所になります。


Tagのバージョンで確認したいので、


のバージョンで評価してみます。

ソースコードをダウンロードしてきます。

svn co https://hevc.hhi.fraunhofer.de/svn/svn_HEVCSoftware/tags/HM-16.9/

次にビルドします。

cd  HM-16.9/build/linux
make

でビルドができます。ビルドできるとbinのディレクトリにエンコーダとデコーダができます。

ls
TAppDecoderStatic   TAppEncoderStatic

次にエンコードするための、データを用意する。

のサイトのsccoerのCIFのデータを使用する。

エンコーダが読み取れるデータ形式のyuv420pの形式で変更する。fffmpegを使用する。

./ffmpeg -i soccer_cif.y4m -f rawvideo -pix_fmt yuv420p -r 29.97 soccer.yuv


できたsccoer.yuvをエンコードする。

./TAppEncoderStatic -i ./soccer_cif.yuv  -wdt 352 -hgt 288 --InputBitDepth=8 --OutputBitDepth=8 -fr 29.97 -f 300 -c ../cfg/encoder_randomaccess_main.cfg

結果、生成されるファイルは、encoder_randomaccess_main.cfgに書かれているstr.binというHEVCのファイルが生成されました。

次にデコードを行います。

./TAppDecoderStatic  -b str.bin -o soccer_output.yuv

デコードは300フレームだと1秒程度で終わります。デコードした結果は、soccer_output.yuvとして生成される。画質の評価は、ffmpegを使用する。エンコード前の画像とエンコード後の画像をPSNRで測定する。

./ffmpeg -f rawvideo -vcodec rawvideo -s 352x288 -pix_fmt yuv420p -i soccer_cif.yuv -f rawvideo -vcodec rawvideo -s 352x288 -pix_fmt yuv420p -i soccer_output.yuv -filter_complex psnr -an -f null -




PSNRの結果になります。PSNRは数字が大きい方が画像が良いです。32ぐらいであればほぼ圧縮したことに気づきそうです。

PSNR y:32.967432 u:41.087718 v:42.676378 average:34.453736 min:32.372377 max:39.883238


ファイルサイズは、45619200 byte → 248766 byteと大幅に削減されています。

1枚目だけ、画像を確認します。

オリジナル画像

H265|HEvcエンコード後の画像


若干圧縮されているのがわかりそうです。

自分でビルドしたTAppEncoderStaticTAppDecoderStatic添付します。Linux上で動作すると思います。

コメント