입력, 스트림 및 출력

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

이 설명서의 "입력"은 애플리케이션이 적절한 API를 사용하여 원본에서 기록기 개체에 제공하는 모든 디지털 미디어 데이터 스트림(예: 오디오 또는 비디오)입니다. 입력은 지원되는 형식으로 전달되어야 합니다. 여러 표준 RGB 및 YUV 형식이 입력으로 지원되며 오디오 코덱은 PCM을 지원합니다. 지정된 입력 형식이 코덱에서 기본적으로 지원되지 않는 경우 작성기 개체는 다양한 형식을 코덱이 허용할 수 있는 형식으로 변환할 수 있는 오디오 또는 비디오 도우미 개체를 인스턴스화합니다. 오디오 입력의 경우 도우미 개체는 필요에 따라 비트 깊이, 샘플 속도 및 채널 수를 조정합니다. 비디오 입력의 경우 비디오 도우미 개체는 색 공간 변환 및 사각형 크기 조정을 수행합니다. 경우에 따라 압축된 오디오 및 비디오 데이터를 입력 스트림에 전달할 수 있습니다. 입력은 텍스트, 스크립트 명령, 스틸 이미지 또는 임의 파일 데이터와 같은 오디오 및 비디오 외에 다른 미디어 형식일 수 있습니다.

이 설명서의 "출력"은 판독기 개체가 렌더링을 위해 애플리케이션에 전달하는 데이터를 나타냅니다. 출력은 재생 시 단일 스트림과 동일합니다. 상호 제외를 사용하는 경우 모든 상호 배타적 스트림은 단일 출력을 공유합니다. 일반적으로 출력 데이터는 모든 형식의 데이터를 포함할 수 있지만 압축되지 않은 오디오 또는 비디오 데이터 형식입니다. 지원되는 비디오 출력 형식은 이 설명서의 다른 곳에 나열되어 있습니다.

이 설명서의 "stream"이라는 용어는 (1) 기록기 개체에서 처리되기 전의 입력 원본 데이터 및 (2) 판독기 개체에서 압축을 풉니다. ASF 스트림에는 기록기 개체의 단일 입력에서 가져온 데이터가 포함되어 있지만 동일한 입력에서 둘 이상의 스트림을 만들 수 있습니다. 스트림의 형식 및 압축 설정은 처음부터 끝까지 동일합니다. 간단한 ASF 파일에는 오디오용과 비디오용 스트림의 두 가지 스트림이 있습니다. 더 복잡한 파일에는 두 개의 오디오 스트림과 여러 비디오 스트림이 있을 수 있습니다. 오디오 스트림은 동일한 압축 설정을 가질 수 있지만 다른 언어의 내레이션과 같은 다른 콘텐츠를 포함할 수 있습니다. 비디오 스트림은 동일한 콘텐츠를 포함할 수 있지만 압축 설정이 다릅니다. 기록기 개체가 각 스트림에 적용할 미디어 형식 및 압축 설정이 프로필에 지정됩니다.

입력, 스트림 및 출력 간의 관계는 세 가지 기본 형식일 수 있습니다. 다음 세 다이어그램은 관계를 보여 줍니다.

상호 제외가 없는 프로필인 가장 기본적인 관계에서 각 입력은 작성기에 의해 처리되고 ASF 파일에 단일 스트림으로 삽입됩니다. 재생 시 판독기는 스트림을 읽고 다음 다이어그램과 같이 압축되지 않은 샘플을 단일 출력으로 제공합니다.

입력, 스트림 및 출력 간의 정상적인 관계를 보여 주는 다이어그램

여러 비트 전송률 상호 제외를 사용할 때 더 복잡한 관계가 발생합니다. 이 경우 단일 입력은 기록기에서 처리되고 여러 비트 속도로 인코딩됩니다. 데이터의 각 인코딩은 ASF 파일에 별도의 스트림으로 삽입됩니다. 재생 시 판독기는 사용 가능한 대역폭에 따라 압축을 풀 스트림을 결정합니다. 그런 다음 판독기는 선택한 스트림을 읽고 다음 다이어그램과 같이 압축되지 않은 샘플을 단일 출력으로 제공합니다.

여러 비트 전송률 상호 제외를 사용할 때 입력, 스트림 및 출력 간의 관계를 보여 주는 다이어그램

세 번째 유형의 관계는 언어 기반 또는 사용자 지정 상호 제외를 사용할 때 발생할 수 있습니다. 이 관계에서는 판독기에서 여러 입력을 처리하고 각 입력은 개별 스트림으로 ASF 파일에 삽입됩니다. 재생 시 애플리케이션은 사용자가 제공하는 논리에 따라 압축을 풀 스트림을 수동으로 선택합니다. 그런 다음 판독기는 선택한 스트림을 읽고 압축되지 않은 샘플을 단일 출력으로 제공합니다. 이 프로세스는 여러 언어로 사운드트랙을 포함하는 데 사용할 수 있습니다. 다음 다이어그램에서는 이 프로세스를 보여 줍니다.

사용자 지정 상호 제외를 사용할 때 입력, 스트림 및 출력 간의 관계를 보여 주는 다이어그램

이전에 설명한 관계에는 몇 가지 변형이 있습니다. 예를 들어 파일에는 세 가지 관계 또는 하나 또는 두 개의 관계가 모두 포함될 수 있습니다. 일부 입력을 압축할 수도 있습니다. 이 경우 기록기는 추가 압축을 수행하지 않습니다. 판독기는 압축된 샘플을 제공할 수도 있습니다. 그러나 이 경우 출력 번호가 아닌 스트림 번호로 액세스해야 합니다.

참고

입력, 증기 및 출력은 모두 Windows Media Format SDK의 개체에 의해 할당된 숫자입니다. 스트림에는 프로필에서 정의하는 스트림 번호(1 기반)가 있습니다. 각 스트림에는 프로필의 스트림을 열거하는 데 사용할 스트림 인덱스도 할당됩니다. 이러한 숫자 중 어느 것도 서로 일치하도록 보장되지 않습니다. 즉, 입력 번호 1은 스트림 번호 1과 일치하지 않을 수 있고, 스트림 번호 1은 스트림 인덱스 1과 일치하지 않을 수 있습니다.

 

개념

상호 제외