FFmpeg filter 추가

2023. 10. 20. 11:36Multimedia

    목차
반응형

ffmpeg-n6.0/configure 파일 내에 추가하고자 하는 필터에 대한 정보를 기술합니다.

your라는 이름의 filter를 등록할 때 다음과 같이 등록합니다.

your_filter_deps=""

위와 같이 configure 파일 내에 필터에 대한 의존성 정보를 기술해 줘야 libavfilter/filter_list.c에 해당 filter에 대한 AVFilter 구조체 인스턴스의 내용이 '자동으로' 추가됩니다. (filter_list.c를 수정해서 추가하게되면 다음 configure 수행 시 수정한 부분은 원복됩니다)

만일 이 필터가 의존해야 하는 library를 지정하고자 한다면, 다음과 같이 추가합니다.

your_filter_deps="your_dependency"

일단, 염두해 둘 점은 your_dependency는 library 이름이 아니라는 것 입니다.
이는 configure 내 정의된 변수 명 입니다.
그러니 your_dependency가 어딘가 선언 되어 있어야 합니다.

your option을 활성화 해서 configure를 실행했을 시 your_dependency가 활성화 되도록 코드를 작성합니다.

for opt do
    optval="${opt#*=}"
    ...
    --enable-your)
            warn "your is enabled"
            enable your_dependency
        ;;
    ...

이번에는 your_dependency가 처리할 부분을 기술합니다.

enabled your_dependency            && { check_lib your_dependency your_dep/your_dep.h initYourDep -lyour_dep || 
                                 die "ERROR: your_dependency not found"; }

your_dependency가 활성화 되어 있다면, check_lib이 포함할 library에 대한 검사를 수행합니다.
check_lib 뒤에 첫번째로 나오는 것은 의존성 검사명이며 두 번째로 나오는 것은 library test를 위해 include할 header file이며, 세 번째 것은 library가 제공하는 interface 내 함수명 입니다. 이후 네 번째로 link에 포함할 library를 지정(-lyour_dep) 합니다.
뒤에 나오는 ||는 만약 의존성 검사에 실패한다면 configuire 과정을 끝내는 die 구문을 수행하는 부분입니다.

이렇게 의존성 검사에 실패할 경우 configure가 죽도록 해야만 합니다.
그렇지 않으면 (즉, 위에 의존성 검사 부분이 없다면) configure는 정상 처리(되는것 처럼 보이고) 되며, 빌드가 완성되게 됩니다.
그러나 의도했던 filter가 binary에 포함되어 있지 않기 때문에 filter name으로 filter를 찾을 수가 없습니다.
(ffmpeg -filters 실행 시 추가하기를 의도했던 filter가 없는 것을 확인할 수 있습니다)

반응형

'Multimedia' 카테고리의 다른 글

FFmpeg filter enable/disable  (0) 2023.11.06
FFmpeg filter에서 lib link 작업 정리  (0) 2023.10.20
FFmpeg에서 의존 라이브러리 지정  (0) 2023.10.19
동영상 컨텐츠 종류 (UCC, RMC 등)  (0) 2023.09.26
FFmpeg Side data 설정  (0) 2023.09.21