리소스 교환 파일 형식 서비스

멀티미디어 파일의 기본 형식은 RIFF(리소스 교환 파일 형식)입니다. RIFF 파일 I/O 함수는 기본 버퍼링 및 버퍼링되지 않은 파일 I/O 서비스에서 작동합니다. 다른 파일 형식과 동일한 방식으로 RIFF 파일을 열고 읽고 쓸 수 있습니다. RIFF에 대한 자세한 내용은 AVIFile 함수 및 매크로를 참조하세요.

RIFF 파일은 4자 코드를 사용하여 파일 요소를 식별합니다. 이러한 코드는 1~4개의 ASCII 영숫자 문자 시퀀스를 나타내는 32비트 수량으로, 오른쪽에 공백 문자가 채워집니다. 4자 코드의 데이터 형식은 FOURCC입니다. mmioFOURCC 매크로를 사용하여 4자를 4자 코드로 변환합니다. null로 끝나는 문자열을 4자 코드로 변환하려면 mmioStringToFOURCC 함수를 사용합니다.

RIFF 파일의 기본 구성 요소는 청크입니다. 청크는 비디오 클립의 단일 프레임과 같은 멀티미디어 데이터의 논리적 단위입니다. 각 청크에는 다음 필드가 포함됩니다.

  • 청크 식별자를 지정하는 4자 코드
  • 청크의 데이터 멤버 크기를 지정하는 이중 단어 값입니다.
  • 데이터 필드

다음 그림에서는 두 개의 하위 펑크를 포함하는 "RIFF" 청크를 보여 줍니다.

riff chunk that contains two subchunks image

다른 청크에 포함된 청크는 하위 펑크입니다. 하위 펑크를 포함할 수 있는 유일한 청크는 청크 식별자가 "RIFF" 또는 "LIST"인 청크입니다. 다른 청크를 포함하는 청크를 부모 청크라고 합니다. RIFF 파일의 첫 번째 청크는 "RIFF" 청크여야 합니다. 파일의 다른 모든 청크는 "RIFF" 청크의 하위 펑크입니다.

"RIFF" 청크에는 데이터 필드의 처음 4바이트에 추가 필드가 포함됩니다. 이 추가 필드는 필드의 양식 형식 을 제공합니다. 양식 형식은 파일에 저장된 데이터의 형식을 식별하는 4자 코드입니다. 예를 들어 Microsoft 웨이브 폼 오디오 파일의 형식 형식은 "WAVE"입니다.

"LIST" 청크에는 데이터 필드의 처음 4바이트에 추가 필드도 포함됩니다. 이 추가 필드에는 필드의 목록 형식 이 포함됩니다. 목록 유형은 목록의 내용을 식별하는 4자 코드입니다. 예를 들어 목록 유형이 "INFO"인 "LIST" 청크에는 저작권 및 생성 날짜 정보를 제공하는 "ICOP" 및 "ICRD" 청크가 포함될 수 있습니다. 다음 그림에서는 "LIST" 청크와 다른 하나의 하위 펑크를 포함하는 "RIFF" 청크를 보여 줍니다("LIST" 청크에는 두 개의 하위 펑크가 포함됨).

riff chunk that contains a list chunk image

멀티미디어 파일 I/O 서비스에는 RIFF 파일의 청크 간에 탐색하는 데 사용할 수 있는 두 가지 함수인 mmioAscendmmioDescend가 포함됩니다. 이러한 함수를 상위 수준 검색 함수로 사용할 수 있습니다. 청크로 내려갈 때 파일 위치는 청크의 데이터 필드(청크의 시작 부분에서 8바이트)로 설정됩니다. "RIFF" 및 "LIST" 청크의 경우 파일 위치는 양식 유형 또는 목록 형식(청크 시작부터 12바이트)에 따라 위치로 설정됩니다. 청크 밖으로 오름차순으로 이동하면 파일 위치가 청크의 끝 뒤에 있는 위치로 설정됩니다.

새 청크를 만들려면 mmioCreateChunk 함수를 사용하여 열려 있는 파일의 현재 위치에 청크 헤더를 작성합니다. mmioAscend, mmioDescendmmioCreateChunk 함수는 MMCKINFO 구조를 사용하여 "RIFF" 청크에 대한 정보를 지정하고 검색합니다.