동영상 인코딩 방식은 크게 인터레이스와 프로그레시브로 나눌 수 있습니다.

프로그레시브는 하나의 프레임을 프레임 그대로 저장하는 방식이고,

인터레이스는 하나의 프레임을 두 개의 필드로 나눠서 저장하는 방식입니다.


인터레이스 인코딩 방식을 그림으로 보면 아래와 같습니다.


인터레이스로 촬영된 영상(프레임)이라면 인코딩 또한 위 그림처럼 인터레이스 방식으로 하는 것이 적합하겠죠.



H.264/AVC의 인터레이스 인코딩 방식은 다시 두 가지로 나눌 수 있는데 PAFFMBAFF입니다.

PAFF(Picture Adaptive Frame Field)는 프레임 레벨에서 프로그레시브와 인터레이스를 선택하는 방식이고

MBAFF(MacroBlock Adaptive Frame Field)는 매크로블럭 레벨에서 프로그레시브와 인터레이스를 선택하는 방식입니다.


예를 들어 0부터 9까지 총 10장의 화면을 인코딩한다고 가정했을 때

PAFF 방식은 다음과 같이 각각의 프레임을 프로그레시브 또는 인터레이스 중 하나로 자유롭게 선택해서 인코딩하는 것이 가능합니다.

p i p i p i p p p i

즉, 인터레이스가 적합할지 또는 프로그레시브가 적합할지를 프레임 단위로 판별해서 인코딩하는 방식입니다.


MBAFF 방식은 한 단계 더 올라가서 매크로블럭 단위로 인터레이스 또는 프로그레시브를 판별하는 방식입니다.

즉, 하나의 프레임 내에서도 프로그레시브로 인코딩되는 매크로블럭과 인터레이스로 인코딩되는 매크로블럭이 함께 존재할 수 있습니다.

예를 들어 맨위 그림의 왼쪽 프레임을 MBAFF로 인코딩한다고 가정해보면

가로줄이 보이는 부분만 인터레이스로 인코딩하고 나머지 부분은 프로그레시브로 인코딩하는 것도 가능하다는 것이죠.

H.264/AVC 표준에서는 MBAFF를 사용하는 경우 위 아래로 두 개의 매크로블럭이 짝을 이뤄서 인코딩됩니다.

이렇게 하면 해당 매크로블럭들을 필드로 인코딩하게 되더라도 16x16의 매크로블럭 크기를 그대로 사용할 수 있기 때문입니다.


x264의 인터레이스 인코딩 방식도 MBAFF입니다.

PAFF를 지원하지 않기 때문에 x264에서 --tff 또는 --bff를 사용하면 항상 MBAFF로만 인코딩됩니다.

그런데 MBAFF를 사용하면 모든 매크로블럭들이 프로그레시브로 인코딩되는 경우도 생각해 볼 수 있습니다.

MBAFF가 사용됐을 뿐 모든 매크로블럭이 프로그레시브로 인코딩된다면 일반적인 프로그레시브 인코딩과도 별 차이가 없겠죠.

이처럼 MBAFF를 사용하는 동시에 모든 매크로블럭을 프로그레시브로 인코딩되도록 만드는 옵션이 --fake-interlaced 입니다.

블루레이 표준이 25p 또는 30p를 지원하지 않기 때문에 어쩔 수 없이 50i 또는 60i로 인코딩해야 할 때 사용되는 옵션이고

블루레이 디스크를 제작하는 경우가 아니라면 굳이 사용할 필요는 없겠죠.


그리고 차세대 압축 표준인 H.265/HEVC 에서는 따로 인터레이스 인코딩 관련 압축 기술들이 포함되지 않는다고 합니다.

대신 인터레이스 영상인지 여부만 표시해주는 헤더 정보가 추가된다고 하네요.

촬영이나 디스플레이 등이 프로그레시브로 전환되면서 인터레이스 포맷은 점점 사라져가는 것 같습니다.





Posted by 김코덱