다음을 통해 공유


데이터 단위 확장 구성

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

ASF 파일에 작성된 샘플은 미디어 샘플 자체와는 별도로 추가 정보를 포함할 수 있습니다. 이 정보는 데이터 단위 확장을 사용하여 포함됩니다. 데이터 단위 확장에 대한 자세한 내용은 Data Unit Extensions참조하세요.

데이터 단위 확장을 사용하려면 프로필에서 스트림을 수락하도록 구성해야 합니다. 스트림에 대한 데이터 단위 확장을 구성하려면 다음 단계를 수행합니다.

  1. IWMStreamConfigQueryInterface 메서드를 호출하여 IWMStreamConfig2 인터페이스에 대한 포인터를 가져옵니다.
  2. IWMStreamConfig2::AddDataUnitExtension 호출하여 스트림에 대한 데이터 단위 확장 형식을 등록합니다.

IWMStreamConfig2::GetDataUnitExtensionCount 호출하여 스트림에 대해 현재 등록된 모든 데이터 단위 확장 유형을 검사하여 등록된 데이터 단위 확장 형식의 수를 검색할 수 있습니다. 그런 다음 각각에 대해 IWMStreamConfig2::GetDataUnitExtension 호출을 사용하여 모든 형식을 반복할 수 있습니다.

스트림에 대해 구성된 경우 데이터 단위 확장에 크기가 할당됩니다. 많은 데이터 단위 확장 시스템은 일정한 크기(일반적으로 구조)인 데이터를 사용합니다. 그러나 크기를 0xFFFF 설정하여 데이터 단위 확장을 가변 크기로 구성할 수도 있습니다. 인코딩 시간에 할당된 각 데이터 단위 확장은 1바이트에서 65534바이트 사이의 모든 크기일 수 있습니다. 가변 크기 데이터 단위 확장은 동적 데이터 단위 확장이라고도 합니다.

동적 데이터 단위 확장을 사용하는 장점은 필요에 따라 확장 데이터를 연결할 수 있다는 것입니다. 설정된 크기로 데이터 단위 확장을 정의하는 경우 일부 샘플에 대한 데이터가 없더라도 스트림의 모든 샘플에는 해당 크기의 확장 데이터가 포함되어야 합니다. 동적 데이터 단위 확장을 사용하면 일부 샘플에서 데이터 단위 확장을 생략하여 공간을 절약하고 대역폭 요구 사항을 줄일 수 있습니다. 그러나 데이터 단위 확장의 크기가 가변적인 경우 읽기 개체는 정적 크기에 대해 수신된 확장 데이터를 확인할 수 없습니다. 수신한 확장 데이터가 비트 스트림의 악의적인 왜곡이 아니라 유효한지 확인해야 합니다.

개별 데이터 단위 확장은 INSSBuffer3::SetProperty 메서드를 사용하여 샘플에서 설정해야 합니다. 자세한 내용은 데이터 단위 확장 설정을 참조하세요.

스트림 구성