ffmpeg AVFilter実装とかの話
この環境でフィルタを実装する
ここにちょっと書いてある
video filter(VF)を作る
1フレームを取って加工できるようなフィルタ
vf_edgedetect.cをコピーしてlibavfiler/vf_renard.cを作成
code:sh
sed 's/edgedetect/renard/g;s/EdgeDetect/Renard/g'
みたいに書き換える
ちなAVOptionが渡されるパラメータで、ffmpeg -h filter=renardした時に表示される情報でもある
MAKEFILEに追加
code:MAKEFILE
OBJS-$(CONFIG_EDGEDETECT_FILTER) += vf_edgedetect.o edge_common.o
+ OBJS-$(CONFIG_RENARD_FILTER) += vf_renard.o edge_common.o
allfilters.cに追加
code:c
extern const AVFilter ff_vf_edgedetect;
+ extern const AVFilter ff_vf_renard;
https://scrapbox.io/files/6757cb03be5d027b3eeeff68.png
再ビルドで使えるようになってるはず
code:sh
ffmpeg -filters | grep renard
とか
code:sh
ffmpeg -i hoge -vf renard=low=0.1:high=0.4 fuga
で確認できる
bitstream filter (BSF)を作る
VFと違ってエンコード後のビットストリームデータにアクセスするようなフィルタ
bsf/noise.cを見るのがいいとおも