Class Ac3Util
- java.lang.Object
-
- com.google.android.exoplayer2.audio.Ac3Util
-
public final class Ac3Util extends Object
Utility methods for parsing Dolby TrueHD and (E-)AC-3 syncframes. (E-)AC-3 parsing follows the definition in ETSI TS 102 366 V1.4.1.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Ac3Util.SyncFrameInfo
Holds sample format information as presented by a syncframe header.
-
Field Summary
Fields Modifier and Type Field Description static int
AC3_MAX_RATE_BYTES_PER_SECOND
Maximum rate for an AC-3 audio stream, in bytes per second.static int
E_AC3_MAX_RATE_BYTES_PER_SECOND
Maximum rate for an E-AC-3 audio stream, in bytes per second.static int
TRUEHD_MAX_RATE_BYTES_PER_SECOND
Maximum rate for a TrueHD audio stream, in bytes per second.static int
TRUEHD_RECHUNK_SAMPLE_COUNT
The number of samples to store in each output chunk when rechunking TrueHD streams.static int
TRUEHD_SYNCFRAME_PREFIX_LENGTH
The number of bytes that must be parsed from a TrueHD syncframe to calculate the sample count.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static int
findTrueHdSyncframeOffset(ByteBuffer buffer)
Returns the offset relative to the buffer's position of the start of a TrueHD syncframe, orC.INDEX_UNSET
if no syncframe was found.static Format
parseAc3AnnexFFormat(ParsableByteArray data, String trackId, String language, DrmInitData drmInitData)
Returns the AC-3 format givendata
containing the AC3SpecificBox according to Annex F.static int
parseAc3SyncframeAudioSampleCount(ByteBuffer buffer)
Reads the number of audio samples represented by the given (E-)AC-3 syncframe.static Ac3Util.SyncFrameInfo
parseAc3SyncframeInfo(ParsableBitArray data)
Returns (E-)AC-3 format information givendata
containing a syncframe.static int
parseAc3SyncframeSize(byte[] data)
Returns the size in bytes of the given (E-)AC-3 syncframe.static Format
parseEAc3AnnexFFormat(ParsableByteArray data, String trackId, String language, DrmInitData drmInitData)
Returns the E-AC-3 format givendata
containing the EC3SpecificBox according to Annex F.static int
parseTrueHdSyncframeAudioSampleCount(byte[] syncframe)
Returns the number of audio samples represented by the given TrueHD syncframe, or 0 if the buffer is not the start of a syncframe.static int
parseTrueHdSyncframeAudioSampleCount(ByteBuffer buffer, int offset)
Reads the number of audio samples represented by a TrueHD syncframe.
-
-
-
Field Detail
-
AC3_MAX_RATE_BYTES_PER_SECOND
public static final int AC3_MAX_RATE_BYTES_PER_SECOND
Maximum rate for an AC-3 audio stream, in bytes per second.- See Also:
- Constant Field Values
-
E_AC3_MAX_RATE_BYTES_PER_SECOND
public static final int E_AC3_MAX_RATE_BYTES_PER_SECOND
Maximum rate for an E-AC-3 audio stream, in bytes per second.- See Also:
- Constant Field Values
-
TRUEHD_MAX_RATE_BYTES_PER_SECOND
public static final int TRUEHD_MAX_RATE_BYTES_PER_SECOND
Maximum rate for a TrueHD audio stream, in bytes per second.- See Also:
- Constant Field Values
-
TRUEHD_RECHUNK_SAMPLE_COUNT
public static final int TRUEHD_RECHUNK_SAMPLE_COUNT
The number of samples to store in each output chunk when rechunking TrueHD streams. The number of samples extracted from the container corresponding to one syncframe must be an integer multiple of this value.- See Also:
- Constant Field Values
-
TRUEHD_SYNCFRAME_PREFIX_LENGTH
public static final int TRUEHD_SYNCFRAME_PREFIX_LENGTH
The number of bytes that must be parsed from a TrueHD syncframe to calculate the sample count.- See Also:
- Constant Field Values
-
-
Method Detail
-
parseAc3AnnexFFormat
public static Format parseAc3AnnexFFormat(ParsableByteArray data, String trackId, String language, @Nullable DrmInitData drmInitData)
Returns the AC-3 format givendata
containing the AC3SpecificBox according to Annex F. The reading position ofdata
will be modified.- Parameters:
data
- The AC3SpecificBox to parse.trackId
- The track identifier to set on the format.language
- The language to set on the format.drmInitData
-DrmInitData
to be included in the format.- Returns:
- The AC-3 format parsed from data in the header.
-
parseEAc3AnnexFFormat
public static Format parseEAc3AnnexFFormat(ParsableByteArray data, String trackId, String language, @Nullable DrmInitData drmInitData)
Returns the E-AC-3 format givendata
containing the EC3SpecificBox according to Annex F. The reading position ofdata
will be modified.- Parameters:
data
- The EC3SpecificBox to parse.trackId
- The track identifier to set on the format.language
- The language to set on the format.drmInitData
-DrmInitData
to be included in the format.- Returns:
- The E-AC-3 format parsed from data in the header.
-
parseAc3SyncframeInfo
public static Ac3Util.SyncFrameInfo parseAc3SyncframeInfo(ParsableBitArray data)
Returns (E-)AC-3 format information givendata
containing a syncframe. The reading position ofdata
will be modified.- Parameters:
data
- The data to parse, positioned at the start of the syncframe.- Returns:
- The (E-)AC-3 format data parsed from the header.
-
parseAc3SyncframeSize
public static int parseAc3SyncframeSize(byte[] data)
Returns the size in bytes of the given (E-)AC-3 syncframe.- Parameters:
data
- The syncframe to parse.- Returns:
- The syncframe size in bytes.
C.LENGTH_UNSET
if the input is invalid.
-
parseAc3SyncframeAudioSampleCount
public static int parseAc3SyncframeAudioSampleCount(ByteBuffer buffer)
Reads the number of audio samples represented by the given (E-)AC-3 syncframe. The buffer's position is not modified.- Parameters:
buffer
- TheByteBuffer
from which to read the syncframe.- Returns:
- The number of audio samples represented by the syncframe.
-
findTrueHdSyncframeOffset
public static int findTrueHdSyncframeOffset(ByteBuffer buffer)
Returns the offset relative to the buffer's position of the start of a TrueHD syncframe, orC.INDEX_UNSET
if no syncframe was found. The buffer's position is not modified.- Parameters:
buffer
- TheByteBuffer
within which to find a syncframe.- Returns:
- The offset relative to the buffer's position of the start of a TrueHD syncframe, or
C.INDEX_UNSET
if no syncframe was found.
-
parseTrueHdSyncframeAudioSampleCount
public static int parseTrueHdSyncframeAudioSampleCount(byte[] syncframe)
Returns the number of audio samples represented by the given TrueHD syncframe, or 0 if the buffer is not the start of a syncframe.- Parameters:
syncframe
- The bytes from which to read the syncframe. Must be at leastTRUEHD_SYNCFRAME_PREFIX_LENGTH
bytes long.- Returns:
- The number of audio samples represented by the syncframe, or 0 if the buffer doesn't contain the start of a syncframe.
-
parseTrueHdSyncframeAudioSampleCount
public static int parseTrueHdSyncframeAudioSampleCount(ByteBuffer buffer, int offset)
Reads the number of audio samples represented by a TrueHD syncframe. The buffer's position is not modified.- Parameters:
buffer
- TheByteBuffer
from which to read the syncframe.offset
- The offset of the start of the syncframe relative to the buffer's position.- Returns:
- The number of audio samples represented by the syncframe.
-
-