인터레이스 비디오를 사용하려면
[이 페이지와 연결된 기능인 Windows Media Format 11 SDK는 레거시 기능입니다. 원본 판독기 및 싱크 작성기에 의해 대체되었습니다. 원본 판독기 및 싱크 작성기는 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 Windows Media Format 11 SDK 대신 소스 판독기 및 싱크 작성기를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
비디오 인코딩에는 프로그레시브 및 인터레이스라는 두 가지 기본 형식이 있습니다. 프로그레시브 인코딩에서 각 프레임은 한 비디오 프레임의 인코딩된 표현입니다. 인터레이스 인코딩에서 각 프레임은 비디오의 모든 짝수 픽셀 행 또는 모든 홀수 행의 인코딩된 표현입니다. 인터레이스된 각 프레임을 필드라고 하므로 홀수 필드와 짝수 필드가 있습니다. 인터레이스된 디스플레이(예: 텔레비전)는 필드를 번갈아 가며 한 번에 하나씩 렌더링합니다. 프로그레시브 디스플레이는 프레임을 한 번에 렌더링합니다.
Windows Media Video 9 고급 프로필 코덱은 압축된 스트림에서 인터레이스 유지 관리를 지원합니다.
인터레이스 비디오를 사용해야 하는 경우
인터레이스된 비디오 인코딩은 콘텐츠가 인터레이스된 디바이스에 표시되는 경우에만 유용합니다. 텔레비전(셋톱 박스 또는 기타 장치를 통해)에서 볼 수 있는 콘텐츠는 인터레이스해야 할 수 있습니다. 컴퓨터 디스플레이에서만 볼 수 있는 콘텐츠는 인터레이스로 인코딩되어서는 안 됩니다.
인터레이스된 비디오를 점진적 비디오로 인코딩하려면 입력 설정을 구성해야 합니다. 자세한 내용은 To Deinterlace Video를 참조하세요.
필드 순서
비디오 캡처 카드와 같은 인터레이스된 비디오의 대부분의 소스는 서로 인터리빙된 두 필드를 포함하는 비디오 샘플을 제공합니다. 결과는 홀수 및 짝수 선이 시간에 약간 이동된다는 점을 제외하고 비디오의 전체 프레임과 같습니다. 인터리브 비디오 샘플에서 처음으로 발생하는 필드에 대한 범용 표준은 없습니다.
인터레이스된 샘플을 애플리케이션에 전달할 때 사용자가 필드 순서를 지정할 수 있도록 해야 합니다.
인터레이스 비디오 인코딩
인터레이스 인코딩을 사용하려면 다음 단계를 수행합니다.
- IWMStreamConfig2::AddDataUnitExtension 메서드를 호출하여 콘텐츠 형식 데이터 단위 확장을 사용하도록 프로필의 비디오 스트림을 구성합니다. 콘텐츠 형식 확장에 대한 샘플 확장 GUID는 WM_SampleExtensionsGUID_ContentType.
- 프로필에서 스트림을 설정하고 프로필을 정상적으로 사용하여 작성기를 구성합니다.
- 인터레이스된 샘플을 작성기에 전달하기 전에 IWMWriterAdvanced2::SetInputSetting 메서드를 호출하여 g_wszInterlacedCoding 입력 설정을 TRUE로 설정합니다.
- 기록기에 전달하는 모든 인터레이스 샘플에 대해 INSSBuffer3::SetProperty 메서드를 호출하여 콘텐츠 형식을 설정합니다. 콘텐츠 형식 값은 다음 표에 있는 플래그의 조합입니다.
플래그 | 설명 |
---|---|
WM_CT_INTERLACED | 인터레이스된 콘텐츠를 인코딩할 때 항상 이 플래그를 설정합니다. 필드 순서 플래그(WM_CT_BOTTOM_FIELD_FIRST 또는 WM_CT_TOP_FIELD_FIRST)를 설정하지 않고 이 플래그를 사용하는 경우 코덱은 맨 위 필드가 먼저라고 가정합니다. 코덱이 잘못된 필드 순서를 사용하는 경우 이미지 품질에 영향을 주지 않아야 하지만 인코딩 효율성이 영향을 받습니다. |
WM_CT_BOTTOM_FIELD_FIRST | WM_CT_INTERLACED 플래그와 결합하면 이 플래그는 맨 아래 필드(샘플의 두 번째 줄로 시작하는 필드)가 처음 발생했음을 나타냅니다. |
WM_CT_TOP_FIELD_FIRST | WM_CT_INTERLACED 플래그와 결합하면 이 플래그는 맨 위 필드(샘플의 첫 번째 줄로 시작하는 필드)가 처음 발생했음을 나타냅니다. |
WM_CT_REPEAT_FIRST_FIELD | 샘플의 첫 번째 필드가 재생 시 반복되어야 했음을 나타냅니다. 이 플래그는 텔레신 프로세스에 의해 필름에서 만든 비디오에 사용됩니다. 이 플래그와 함께 필드 순서 플래그가 설정되지 않은 경우 맨 위 필드는 처음으로 발생하는 것으로 간주됩니다. |
참고
WM_CT_INTERLACED 플래그가 설정되지 않은 경우 샘플은 프로그레시브 비디오 프레임을 포함하는 것으로 간주됩니다.
인터레이스된 비디오 디코딩
인터레이스된 비디오를 디코딩할 때 IWMReaderAdvanced2::SetOutputSetting 메서드를 사용하여 g_wszAllowInterlacedOutput 설정을 TRUE로 설정해야 합니다. 그렇지 않으면 코덱은 프로그레시브 프레임을 제공합니다.
콘텐츠 형식 데이터 단위 확장은 출력 샘플에서 유지 관리됩니다. 적절한 재생을 보장하려면 렌더링 디바이스에 필드 방향을 전달해야 합니다.