다음을 통해 공유


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

멀티미디어 파일의 기본 형식은 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" 또는 "LIST"인 청크입니다. 다른 청크를 포함하는 청크를 부모 청크라고 합니다. RIFF 파일의 첫 번째 청크는 "RIFF" 청크여야 합니다. 파일의 다른 모든 청크는 "RIFF" 청크의 하위 펑크입니다.

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

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

목록 청크 이미지가 포함된 리프 청크

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

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