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

멀티미디어 파일의 기본 형식은 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 청크

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

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

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

목록 청크 이미지를 포함하는 riff 청크

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

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