mirror of
https://github.com/androidx/media.git
synced 2025-05-17 04:29:55 +08:00
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
This commit is contained in:
parent
a5ee17ec26
commit
54413c26d4
@ -24,7 +24,7 @@ track 0:
|
|||||||
selectionFlags = 0
|
selectionFlags = 0
|
||||||
language = null
|
language = null
|
||||||
drmInitData = -
|
drmInitData = -
|
||||||
metadata = entries=[]
|
metadata = null
|
||||||
initializationData:
|
initializationData:
|
||||||
total output bytes = 526272
|
total output bytes = 526272
|
||||||
sample count = 33
|
sample count = 33
|
||||||
|
@ -24,7 +24,7 @@ track 0:
|
|||||||
selectionFlags = 0
|
selectionFlags = 0
|
||||||
language = null
|
language = null
|
||||||
drmInitData = -
|
drmInitData = -
|
||||||
metadata = entries=[]
|
metadata = null
|
||||||
initializationData:
|
initializationData:
|
||||||
total output bytes = 362432
|
total output bytes = 362432
|
||||||
sample count = 23
|
sample count = 23
|
||||||
|
@ -24,7 +24,7 @@ track 0:
|
|||||||
selectionFlags = 0
|
selectionFlags = 0
|
||||||
language = null
|
language = null
|
||||||
drmInitData = -
|
drmInitData = -
|
||||||
metadata = entries=[]
|
metadata = null
|
||||||
initializationData:
|
initializationData:
|
||||||
total output bytes = 182208
|
total output bytes = 182208
|
||||||
sample count = 12
|
sample count = 12
|
||||||
|
@ -24,7 +24,7 @@ track 0:
|
|||||||
selectionFlags = 0
|
selectionFlags = 0
|
||||||
language = null
|
language = null
|
||||||
drmInitData = -
|
drmInitData = -
|
||||||
metadata = entries=[]
|
metadata = null
|
||||||
initializationData:
|
initializationData:
|
||||||
total output bytes = 18368
|
total output bytes = 18368
|
||||||
sample count = 2
|
sample count = 2
|
||||||
|
@ -212,6 +212,7 @@ public final class FlacExtractor implements Extractor {
|
|||||||
input.getLength(),
|
input.getLength(),
|
||||||
extractorOutput,
|
extractorOutput,
|
||||||
outputFrameHolder);
|
outputFrameHolder);
|
||||||
|
@Nullable
|
||||||
Metadata metadata = streamMetadata.getMetadataCopyWithAppendedEntriesFrom(id3Metadata);
|
Metadata metadata = streamMetadata.getMetadataCopyWithAppendedEntriesFrom(id3Metadata);
|
||||||
outputFormat(streamMetadata, metadata, trackOutput);
|
outputFormat(streamMetadata, metadata, trackOutput);
|
||||||
}
|
}
|
||||||
|
@ -81,7 +81,8 @@ public final class FlacMetadataReader {
|
|||||||
throws IOException, InterruptedException {
|
throws IOException, InterruptedException {
|
||||||
@Nullable
|
@Nullable
|
||||||
Id3Decoder.FramePredicate id3FramePredicate = parseData ? null : Id3Decoder.NO_FRAMES_PREDICATE;
|
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. */
|
/** Total number of samples, or 0 if the value is unknown. */
|
||||||
public final long totalSamples;
|
public final long totalSamples;
|
||||||
|
|
||||||
/** Content metadata. */
|
/** Content metadata, or {@code null} if it is not provided. */
|
||||||
private final Metadata metadata;
|
@Nullable private final Metadata metadata;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses binary FLAC stream info metadata.
|
* Parses binary FLAC stream info metadata.
|
||||||
@ -102,7 +102,7 @@ public final class FlacStreamMetadata {
|
|||||||
bitsPerSample = scratch.readBits(5) + 1;
|
bitsPerSample = scratch.readBits(5) + 1;
|
||||||
bitsPerSampleLookupKey = getBitsPerSampleLookupKey(bitsPerSample);
|
bitsPerSampleLookupKey = getBitsPerSampleLookupKey(bitsPerSample);
|
||||||
totalSamples = scratch.readBitsToLong(36);
|
totalSamples = scratch.readBitsToLong(36);
|
||||||
metadata = new Metadata();
|
metadata = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Used in native code.
|
// Used in native code.
|
||||||
@ -138,7 +138,7 @@ public final class FlacStreamMetadata {
|
|||||||
int channels,
|
int channels,
|
||||||
int bitsPerSample,
|
int bitsPerSample,
|
||||||
long totalSamples,
|
long totalSamples,
|
||||||
Metadata metadata) {
|
@Nullable Metadata metadata) {
|
||||||
this.minBlockSizeSamples = minBlockSizeSamples;
|
this.minBlockSizeSamples = minBlockSizeSamples;
|
||||||
this.maxBlockSizeSamples = maxBlockSizeSamples;
|
this.maxBlockSizeSamples = maxBlockSizeSamples;
|
||||||
this.minFrameSize = minFrameSize;
|
this.minFrameSize = minFrameSize;
|
||||||
@ -213,7 +213,7 @@ public final class FlacStreamMetadata {
|
|||||||
// Set the last metadata block flag, ignore the other blocks.
|
// Set the last metadata block flag, ignore the other blocks.
|
||||||
streamMarkerAndInfoBlock[4] = (byte) 0x80;
|
streamMarkerAndInfoBlock[4] = (byte) 0x80;
|
||||||
int maxInputSize = maxFrameSize > 0 ? maxFrameSize : Format.NO_VALUE;
|
int maxInputSize = maxFrameSize > 0 ? maxFrameSize : Format.NO_VALUE;
|
||||||
Metadata metadataWithId3 = metadata.copyWithAppendedEntriesFrom(id3Metadata);
|
@Nullable Metadata metadataWithId3 = getMetadataCopyWithAppendedEntriesFrom(id3Metadata);
|
||||||
|
|
||||||
return Format.createAudioSampleFormat(
|
return Format.createAudioSampleFormat(
|
||||||
/* id= */ null,
|
/* id= */ null,
|
||||||
@ -234,14 +234,16 @@ public final class FlacStreamMetadata {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Returns a copy of the content metadata with entries from {@code other} appended. */
|
/** Returns a copy of the content metadata with entries from {@code other} appended. */
|
||||||
|
@Nullable
|
||||||
public Metadata getMetadataCopyWithAppendedEntriesFrom(@Nullable Metadata other) {
|
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. */
|
/** Returns a copy of {@code this} with the given Vorbis comments added to the metadata. */
|
||||||
public FlacStreamMetadata copyWithVorbisComments(List<String> vorbisComments) {
|
public FlacStreamMetadata copyWithVorbisComments(List<String> vorbisComments) {
|
||||||
|
@Nullable
|
||||||
Metadata appendedMetadata =
|
Metadata appendedMetadata =
|
||||||
metadata.copyWithAppendedEntriesFrom(
|
getMetadataCopyWithAppendedEntriesFrom(
|
||||||
buildMetadata(vorbisComments, Collections.emptyList()));
|
buildMetadata(vorbisComments, Collections.emptyList()));
|
||||||
return new FlacStreamMetadata(
|
return new FlacStreamMetadata(
|
||||||
minBlockSizeSamples,
|
minBlockSizeSamples,
|
||||||
@ -257,8 +259,10 @@ public final class FlacStreamMetadata {
|
|||||||
|
|
||||||
/** Returns a copy of {@code this} with the given picture frames added to the metadata. */
|
/** Returns a copy of {@code this} with the given picture frames added to the metadata. */
|
||||||
public FlacStreamMetadata copyWithPictureFrames(List<PictureFrame> pictureFrames) {
|
public FlacStreamMetadata copyWithPictureFrames(List<PictureFrame> pictureFrames) {
|
||||||
|
@Nullable
|
||||||
Metadata appendedMetadata =
|
Metadata appendedMetadata =
|
||||||
metadata.copyWithAppendedEntriesFrom(buildMetadata(Collections.emptyList(), pictureFrames));
|
getMetadataCopyWithAppendedEntriesFrom(
|
||||||
|
buildMetadata(Collections.emptyList(), pictureFrames));
|
||||||
return new FlacStreamMetadata(
|
return new FlacStreamMetadata(
|
||||||
minBlockSizeSamples,
|
minBlockSizeSamples,
|
||||||
maxBlockSizeSamples,
|
maxBlockSizeSamples,
|
||||||
@ -317,10 +321,11 @@ public final class FlacStreamMetadata {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
private static Metadata buildMetadata(
|
private static Metadata buildMetadata(
|
||||||
List<String> vorbisComments, List<PictureFrame> pictureFrames) {
|
List<String> vorbisComments, List<PictureFrame> pictureFrames) {
|
||||||
if (vorbisComments.isEmpty() && pictureFrames.isEmpty()) {
|
if (vorbisComments.isEmpty() && pictureFrames.isEmpty()) {
|
||||||
return new Metadata();
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
ArrayList<Metadata.Entry> metadataEntries = new ArrayList<>();
|
ArrayList<Metadata.Entry> metadataEntries = new ArrayList<>();
|
||||||
@ -336,6 +341,6 @@ public final class FlacStreamMetadata {
|
|||||||
}
|
}
|
||||||
metadataEntries.addAll(pictureFrames);
|
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
|
selectionFlags = 0
|
||||||
language = null
|
language = null
|
||||||
drmInitData = -
|
drmInitData = -
|
||||||
metadata = entries=[]
|
metadata = null
|
||||||
initializationData:
|
initializationData:
|
||||||
data = length 42, hash 83F6895
|
data = length 42, hash 83F6895
|
||||||
total output bytes = 164431
|
total output bytes = 164431
|
||||||
|
@ -24,7 +24,7 @@ track 0:
|
|||||||
selectionFlags = 0
|
selectionFlags = 0
|
||||||
language = null
|
language = null
|
||||||
drmInitData = -
|
drmInitData = -
|
||||||
metadata = entries=[]
|
metadata = null
|
||||||
initializationData:
|
initializationData:
|
||||||
data = length 42, hash 9218FDB7
|
data = length 42, hash 9218FDB7
|
||||||
total output bytes = 164431
|
total output bytes = 164431
|
||||||
|
@ -24,7 +24,7 @@ track 0:
|
|||||||
selectionFlags = 0
|
selectionFlags = 0
|
||||||
language = null
|
language = null
|
||||||
drmInitData = -
|
drmInitData = -
|
||||||
metadata = entries=[]
|
metadata = null
|
||||||
initializationData:
|
initializationData:
|
||||||
data = length 42, hash 49FA2C21
|
data = length 42, hash 49FA2C21
|
||||||
total output bytes = 164431
|
total output bytes = 164431
|
||||||
|
@ -24,7 +24,7 @@ track 0:
|
|||||||
selectionFlags = 0
|
selectionFlags = 0
|
||||||
language = null
|
language = null
|
||||||
drmInitData = -
|
drmInitData = -
|
||||||
metadata = entries=[]
|
metadata = null
|
||||||
initializationData:
|
initializationData:
|
||||||
data = length 42, hash 83F6895
|
data = length 42, hash 83F6895
|
||||||
total output bytes = 164431
|
total output bytes = 164431
|
||||||
|
@ -24,7 +24,7 @@ track 0:
|
|||||||
selectionFlags = 0
|
selectionFlags = 0
|
||||||
language = null
|
language = null
|
||||||
drmInitData = -
|
drmInitData = -
|
||||||
metadata = entries=[]
|
metadata = null
|
||||||
initializationData:
|
initializationData:
|
||||||
data = length 42, hash 7249A1B8
|
data = length 42, hash 7249A1B8
|
||||||
total output bytes = 144086
|
total output bytes = 144086
|
||||||
|
@ -24,7 +24,7 @@ track 0:
|
|||||||
selectionFlags = 0
|
selectionFlags = 0
|
||||||
language = null
|
language = null
|
||||||
drmInitData = -
|
drmInitData = -
|
||||||
metadata = entries=[]
|
metadata = null
|
||||||
initializationData:
|
initializationData:
|
||||||
data = length 42, hash 83F6895
|
data = length 42, hash 83F6895
|
||||||
total output bytes = 164431
|
total output bytes = 164431
|
||||||
|
@ -24,7 +24,7 @@ track 0:
|
|||||||
selectionFlags = 0
|
selectionFlags = 0
|
||||||
language = null
|
language = null
|
||||||
drmInitData = -
|
drmInitData = -
|
||||||
metadata = entries=[]
|
metadata = null
|
||||||
initializationData:
|
initializationData:
|
||||||
data = length 42, hash 83F6895
|
data = length 42, hash 83F6895
|
||||||
total output bytes = 164431
|
total output bytes = 164431
|
||||||
|
@ -24,7 +24,7 @@ track 0:
|
|||||||
selectionFlags = 0
|
selectionFlags = 0
|
||||||
language = null
|
language = null
|
||||||
drmInitData = -
|
drmInitData = -
|
||||||
metadata = entries=[]
|
metadata = null
|
||||||
initializationData:
|
initializationData:
|
||||||
data = length 42, hash 83F6895
|
data = length 42, hash 83F6895
|
||||||
total output bytes = 113666
|
total output bytes = 113666
|
||||||
|
@ -24,7 +24,7 @@ track 0:
|
|||||||
selectionFlags = 0
|
selectionFlags = 0
|
||||||
language = null
|
language = null
|
||||||
drmInitData = -
|
drmInitData = -
|
||||||
metadata = entries=[]
|
metadata = null
|
||||||
initializationData:
|
initializationData:
|
||||||
data = length 42, hash 83F6895
|
data = length 42, hash 83F6895
|
||||||
total output bytes = 55652
|
total output bytes = 55652
|
||||||
|
@ -24,7 +24,7 @@ track 0:
|
|||||||
selectionFlags = 0
|
selectionFlags = 0
|
||||||
language = null
|
language = null
|
||||||
drmInitData = -
|
drmInitData = -
|
||||||
metadata = entries=[]
|
metadata = null
|
||||||
initializationData:
|
initializationData:
|
||||||
data = length 42, hash 83F6895
|
data = length 42, hash 83F6895
|
||||||
total output bytes = 445
|
total output bytes = 445
|
||||||
|
@ -24,7 +24,7 @@ track 0:
|
|||||||
selectionFlags = 0
|
selectionFlags = 0
|
||||||
language = null
|
language = null
|
||||||
drmInitData = -
|
drmInitData = -
|
||||||
metadata = entries=[]
|
metadata = null
|
||||||
initializationData:
|
initializationData:
|
||||||
data = length 42, hash 83F6895
|
data = length 42, hash 83F6895
|
||||||
total output bytes = 164431
|
total output bytes = 164431
|
||||||
|
@ -24,7 +24,7 @@ track 0:
|
|||||||
selectionFlags = 0
|
selectionFlags = 0
|
||||||
language = null
|
language = null
|
||||||
drmInitData = -
|
drmInitData = -
|
||||||
metadata = entries=[]
|
metadata = null
|
||||||
initializationData:
|
initializationData:
|
||||||
data = length 42, hash 83F6895
|
data = length 42, hash 83F6895
|
||||||
total output bytes = 164431
|
total output bytes = 164431
|
||||||
|
@ -24,7 +24,7 @@ track 0:
|
|||||||
selectionFlags = 0
|
selectionFlags = 0
|
||||||
language = null
|
language = null
|
||||||
drmInitData = -
|
drmInitData = -
|
||||||
metadata = entries=[]
|
metadata = null
|
||||||
initializationData:
|
initializationData:
|
||||||
data = length 42, hash 83F6895
|
data = length 42, hash 83F6895
|
||||||
total output bytes = 113666
|
total output bytes = 113666
|
||||||
|
@ -24,7 +24,7 @@ track 0:
|
|||||||
selectionFlags = 0
|
selectionFlags = 0
|
||||||
language = null
|
language = null
|
||||||
drmInitData = -
|
drmInitData = -
|
||||||
metadata = entries=[]
|
metadata = null
|
||||||
initializationData:
|
initializationData:
|
||||||
data = length 42, hash 83F6895
|
data = length 42, hash 83F6895
|
||||||
total output bytes = 55652
|
total output bytes = 55652
|
||||||
|
@ -24,7 +24,7 @@ track 0:
|
|||||||
selectionFlags = 0
|
selectionFlags = 0
|
||||||
language = null
|
language = null
|
||||||
drmInitData = -
|
drmInitData = -
|
||||||
metadata = entries=[]
|
metadata = null
|
||||||
initializationData:
|
initializationData:
|
||||||
data = length 42, hash 83F6895
|
data = length 42, hash 83F6895
|
||||||
total output bytes = 445
|
total output bytes = 445
|
||||||
|
@ -24,7 +24,7 @@ track 0:
|
|||||||
selectionFlags = 0
|
selectionFlags = 0
|
||||||
language = null
|
language = null
|
||||||
drmInitData = -
|
drmInitData = -
|
||||||
metadata = entries=[]
|
metadata = null
|
||||||
initializationData:
|
initializationData:
|
||||||
data = length 42, hash 83F6895
|
data = length 42, hash 83F6895
|
||||||
total output bytes = 164431
|
total output bytes = 164431
|
||||||
|
@ -75,7 +75,7 @@ public final class FlacStreamMetadataTest {
|
|||||||
/* pictureFrames= */ new ArrayList<>())
|
/* pictureFrames= */ new ArrayList<>())
|
||||||
.getMetadataCopyWithAppendedEntriesFrom(/* other= */ null);
|
.getMetadataCopyWithAppendedEntriesFrom(/* other= */ null);
|
||||||
|
|
||||||
assertThat(metadata.length()).isEqualTo(0);
|
assertThat(metadata).isNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Loading…
x
Reference in New Issue
Block a user