Commit 54413c26 by kimvde Committed by Oliver Woodman

Make metadata field nullable in FlacStreamMetadata

This makes the format metadata null (instead of an empty Metadata
object) when it is not provided, and is therefore consistent with the
other extractors behavior.

PiperOrigin-RevId: 284171148
parent a5ee17ec
Showing with 39 additions and 32 deletions
......@@ -24,7 +24,7 @@ track 0:
selectionFlags = 0
language = null
drmInitData = -
metadata = entries=[]
metadata = null
initializationData:
total output bytes = 526272
sample count = 33
......
......@@ -24,7 +24,7 @@ track 0:
selectionFlags = 0
language = null
drmInitData = -
metadata = entries=[]
metadata = null
initializationData:
total output bytes = 362432
sample count = 23
......
......@@ -24,7 +24,7 @@ track 0:
selectionFlags = 0
language = null
drmInitData = -
metadata = entries=[]
metadata = null
initializationData:
total output bytes = 182208
sample count = 12
......
......@@ -24,7 +24,7 @@ track 0:
selectionFlags = 0
language = null
drmInitData = -
metadata = entries=[]
metadata = null
initializationData:
total output bytes = 18368
sample count = 2
......
......@@ -212,6 +212,7 @@ public final class FlacExtractor implements Extractor {
input.getLength(),
extractorOutput,
outputFrameHolder);
@Nullable
Metadata metadata = streamMetadata.getMetadataCopyWithAppendedEntriesFrom(id3Metadata);
outputFormat(streamMetadata, metadata, trackOutput);
}
......
......@@ -81,7 +81,8 @@ public final class FlacMetadataReader {
throws IOException, InterruptedException {
@Nullable
Id3Decoder.FramePredicate id3FramePredicate = parseData ? null : Id3Decoder.NO_FRAMES_PREDICATE;
return new Id3Peeker().peekId3Data(input, id3FramePredicate);
@Nullable Metadata id3Metadata = new Id3Peeker().peekId3Data(input, id3FramePredicate);
return id3Metadata == null || id3Metadata.length() == 0 ? null : id3Metadata;
}
/**
......
......@@ -80,8 +80,8 @@ public final class FlacStreamMetadata {
/** Total number of samples, or 0 if the value is unknown. */
public final long totalSamples;
/** Content metadata. */
private final Metadata metadata;
/** Content metadata, or {@code null} if it is not provided. */
@Nullable private final Metadata metadata;
/**
* Parses binary FLAC stream info metadata.
......@@ -102,7 +102,7 @@ public final class FlacStreamMetadata {
bitsPerSample = scratch.readBits(5) + 1;
bitsPerSampleLookupKey = getBitsPerSampleLookupKey(bitsPerSample);
totalSamples = scratch.readBitsToLong(36);
metadata = new Metadata();
metadata = null;
}
// Used in native code.
......@@ -138,7 +138,7 @@ public final class FlacStreamMetadata {
int channels,
int bitsPerSample,
long totalSamples,
Metadata metadata) {
@Nullable Metadata metadata) {
this.minBlockSizeSamples = minBlockSizeSamples;
this.maxBlockSizeSamples = maxBlockSizeSamples;
this.minFrameSize = minFrameSize;
......@@ -213,7 +213,7 @@ public final class FlacStreamMetadata {
// Set the last metadata block flag, ignore the other blocks.
streamMarkerAndInfoBlock[4] = (byte) 0x80;
int maxInputSize = maxFrameSize > 0 ? maxFrameSize : Format.NO_VALUE;
Metadata metadataWithId3 = metadata.copyWithAppendedEntriesFrom(id3Metadata);
@Nullable Metadata metadataWithId3 = getMetadataCopyWithAppendedEntriesFrom(id3Metadata);
return Format.createAudioSampleFormat(
/* id= */ null,
......@@ -234,14 +234,16 @@ public final class FlacStreamMetadata {
}
/** Returns a copy of the content metadata with entries from {@code other} appended. */
@Nullable
public Metadata getMetadataCopyWithAppendedEntriesFrom(@Nullable Metadata other) {
return metadata.copyWithAppendedEntriesFrom(other);
return metadata == null ? other : metadata.copyWithAppendedEntriesFrom(other);
}
/** Returns a copy of {@code this} with the given Vorbis comments added to the metadata. */
public FlacStreamMetadata copyWithVorbisComments(List<String> vorbisComments) {
@Nullable
Metadata appendedMetadata =
metadata.copyWithAppendedEntriesFrom(
getMetadataCopyWithAppendedEntriesFrom(
buildMetadata(vorbisComments, Collections.emptyList()));
return new FlacStreamMetadata(
minBlockSizeSamples,
......@@ -257,8 +259,10 @@ public final class FlacStreamMetadata {
/** Returns a copy of {@code this} with the given picture frames added to the metadata. */
public FlacStreamMetadata copyWithPictureFrames(List<PictureFrame> pictureFrames) {
@Nullable
Metadata appendedMetadata =
metadata.copyWithAppendedEntriesFrom(buildMetadata(Collections.emptyList(), pictureFrames));
getMetadataCopyWithAppendedEntriesFrom(
buildMetadata(Collections.emptyList(), pictureFrames));
return new FlacStreamMetadata(
minBlockSizeSamples,
maxBlockSizeSamples,
......@@ -317,10 +321,11 @@ public final class FlacStreamMetadata {
}
}
@Nullable
private static Metadata buildMetadata(
List<String> vorbisComments, List<PictureFrame> pictureFrames) {
if (vorbisComments.isEmpty() && pictureFrames.isEmpty()) {
return new Metadata();
return null;
}
ArrayList<Metadata.Entry> metadataEntries = new ArrayList<>();
......@@ -336,6 +341,6 @@ public final class FlacStreamMetadata {
}
metadataEntries.addAll(pictureFrames);
return metadataEntries.isEmpty() ? new Metadata() : new Metadata(metadataEntries);
return metadataEntries.isEmpty() ? null : new Metadata(metadataEntries);
}
}
......@@ -24,7 +24,7 @@ track 0:
selectionFlags = 0
language = null
drmInitData = -
metadata = entries=[]
metadata = null
initializationData:
data = length 42, hash 83F6895
total output bytes = 164431
......
......@@ -24,7 +24,7 @@ track 0:
selectionFlags = 0
language = null
drmInitData = -
metadata = entries=[]
metadata = null
initializationData:
data = length 42, hash 9218FDB7
total output bytes = 164431
......
......@@ -24,7 +24,7 @@ track 0:
selectionFlags = 0
language = null
drmInitData = -
metadata = entries=[]
metadata = null
initializationData:
data = length 42, hash 49FA2C21
total output bytes = 164431
......
......@@ -24,7 +24,7 @@ track 0:
selectionFlags = 0
language = null
drmInitData = -
metadata = entries=[]
metadata = null
initializationData:
data = length 42, hash 83F6895
total output bytes = 164431
......
......@@ -24,7 +24,7 @@ track 0:
selectionFlags = 0
language = null
drmInitData = -
metadata = entries=[]
metadata = null
initializationData:
data = length 42, hash 7249A1B8
total output bytes = 144086
......
......@@ -24,7 +24,7 @@ track 0:
selectionFlags = 0
language = null
drmInitData = -
metadata = entries=[]
metadata = null
initializationData:
data = length 42, hash 83F6895
total output bytes = 164431
......
......@@ -24,7 +24,7 @@ track 0:
selectionFlags = 0
language = null
drmInitData = -
metadata = entries=[]
metadata = null
initializationData:
data = length 42, hash 83F6895
total output bytes = 164431
......
......@@ -24,7 +24,7 @@ track 0:
selectionFlags = 0
language = null
drmInitData = -
metadata = entries=[]
metadata = null
initializationData:
data = length 42, hash 83F6895
total output bytes = 113666
......
......@@ -24,7 +24,7 @@ track 0:
selectionFlags = 0
language = null
drmInitData = -
metadata = entries=[]
metadata = null
initializationData:
data = length 42, hash 83F6895
total output bytes = 55652
......
......@@ -24,7 +24,7 @@ track 0:
selectionFlags = 0
language = null
drmInitData = -
metadata = entries=[]
metadata = null
initializationData:
data = length 42, hash 83F6895
total output bytes = 445
......
......@@ -24,7 +24,7 @@ track 0:
selectionFlags = 0
language = null
drmInitData = -
metadata = entries=[]
metadata = null
initializationData:
data = length 42, hash 83F6895
total output bytes = 164431
......
......@@ -24,7 +24,7 @@ track 0:
selectionFlags = 0
language = null
drmInitData = -
metadata = entries=[]
metadata = null
initializationData:
data = length 42, hash 83F6895
total output bytes = 164431
......
......@@ -24,7 +24,7 @@ track 0:
selectionFlags = 0
language = null
drmInitData = -
metadata = entries=[]
metadata = null
initializationData:
data = length 42, hash 83F6895
total output bytes = 113666
......
......@@ -24,7 +24,7 @@ track 0:
selectionFlags = 0
language = null
drmInitData = -
metadata = entries=[]
metadata = null
initializationData:
data = length 42, hash 83F6895
total output bytes = 55652
......
......@@ -24,7 +24,7 @@ track 0:
selectionFlags = 0
language = null
drmInitData = -
metadata = entries=[]
metadata = null
initializationData:
data = length 42, hash 83F6895
total output bytes = 445
......
......@@ -24,7 +24,7 @@ track 0:
selectionFlags = 0
language = null
drmInitData = -
metadata = entries=[]
metadata = null
initializationData:
data = length 42, hash 83F6895
total output bytes = 164431
......
......@@ -75,7 +75,7 @@ public final class FlacStreamMetadataTest {
/* pictureFrames= */ new ArrayList<>())
.getMetadataCopyWithAppendedEntriesFrom(/* other= */ null);
assertThat(metadata.length()).isEqualTo(0);
assertThat(metadata).isNull();
}
@Test
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment