DirectShow 보유 AVI 파일 포맷 AVI 파일 포맷의 DV 데이터   [목차열람] [주소복사] [슬롯비우기]
AVI 파일 포맷의 DV 데이터
 
Microsoft DirectX 9.0

AVI 파일 포맷의 DV 데이터

Microsoft 는 디지털 비디오 (DV) 데이터를 AVI 파일에 보존하기 위한 포맷을 지정하고 있다. 이 사양에 따르는 것으로, 이 포맷으로 생성 된 AVI 파일은 Microsoft® Windows® 플랫폼용의 Microsoft® DirectShow® 디지털 비디오 아키텍처의 장래의 버전에 대해서 호환성을 가지는 것이 보증된다.

여기에서는, DV 데이터를 포함한 AVI 파일의 포맷에 대해서도 설명한다. 인터리브 된 DV 데이터 스트림 및 DV 압력/디컴프레서스트림한드라용의 특정의 FOURCC (4 문자 코드)를 정의해, DV 데이터의 스트림 포맷 구조체를 정의한다. 또, AVI 파일 포맷에 DV 데이터를 저장하기 위한 2 개의 방법의 사양에 대해서도 설명한다.

이 주제는, 독자가 DV 데이터 포맷에 대해 어느 정도 이해하고 있는 것을 전제로 해서 쓰여져 있다. 이 포맷에 대해서는, 「Specification of Consumer-use Digital VCRs」(Blue Book 라고도 부른다)에 정의되고 있다.

DV AVI 파일에는 다음의 2 개의 타입이 있다. 1 개의 DV 데이터 스트림을 포함한 AVI 파일 (type-1 로 불리는 파일)과 DV 비디오를 'vids'스트림으로서 포함해, DV 오디오를 'auds'스트림으로서 포함한 AVI 파일 (type-2 로 불리는 파일)이다.

1 개의 DV 데이터 스트림을 포함한 AVI 파일 (Type-1)

인터리브 된 DV 데이터는, AVI RIFF 파일내에 1 개의 스트림으로서 그 네이티브 포맷으로 저장 할 수 있다. 이 방법에는, DV 에 대해서 사용하는 데이터 저장 영역의 양이 최소한으로 끝난다고 하는 이점이 있다. 주된 결점으로서는, 이 파일 포맷에는 비디오 'vids'스트림도 오디오 'auds'스트림도 포함되지 않기 때문에, Video for Windows 에 대한 하위 호환성을 가지지 않는 것을 들 수 있다. 인터리브 된 DV 스트림의 지원은, DirectShow 의 DV MuxerDV 스플리터 필터에 의해 제공된다.

DV 데이터를 AVI RIFF 파일내에 1 개의 스트림으로서 저장 하려면 , 'strh'스트림헤더 체크의 fccType 멤버에 'iavs' (interleaved audio and video stream) FOURCC (four-character code :4 문자 코드)를 지정해,fccHandler 멤버에 'dvsd', 'dvhd', 'dvsl'의 몇개의 FOURCC 를 지정한다. 비디오 스트림의 매초의 프레임수를 dwRatedwScale 멤버로 지정해, 'movi'체크내의 비디오 블록의 총수를 dwLength 멤버로 지정한다.

'dvsd'스트림 핸들러 FOURCC 는, DV 데이터가 「Specification of Consumer-use Digital VCRs」의 Part 2 에 따르고 있는 것을 지정한다. 비디오의 포맷은 525 라인, 29.97 Hz (525-60)인가, 또는 625 라인, 25.00 Hz (625-50)이다.

'dvhd'스트림 핸들러 FOURCC 는, DV 데이터가 「Specification of Consumer-use Digital VCRs」의 Part 3 에 따르고 있는 것을 지정한다. 비디오의 포맷은 1125 라인, 30.00 Hz (1125-60)인가, 또는 1250 라인, 25.00 Hz (1250-50)이다.

'dvsl'스트림 핸들러 FOURCC 는, DV 데이터가 「Specification of Consumer-use Digital VCRs」의 Part 6 에 따르고 있는 것을 지정한다. 비디오의 포맷은 고압축 SD (SDL)이다.

 :  이 주제의 이후의 부분에서는, 'dvsd'스트림의 정의에 대해 설명한다.

스트림헤더 체크의 뒤에는,DVINFO 스트림포맛트체크가 계속된다.

실제의 DV 데이터는 'movi'체크내의 '##dc'체크로서 저장 된다 (## 는 스트림 식별자). 각 체크에는, 1 프레임의 데이터가 포함된다. 이것은 525-60 시스템의 경우는 10 개의 DV DIF 순서,625-50 시스템의 경우는 12 개의 DV DIF 순서이다. DV SD ('dvsd') DIF 순서 포맷에 대해서는, 「Specification of Consumer-use Digital VCRs」의 Part 2 로 정의되고 있다.

다음 예는 완전한 헤더 체크에 의해 확장된, 1 개의 DV 데이터 스트림을 포함한 AVI 파일의 AIFF RIFF 포맷을 나타낸다.

00000000 RIFF (0FAE35D4) 'AVI '
0000000C     LIST (00000106) 'hdrl'
00000018         avih (00000038)
                     dwMicroSecPerFrame    : 33367
                     dwMaxBytesPerSec      : 3728000
                     dwPaddingGranularity  : 0
                     dwFlags               : 0x810 HASINDEX | TRUSTCKTYPE
                     dwTotalFrames         : 2192
                     dwInitialFrames       : 0
                     dwStreams             : 1
                     dwSuggestedBufferSize : 120000
                     dwWidth               : 720
                     dwHeight              : 480
                     dwReserved            : 0x0
00000058         LIST (0000006C) 'strl'
00000064             strh (00000038)
                         fccType               : 'iavs'
                         fccHandler            : 'dvsd'
                         dwFlags               : 0x0
                         wPriority             : 0
                         wLanguage             : 0x0 undefined
                         dwInitialFrames       : 0
                         dwScale               : 100 (29.970 Frames/Sec)
                         dwRate                : 2997
                         dwStart               : 0
                         dwLength              : 2192
                         dwSuggestedBufferSize : 120000
                         dwQuality             : 0
                         dwSampleSize          : 0
                         rcFrame               : 0,0,720,480
000000A4             strf (00000020)
                         dwDVAAuxSrc     : 0x........
                         dwDVAAuxCtl     : 0x........
                         dwDVAAuxSrc1    : 0x........
                         dwDVAAuxCtl1    : 0x........
                         dwDVVAuxSrc     : 0x........
                         dwDVVAuxCtl     : 0x........
                         dwDVReserved[2] : 0,0
000000CC     LIST (0FADAC00) 'movi'
0FADACD4     idx1 (00008900)

DV 비디오 스트림과 DV 오디오 스트림을 포함한 AVI 파일 (Type-2)

인터리브 된 DV 데이터는, AVI RIFF 파일내에서 1 개의 비디오 스트림과 1 개에서 4 개까지의 오디오 스트림에 분할할 수가 있다. 이 파일 포맷에는 표준 비디오 'vids'스트림과 적어도 1 개의 표준 오디오 'auds'스트림이 포함되기 (위해)때문에, Video for Windows 에 대해서 하위 호환성을 갖는다고 하는 이점이 있다. 주된 결점은, 이 파일 포맷에서는 오디오 데이터를 오디오 스트림으로서 장황하게 저장 해야 하는 것이다. "비디오" 스트림은, 실제로는 네이티브의 인터리브 된 DV 데이터 스트림이다. 다만, 핸들러 타입 'dvsd'의 표준 'vids'스트림으로서DV 비디오 디코더가 사용된다. 또, 이 포맷에서는,"캡춰 된" 파일을 AVI 파일로서 기입하기 전에,DV 스플리터를 사용해 파일을 분할할 필요가 있다.

DV 데이터는, 1 개의 비디오 스트림과 별로 몇개의 오디오 스트림으로서 AVI RIFF 파일에 저장 할 수 있다. 비디오 스트림은 표준 비디오 스트림 헤더 (fccType 멤버값이 'vids')에 의해 지정된다. fccHandler 멤버는 'dvsd', 'dvhd', 또는 'dvsl'로서 지정된다. 비디오 스트림의 매초의 프레임수를 dwRatedwScale 멤버로 지정해, 'movi'체크내의 비디오 블록의 총수를 dwLength 멤버로 지정한다.

이와 같이 DV 비디오를 'vids'스트림으로서 포함해, DV 오디오를 'auds'스트림 포맷의 DV 로서 포함한 AVI 파일에서는, 비데오스트림포맛트체크는 표준의 BITMAPINFOHEADER 구조체이다. 스트림포맛트체크는, 옵션으로 DVINFO 구조체를 포함하도록(듯이) 확장할 수 있다. 그 경우는, 스트림포맛트체크의 사이즈를 40 바이트 (BITMAPINFOHEADER 구조체의 사이즈)에서 72 바이트 (BITMAPINFOHEADERDVINFO 구조체의 사이즈)로 변경해,BITMAPINFOHEADER 데이터 구조체의 직후에 DVINFO 데이터 구조체를 기술한다.

오디오 스트림은 표준 오디오 스트림 헤더 (fccType 멤버값이 'auds')에 의해 지정된다. fccHandler 멤버는, 오디오 스트림에서는 사용하지 않는다.

DV 비디오 데이터는, 전의 「1 개의 DV 데이터 스트림을 포함한 AVI 파일」로 설명했던 대로, '##dc'체크로서 저장 된다. 오디오 데이터는, '##wb'체크로서 'movi'체크에 저장 된다.

다음 예는 완전한 헤더 체크에 의해 확장된, DV 비디오를 'vids'스트림으로서 포함해, DV 오디오를 'auds'스트림으로서 포함한 AVI 파일의 AIFF RIFF 포맷을 나타낸다 ('vids'스트림의 'strf'사브체크에 대해,BITMAPINFO 의 뒤에 옵션으로 DVINFO 데이터가 기술되고 있다).

00000000 RIFF (103E2920) 'AVI '
0000000C     LIST (00000146) 'hdrl'
00000018         avih (00000038)
                     dwMicroSecPerFrame    : 33367
                     dwMaxBytesPerSec      : 3728000
                     dwPaddingGranularity  : 0
                     dwFlags               : 0x810 HASINDEX | TRUSTCKTYPE
                     dwTotalFrames         : 2192
                     dwInitialFrames       : 0
                     dwStreams             : 2
                     dwSuggestedBufferSize : 120000
                     dwWidth               : 720
                     dwHeight              : 480
                     dwReserved            : 0x0
00000058         LIST (00000094) 'strl'
00000064             strh (00000038)
                         fccType               : 'vids'
                         fccHandler            : 'dvsd'
                         dwFlags               : 0x0
                         wPriority             : 0
                         wLanguage             : 0x0 undefined
                         dwInitialFrames       : 0
                         dwScale               : 100 (29.970 Frames/Sec)
                         dwRate                : 2997
                         dwStart               : 0
                         dwLength              : 2192
                         dwSuggestedBufferSize : 120000
                         dwQuality             : 0
                         dwSampleSize          : 0
                         rcFrame               : 0,0,720,480
000000A4             strf (00000048)
                         biSize          : 40
                         biWidth         : 720
                         biHeight        : 480
                         biPlanes        : 1
                         biBitCount      : 24
                         biCompression   : 0x64737664 'dvsd'
                         biSizeImage     : 120000
                         biXPelsPerMeter : 0
                         biYPelsPerMeter : 0
                         biClrUsed       : 0
                         biClrImportant  : 0
                         dwDVAAuxSrc     : 0x........
                         dwDVAAuxCtl     : 0x........
                         dwDVAAuxSrc1    : 0x........
                         dwDVAAuxCtl1    : 0x........
                         dwDVVAuxSrc     : 0x........
                         dwDVVAuxCtl     : 0x........
                         dwDVReserved[2] : 0,0
000000F4         LIST (0000005E) 'strl'
00000100             strh (00000038)
                         fccType               : 'auds'
                         fccHandler            : '    '
                         dwFlags               : 0x0
                         wPriority             : 0
                         wLanguage             : 0x0 undefined
                         dwInitialFrames       : 0
                         dwScale               : 1 (32000.000 Samples/Sec)
                         dwRate                : 32000
                         dwStart               : 0
                         dwLength              : 2340474
                         dwSuggestedBufferSize : 4272
                         dwQuality             : 0
                         dwSampleSize          : 4
                         rcFrame               : 0,0,0,0
00000140             strf (00000012)
                         wFormatTag      : 1 PCM
                         nChannels       : 2
                         nSamplesPerSec  : 32000
                         nAvgBytesPerSec : 128000
                         nBlockAlign     : 4
                         wBitsPerSample  : 16
                         cbSize          : 0
00000814     LIST (103D0EF4) 'movi'
103D1710     idx1 (00011210)

참조

↑TOP