FFmpeg filter enable/disable
2023. 11. 6. 19:49ㆍMultimedia
- 목차
반응형
FFmpeg을 통해 특정 filter의 build에 대해 enable/disable 하는 방법에 대해 알아보겠습니다.
my_filter라는 filter를 추가한다고 해 보겠습니다.
우선 다음의 작업들을 수행해야 합니다.
- vf_test.c 파일 작성
- 여기에는 const AVFilter ff_vf_test = { ... }; 가 정의되어 있어야 함
- allfilters.c
- 작성한 filter 내 정의한 AVFilter 구조체 인스턴스의 extern 선언을 추가
- ex. extern const AVFilter ff_vf_test;
- 이건 enable/disable 시 뺄(수정할) 필요가 없음
- Makefile
- filter 파일 build를 위해 다음의 행을 추가
- OBJS-$(CONFIG_TEST) += vf_test.o
- configure
- CONFIG_TEST가 특정 option에 의해 활성화/비활성화 될 수 있도록 다음과 같이 의존성 추가
- test_filter_deps="test"
- 이를 통해 test라는 option이 활성화 되어 있어야 my_filter가 빌드됩니다.
- vf_test.c에 AVFilter ff_vf_test가 정의되어 있다면, 이 dependency 변수의 이름은 test_filter_deps가 됩니다.
- 만약 vf_test.c 내에 다른 AVFilter가 정의되어 있다면, 예를들어 AVFilter ff_vf_test2가 정의되어 있다면, 이것 또한 다음과 같이 처리합니다.
- test2_filter_deps="..."
- test 옵션을 받아 들이는 부분은 다음과 같이 처리합니다.
...
--disable-videotoolbox disable VideoToolbox code [autodetect]
--enable-test enable test libraries [no] <- 추가
...
for opt do
optval="${opt#*=}"
--extra-ldflags=*)
add_ldflags $optval
...
--enable-test) <- 추가
warn "test is enabled" <- 추가
enable test <- 추가
...
...
다음의 script를 추가
enabled test && { check_lib test test_dep_lib/dep_api.h foo_function_in_dep -ltest_dep ||
die "ERROR: test_dep not found"; }
...
우선 configure 수행 시 --enable-myfilter option을 argument로 넘길 시 myfilter가 활성화 될 수 있도록 opt 처리 부분을 추가합니다.
여기서 enable myfilter를 통해 myfilter가 활성화 됩니다.
이후 myfilter가 활성화 된 경우 check_lib을 수행하여 my_filter가 의존하는 library의 정상 유무를 검사하는 부분을 추가합니다. 만약 의존하는 library가 없다면 이 부분은 무시합니다.
반응형
'Multimedia' 카테고리의 다른 글
NAL (Network Abstraction Layer) (0) | 2023.11.17 |
---|---|
vmaf library (0) | 2023.11.14 |
FFmpeg filter에서 lib link 작업 정리 (0) | 2023.10.20 |
FFmpeg filter 추가 (0) | 2023.10.20 |
FFmpeg에서 의존 라이브러리 지정 (0) | 2023.10.19 |