Fix MOV with pcm_alaw/pcm_mulaw which is fixedSampleSize

This commit is contained in:
xufuji456 2020-10-19 20:49:29 +08:00
parent a3a5760757
commit af4028f30e

View File

@ -386,7 +386,9 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
// Fixed sample size raw audio may need to be rechunked. // Fixed sample size raw audio may need to be rechunked.
boolean isFixedSampleSizeRawAudio = boolean isFixedSampleSizeRawAudio =
sampleSizeBox.isFixedSampleSize() sampleSizeBox.isFixedSampleSize()
&& MimeTypes.AUDIO_RAW.equals(track.format.sampleMimeType) && (MimeTypes.AUDIO_RAW.equals(track.format.sampleMimeType)
|| MimeTypes.AUDIO_MLAW.equals(track.format.sampleMimeType)
|| MimeTypes.AUDIO_ALAW.equals(track.format.sampleMimeType))
&& remainingTimestampDeltaChanges == 0 && remainingTimestampDeltaChanges == 0
&& remainingTimestampOffsetChanges == 0 && remainingTimestampOffsetChanges == 0
&& remainingSynchronizationSamples == 0; && remainingSynchronizationSamples == 0;
@ -406,8 +408,14 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
chunkOffsetsBytes[chunkIterator.index] = chunkIterator.offset; chunkOffsetsBytes[chunkIterator.index] = chunkIterator.offset;
chunkSampleCounts[chunkIterator.index] = chunkIterator.numSamples; chunkSampleCounts[chunkIterator.index] = chunkIterator.numSamples;
} }
int fixedSampleSize = int fixedSampleSize;
if (MimeTypes.AUDIO_MLAW.equals(track.format.sampleMimeType)
|| MimeTypes.AUDIO_ALAW.equals(track.format.sampleMimeType)) {
fixedSampleSize = sampleSizeBox.isFixedSampleSize() ? sampleSizeBox.readNextSampleSize() : 1;
} else {
fixedSampleSize =
Util.getPcmFrameSize(track.format.pcmEncoding, track.format.channelCount); Util.getPcmFrameSize(track.format.pcmEncoding, track.format.channelCount);
}
FixedSampleSizeRechunker.Results rechunkedResults = FixedSampleSizeRechunker.Results rechunkedResults =
FixedSampleSizeRechunker.rechunk( FixedSampleSizeRechunker.rechunk(
fixedSampleSize, chunkOffsetsBytes, chunkSampleCounts, timestampDeltaInTimeUnits); fixedSampleSize, chunkOffsetsBytes, chunkSampleCounts, timestampDeltaInTimeUnits);