WAVE-hul Module

1 Introduction

The WAVE-hul module recognizes and validates the Audio for Windows format (WAVE) [WAVE, WAVEFORMAT]. WAVE is a variant of the Microsoft RIFF format [RIFF], which is itself an implementation of the Electronic Arts IFF 85 format [IFF].

The module can be invoked with the following command-line option:

  jhove ... -m WAVE-hul ...

2 Coverage

The WAVE-hul module recognizes and validates the following public profiles:

3 Well-Formedness

The following criteria must be met by a WAVE object for JHOVE to consider it well-formed:

4 Validity

The following criteria must be met by a WAVE file for JHOVE to consider it valid:

5 Representation Information

The base MIME type is reported as audio/vnd.wave, but may be extended with a codec parameter as described in RFC 2361 [RFC 2361].

In addition to the standard JHOVE representation information, the following WAVE-specific properties are reported:

The WAVE module recognizes the following chunks:

ID Name Notes References
adtl Associated Data List Only in LIST chunks.
bext Broadcast Audio Extension [BWF]
cue Cue Points
data Data Required.
ds64 Data Size 64 Required for RF64 files. [RF64]
exif Exif List Only in LIST chunks.
fact Fact Required for non-PCM data.
fmt Format Required.
INFO Info List Only in LIST chunks.
inst Instrument
labl Label
levl Peak Envelope [BWF Supp 3]
link Link [BWF Supp 4]
LIST List
list Associated Data List
ltxt Labeled Text Only in list and adtl chunks.
mext MPEG Audio Extension [BWF Supp 1]
note Note
smpl Sample

The WAVE module reports audio properties using the draft standard AES-X098B, Core audio metadata XML definition, developed by the Audio Engineering Society (AES) SC-03-06 Working Group on Digital Library and Archive Systems.

5.1 Profiles

WAVE is a format for uncompressed or compressed sampled audio. The format is defined informally by references to various Microsoft API data structures:

The baseline fmt chunk is defined by the WAVEFORMAT structure with a length of 14 bytes:

  WORD  wFormatTag
  WORD  nChannels
  DWORD nSamplesPerSec
  DWORD nAvgBytesPerSec
  WORD  nBlockAlign

Where WORD indicates a 16-bit unsigned integer and DWORD indicates a 32-bit unsigned integer.

The specific form of the sampled data is specified by the fmt chunk's wFormatTag field. For a list of registered wFormatTag values, see RFC 2361 [RFC 2361].

PCMWAVEFORMAT

This is an extension to the WAVEFORMAT profile in which the fmt chunk is defined by the PCMWAVEFORMAT structure with a length of 16 bytes [PCMWAVEFORMAT]:

  WAVEFORMAT
  WORD  wBitsPerSample

Profile requirements include:

WAVEFORMATEX

This is an extension to the PCMWAVEFORMAT profile supporting both PCM and non-PCM audio formats [WAVEFORMATEX]. The fmt chunk is defined by the WAVEFORMATEX structure with a length ≥ 18 bytes:

  PCMWAVEFORMAT
  WORD  cbSize

Profile requirements include:

WAVEFORMATEXTENSIBLE

This is the most recent version of the Microsoft WAVE format for audio sample data with greater than two channels or 16-bit sampling [WAVEFORMATEXTENSIBLE]. The fmt chunk is defined by the WAVEFORMATEXTENSIBLE structure with a length ≥ 40 bytes:

  WAVEFORMATEX
  UNION samples   {
    WORD  wValidBitsPerSample
    WORD  wSamplesPerBlock
    WORD  wReserved
  }
  DWORD dwChannelMask
  GUID  subFormat {
    DWORD f1
    WORD  f2
    WORD  f3
    CHAR  f4[8]
  }

Where UNION is a C-style union structure and CHAR is an 8-bit unsigned integer.

Profile requirements include:

BWF

Broadcast Wave Format is an extension of the WAVEFORMATEX profile, defined by the European Broadcast Union (EBU) as EBU Technical Specification 3285 and its supplements [BWF, BWF Supp 1, BWF Supp 2, BWF Supp 3, BWF Supp 4, BWF Supp 5, BWF Supp 6].

Profile requirements include:

RF64

The RF64 format was defined by the European Broadcast Union (EBU) in EBU Technical Specification 3306 to allow WAVE format files and chunks to exceed 4 gigabytes in size [RF64].

Profile requirements include:

6 Additional Module Properties