다음을 통해 공유


인터레이스 비디오를 사용하려면

[이 페이지와 연결된 기능인 Windows Media Format 11 SDK는 레거시 기능입니다. 원본 판독기 및 싱크 작성기에 의해 대체되었습니다. 원본 판독기 및 싱크 작성기는 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 Windows Media Format 11 SDK 대신 소스 판독기 및 싱크 작성기를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

비디오 인코딩에는 프로그레시브 및 인터레이스라는 두 가지 기본 형식이 있습니다. 프로그레시브 인코딩에서 각 프레임은 한 비디오 프레임의 인코딩된 표현입니다. 인터레이스 인코딩에서 각 프레임은 비디오의 모든 짝수 픽셀 행 또는 모든 홀수 행의 인코딩된 표현입니다. 인터레이스된 각 프레임을 필드라고 하므로 홀수 필드와 짝수 필드가 있습니다. 인터레이스된 디스플레이(예: 텔레비전)는 필드를 번갈아 가며 한 번에 하나씩 렌더링합니다. 프로그레시브 디스플레이는 프레임을 한 번에 렌더링합니다.

Windows Media Video 9 고급 프로필 코덱은 압축된 스트림에서 인터레이스 유지 관리를 지원합니다.

인터레이스 비디오를 사용해야 하는 경우

인터레이스된 비디오 인코딩은 콘텐츠가 인터레이스된 디바이스에 표시되는 경우에만 유용합니다. 텔레비전(셋톱 박스 또는 기타 장치를 통해)에서 볼 수 있는 콘텐츠는 인터레이스해야 할 수 있습니다. 컴퓨터 디스플레이에서만 볼 수 있는 콘텐츠는 인터레이스로 인코딩되어서는 안 됩니다.

인터레이스된 비디오를 점진적 비디오로 인코딩하려면 입력 설정을 구성해야 합니다. 자세한 내용은 To Deinterlace Video를 참조하세요.

필드 순서

비디오 캡처 카드와 같은 인터레이스된 비디오의 대부분의 소스는 서로 인터리빙된 두 필드를 포함하는 비디오 샘플을 제공합니다. 결과는 홀수 및 짝수 선이 시간에 약간 이동된다는 점을 제외하고 비디오의 전체 프레임과 같습니다. 인터리브 비디오 샘플에서 처음으로 발생하는 필드에 대한 범용 표준은 없습니다.

인터레이스된 샘플을 애플리케이션에 전달할 때 사용자가 필드 순서를 지정할 수 있도록 해야 합니다.

인터레이스 비디오 인코딩

인터레이스 인코딩을 사용하려면 다음 단계를 수행합니다.

  1. IWMStreamConfig2::AddDataUnitExtension 메서드를 호출하여 콘텐츠 형식 데이터 단위 확장을 사용하도록 프로필의 비디오 스트림을 구성합니다. 콘텐츠 형식 확장에 대한 샘플 확장 GUID는 WM_SampleExtensionsGUID_ContentType.
  2. 프로필에서 스트림을 설정하고 프로필을 정상적으로 사용하여 작성기를 구성합니다.
  3. 인터레이스된 샘플을 작성기에 전달하기 전에 IWMWriterAdvanced2::SetInputSetting 메서드를 호출하여 g_wszInterlacedCoding 입력 설정을 TRUE로 설정합니다.
  4. 기록기에 전달하는 모든 인터레이스 샘플에 대해 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로 설정해야 합니다. 그렇지 않으면 코덱은 프로그레시브 프레임을 제공합니다.

콘텐츠 형식 데이터 단위 확장은 출력 샘플에서 유지 관리됩니다. 적절한 재생을 보장하려면 렌더링 디바이스에 필드 방향을 전달해야 합니다.

고급 항목