Share via


ContentInfo 개체의 속성 설정

ASF 파일을 만드는 동안 ContentInfo 개체는 다양한 헤더 개체가 올바른 값으로 채워지도록 미디어 콘텐츠의 특성을 알고 있어야 합니다.

콘텐츠 구성 설정은 프로필 내에 포함된 스트림 설정이며 미디어 싱크에 대한 스트림 식별자, 미디어 유형 및 새는 버킷 매개 변수를 지정합니다. IMFASFContentInfo::SetProfile을 호출하여 ContentInfo 개체에 프로필을 설정한 후 이러한 값은 생성된 ASF 헤더 개체에 반영됩니다. 이러한 설정에 대한 자세한 내용은 ASF 스트림 만들기 및 구성을 참조하세요.

인코더 설정을 사용하여 ContentInfo 개체 구성

디지털 미디어 오디오 또는 비디오 데이터는 복잡하며 많은 양의 메모리를 차지합니다. 대부분의 경우 오디오와 비디오는 ASF 파일에 추가되기 전에 인코더를 사용하여 압축됩니다. Media Foundation에서 인코더는 하나의 입력과 하나의 출력을 사용하여 MFT( Media Foundation Transforms )로 구현됩니다. 입력 스트림의 미디어 형식 및 스트림 압축을 위해 선택한 인코딩 형식에 따라 출력 미디어 형식을 선택해야 합니다.

인코딩 세션 전에 인코딩 유형에 따라 관련 속성을 설정하여 인코더를 구성해야 합니다.

인코더를 구성한 후에는 채워진 ContentInfo 개체로 초기화된 ASF 멀티플렉서 및 ASF 미디어 싱크가 새는 버킷 값과 같은 설정을 사용하여 ASF 데이터 패킷을 생성하기 때문에 인코더 값으로 ContentInfo 개체를 구성해야 합니다. 값은 최종 ASF 헤더 개체에 저장되지 않습니다. 인코딩 설정은 속성으로 노출됩니다. 인코더 속성을 사용하여 ContentInfo 개체를 구성하려면 다음을 수행합니다.

  1. IPropertyStore 인터페이스에 대한 인코더(IMFTransform 인터페이스)를 직접 쿼리하여 인코더의 속성 저장소에 대한 포인터를 가져옵니다.
  2. IMFASFContentInfo::GetEncodingConfigurationPropertyStore를 호출합니다. 스트림별 속성을 설정하려면 wStreamNumber 매개 변수에서 스트림 식별자를 지정합니다. 파일 수준 속성의 경우 0을 전달합니다. ppIStore 매개 변수는 IPropertyStore 인터페이스에 대한 포인터를 받습니다. 받은 속성 저장소가 비어 있습니다.
  3. 인코더에서 IPropertyStore::GetValue 를 호출하고 속성 키 상수를 지정하여 속성 값을 가져옵니다. 인코딩 속성의 전체 목록은 코덱 프로그래밍 참조를 참조하세요.
  4. ContentInfo 개체에서 IPropertyStore::SetValue 를 호출하여 속성 저장소에 필요한 속성을 설정합니다.
  5. 설정하려는 각 속성에 대해 3단계와 4단계를 반복합니다.

ASF 미디어 싱크는 MFCreateASFMediaSinkActivate를 호출하여 활성화 개체를 사용하여 만들 수 있습니다. 새 미디어 싱크 개체는 ContentInfo 개체의 속성 저장소에서 설정할 수 있는 미디어 싱크 관련 설정에 따라 구성됩니다. 다음 표에서는 ASF 미디어 싱크 속성 상수를 보여 줍니다.

속성 Description
MFPKEY_ASFMEDIASINK_BASE_SENDTIME 전송 시간은 새는 버킷 내의 페이로드가 해제되는 시기를 나타냅니다. 이 속성 값은 첫 번째 전송 시간을 나타냅니다. 멀티플렉서는 이 값을 사용하여 생성된 패킷에 대한 후속 전송 시간을 계산하고 새는 버킷을 통해 데이터가 꾸준히 흐르도록 합니다.
MFPKEY_ASFMEDIASINK_AUTOADJUST_BITRATE BOOL 값은 데이터가 새 버킷을 오버플로하지 않도록 멀티플렉서가 비트 속도를 자동으로 조정해야 하는지 여부를 나타냅니다.
MFPKEY_ASFMEDIASINK_DRMACTION 이는 파일 생성을 위한 ASF 미디어 싱크 DRM 작업을 나타냅니다. 이 릴리스에서는 DRM 트랜스코드만 지원됩니다.
MFPKEY_ASFSTREAMSINK_CORRECTED_LEAKYBUCKET 인코더가 사용할 버퍼 창과 비트 속도를 결정할 때 이 속성을 설정해야 합니다. 이러한 값을 설정하려면 IWMCodecLeakyBucket 인터페이스를 사용합니다. ASF 파일의 각 스트림에 대해 설정해야 합니다.

 

새 파일에 대한 ASF 헤더 개체 작성