Commit d579ccfd by sheenachhabra Committed by tonihei

Remove setLocation() method from Muxer interface

PiperOrigin-RevId: 516314175
parent 44cf5735
...@@ -17,6 +17,7 @@ package com.google.android.exoplayer2.transformer; ...@@ -17,6 +17,7 @@ package com.google.android.exoplayer2.transformer;
import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.metadata.Metadata;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
...@@ -77,11 +78,6 @@ public final class DefaultMuxer implements Muxer { ...@@ -77,11 +78,6 @@ public final class DefaultMuxer implements Muxer {
} }
@Override @Override
public void setLocation(float latitude, float longitude) {
this.muxer.setLocation(latitude, longitude);
}
@Override
public int addTrack(Format format) throws MuxerException { public int addTrack(Format format) throws MuxerException {
return muxer.addTrack(format); return muxer.addTrack(format);
} }
...@@ -94,6 +90,11 @@ public final class DefaultMuxer implements Muxer { ...@@ -94,6 +90,11 @@ public final class DefaultMuxer implements Muxer {
} }
@Override @Override
public void addMetadata(Metadata metadata) {
muxer.addMetadata(metadata);
}
@Override
public void release(boolean forCancellation) throws MuxerException { public void release(boolean forCancellation) throws MuxerException {
muxer.release(forCancellation); muxer.release(forCancellation);
} }
......
...@@ -25,8 +25,11 @@ import android.media.MediaCodec; ...@@ -25,8 +25,11 @@ import android.media.MediaCodec;
import android.media.MediaFormat; import android.media.MediaFormat;
import android.media.MediaMuxer; import android.media.MediaMuxer;
import android.util.SparseLongArray; import android.util.SparseLongArray;
import androidx.annotation.Nullable;
import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.metadata.Metadata;
import com.google.android.exoplayer2.metadata.mp4.Mp4LocationData;
import com.google.android.exoplayer2.util.MediaFormatUtil; import com.google.android.exoplayer2.util.MediaFormatUtil;
import com.google.android.exoplayer2.util.MimeTypes; import com.google.android.exoplayer2.util.MimeTypes;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
...@@ -105,11 +108,6 @@ import java.nio.ByteBuffer; ...@@ -105,11 +108,6 @@ import java.nio.ByteBuffer;
} }
@Override @Override
public void setLocation(float latitude, float longitude) {
mediaMuxer.setLocation(latitude, longitude);
}
@Override
public int addTrack(Format format) throws MuxerException { public int addTrack(Format format) throws MuxerException {
String sampleMimeType = checkNotNull(format.sampleMimeType); String sampleMimeType = checkNotNull(format.sampleMimeType);
MediaFormat mediaFormat; MediaFormat mediaFormat;
...@@ -191,6 +189,14 @@ import java.nio.ByteBuffer; ...@@ -191,6 +189,14 @@ import java.nio.ByteBuffer;
} }
@Override @Override
public void addMetadata(Metadata metadata) {
@Nullable Mp4LocationData mp4LocationData = getMp4LocationData(metadata);
if (mp4LocationData != null) {
mediaMuxer.setLocation(mp4LocationData.latitude, mp4LocationData.longitude);
}
}
@Override
public void release(boolean forCancellation) throws MuxerException { public void release(boolean forCancellation) throws MuxerException {
if (!isStarted) { if (!isStarted) {
mediaMuxer.release(); mediaMuxer.release();
...@@ -261,4 +267,15 @@ import java.nio.ByteBuffer; ...@@ -261,4 +267,15 @@ import java.nio.ByteBuffer;
throw e; throw e;
} }
} }
@Nullable
private static Mp4LocationData getMp4LocationData(Metadata metadata) {
for (int i = 0; i < metadata.length(); i++) {
Metadata.Entry entry = metadata.get(i);
if (entry instanceof Mp4LocationData) {
return (Mp4LocationData) entry;
}
}
return null;
}
} }
...@@ -17,6 +17,7 @@ package com.google.android.exoplayer2.transformer; ...@@ -17,6 +17,7 @@ package com.google.android.exoplayer2.transformer;
import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.metadata.Metadata;
import com.google.android.exoplayer2.util.MimeTypes; import com.google.android.exoplayer2.util.MimeTypes;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
...@@ -64,14 +65,6 @@ public interface Muxer { ...@@ -64,14 +65,6 @@ public interface Muxer {
} }
/** /**
* Sets the location.
*
* @param latitude The latitude, in degrees. Its value must be in the range [-90, 90].
* @param longitude The longitude, in degrees. Its value must be in the range [-180, 180].
*/
void setLocation(float latitude, float longitude);
/**
* Adds a track with the specified format. * Adds a track with the specified format.
* *
* @param format The {@link Format} of the track. * @param format The {@link Format} of the track.
...@@ -94,6 +87,9 @@ public interface Muxer { ...@@ -94,6 +87,9 @@ public interface Muxer {
int trackIndex, ByteBuffer data, long presentationTimeUs, @C.BufferFlags int flags) int trackIndex, ByteBuffer data, long presentationTimeUs, @C.BufferFlags int flags)
throws MuxerException; throws MuxerException;
/** Adds {@link Metadata} about the output file. */
void addMetadata(Metadata metadata);
/** /**
* Finishes writing the output and releases any resources associated with muxing. * Finishes writing the output and releases any resources associated with muxing.
* *
......
...@@ -28,7 +28,6 @@ import androidx.annotation.Nullable; ...@@ -28,7 +28,6 @@ import androidx.annotation.Nullable;
import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.metadata.Metadata; import com.google.android.exoplayer2.metadata.Metadata;
import com.google.android.exoplayer2.metadata.mp4.Mp4LocationData;
import com.google.android.exoplayer2.util.MimeTypes; import com.google.android.exoplayer2.util.MimeTypes;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
...@@ -131,8 +130,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; ...@@ -131,8 +130,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
* and all the formats must be added before any samples can be {@linkplain #writeSample(int, * and all the formats must be added before any samples can be {@linkplain #writeSample(int,
* ByteBuffer, boolean, long) written}. * ByteBuffer, boolean, long) written}.
* *
* <p>If the {@link Format#metadata} contains {@link Mp4LocationData}, then it will be added to * <p>{@link Muxer#addMetadata(Metadata)} is called if the {@link Format#metadata} is present.
* the muxer.
* *
* @param format The {@link Format} to be added. * @param format The {@link Format} to be added.
* @throws IllegalArgumentException If the format is unsupported. * @throws IllegalArgumentException If the format is unsupported.
...@@ -160,15 +158,15 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; ...@@ -160,15 +158,15 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
TrackInfo trackInfo = new TrackInfo(format, muxer.addTrack(format)); TrackInfo trackInfo = new TrackInfo(format, muxer.addTrack(format));
trackTypeToInfo.put(trackType, trackInfo); trackTypeToInfo.put(trackType, trackInfo);
if (format.metadata != null) {
muxer.addMetadata(format.metadata);
}
if (trackTypeToInfo.size() == trackCount) { if (trackTypeToInfo.size() == trackCount) {
isReady = true; isReady = true;
resetAbortTimer(); resetAbortTimer();
} }
@Nullable Mp4LocationData mp4LocationData = extractMp4LocationData(format);
if (mp4LocationData != null) {
muxer.setLocation(mp4LocationData.latitude, mp4LocationData.longitude);
}
} }
/** /**
...@@ -338,21 +336,6 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; ...@@ -338,21 +336,6 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
return trackInfoWithMinTimeUs; return trackInfoWithMinTimeUs;
} }
@Nullable
private static Mp4LocationData extractMp4LocationData(Format format) {
if (format.metadata == null) {
return null;
}
for (int i = 0; i < format.metadata.length(); i++) {
Metadata.Entry entry = format.metadata.get(i);
if (entry instanceof Mp4LocationData) {
return (Mp4LocationData) entry;
}
}
return null;
}
private static final class TrackInfo { private static final class TrackInfo {
public final Format format; public final Format format;
public final int index; public final int index;
......
...@@ -17,6 +17,7 @@ package com.google.android.exoplayer2.transformer; ...@@ -17,6 +17,7 @@ package com.google.android.exoplayer2.transformer;
import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.metadata.Metadata;
import com.google.android.exoplayer2.testutil.DumpableFormat; import com.google.android.exoplayer2.testutil.DumpableFormat;
import com.google.android.exoplayer2.testutil.Dumper; import com.google.android.exoplayer2.testutil.Dumper;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
...@@ -43,11 +44,6 @@ public final class TestMuxer implements Muxer, Dumper.Dumpable { ...@@ -43,11 +44,6 @@ public final class TestMuxer implements Muxer, Dumper.Dumpable {
// Muxer implementation. // Muxer implementation.
@Override @Override
public void setLocation(float latitude, float longitude) {
muxer.setLocation(latitude, longitude);
}
@Override
public int addTrack(Format format) throws MuxerException { public int addTrack(Format format) throws MuxerException {
int trackIndex = muxer.addTrack(format); int trackIndex = muxer.addTrack(format);
dumpables.add(new DumpableFormat(format, trackIndex)); dumpables.add(new DumpableFormat(format, trackIndex));
...@@ -68,6 +64,12 @@ public final class TestMuxer implements Muxer, Dumper.Dumpable { ...@@ -68,6 +64,12 @@ public final class TestMuxer implements Muxer, Dumper.Dumpable {
} }
@Override @Override
public void addMetadata(Metadata metadata) {
dumpables.add(dumper -> dumper.add("metadata", metadata));
muxer.addMetadata(metadata);
}
@Override
public void release(boolean forCancellation) throws MuxerException { public void release(boolean forCancellation) throws MuxerException {
dumpables.add(dumper -> dumper.add("released", true)); dumpables.add(dumper -> dumper.add("released", true));
muxer.release(forCancellation); muxer.release(forCancellation);
......
...@@ -10,12 +10,14 @@ format 0: ...@@ -10,12 +10,14 @@ format 0:
initializationData: initializationData:
data = length 29, hash 4746B5D9 data = length 29, hash 4746B5D9
data = length 10, hash 7A0D0F2B data = length 10, hash 7A0D0F2B
metadata = entries=[xyz: latitude=40.68 longitude=-74.5]
format 1: format 1:
sampleMimeType = audio/mp4a-latm sampleMimeType = audio/mp4a-latm
channelCount = 1 channelCount = 1
sampleRate = 48000 sampleRate = 48000
pcmEncoding = 2 pcmEncoding = 2
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68 longitude=-74.5] metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68 longitude=-74.5]
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68 longitude=-74.5]
sample: sample:
trackIndex = 1 trackIndex = 1
dataHashCode = 1868041800 dataHashCode = 1868041800
......
...@@ -10,6 +10,7 @@ format 0: ...@@ -10,6 +10,7 @@ format 0:
initializationData: initializationData:
data = length 29, hash 4746B5D9 data = length 29, hash 4746B5D9
data = length 10, hash 7A0D0F2B data = length 10, hash 7A0D0F2B
metadata = entries=[xyz: latitude=40.68 longitude=-74.5]
format 1: format 1:
peakBitrate = 200000 peakBitrate = 200000
id = 2 id = 2
...@@ -22,6 +23,7 @@ format 1: ...@@ -22,6 +23,7 @@ format 1:
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68 longitude=-74.5] metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68 longitude=-74.5]
initializationData: initializationData:
data = length 2, hash 5F7 data = length 2, hash 5F7
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68 longitude=-74.5]
sample: sample:
trackIndex = 1 trackIndex = 1
dataHashCode = 1205768497 dataHashCode = 1205768497
......
...@@ -4,6 +4,7 @@ format 0: ...@@ -4,6 +4,7 @@ format 0:
sampleRate = 44100 sampleRate = 44100
pcmEncoding = 2 pcmEncoding = 2
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68 longitude=-74.5] metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68 longitude=-74.5]
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68 longitude=-74.5]
sample: sample:
trackIndex = 0 trackIndex = 0
dataHashCode = 915609509 dataHashCode = 915609509
......
...@@ -10,6 +10,7 @@ format 0: ...@@ -10,6 +10,7 @@ format 0:
initializationData: initializationData:
data = length 29, hash 4746B5D9 data = length 29, hash 4746B5D9
data = length 10, hash 7A0D0F2B data = length 10, hash 7A0D0F2B
metadata = entries=[xyz: latitude=40.68 longitude=-74.5]
format 1: format 1:
peakBitrate = 200000 peakBitrate = 200000
id = 2 id = 2
...@@ -22,6 +23,7 @@ format 1: ...@@ -22,6 +23,7 @@ format 1:
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68 longitude=-74.5] metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68 longitude=-74.5]
initializationData: initializationData:
data = length 2, hash 5F7 data = length 2, hash 5F7
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68 longitude=-74.5]
sample: sample:
trackIndex = 1 trackIndex = 1
dataHashCode = 1205768497 dataHashCode = 1205768497
......
...@@ -10,6 +10,7 @@ format 0: ...@@ -10,6 +10,7 @@ format 0:
initializationData: initializationData:
data = length 29, hash 4746B5D9 data = length 29, hash 4746B5D9
data = length 10, hash 7A0D0F2B data = length 10, hash 7A0D0F2B
metadata = entries=[xyz: latitude=40.68 longitude=-74.5]
sample: sample:
trackIndex = 0 trackIndex = 0
dataHashCode = -770308242 dataHashCode = -770308242
......
...@@ -10,6 +10,7 @@ format 0: ...@@ -10,6 +10,7 @@ format 0:
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68 longitude=-74.5] metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68 longitude=-74.5]
initializationData: initializationData:
data = length 2, hash 5F7 data = length 2, hash 5F7
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68 longitude=-74.5]
sample: sample:
trackIndex = 0 trackIndex = 0
dataHashCode = 1205768497 dataHashCode = 1205768497
......
...@@ -10,6 +10,7 @@ format 0: ...@@ -10,6 +10,7 @@ format 0:
initializationData: initializationData:
data = length 29, hash 4746B5D9 data = length 29, hash 4746B5D9
data = length 10, hash 7A0D0F2B data = length 10, hash 7A0D0F2B
metadata = entries=[xyz: latitude=40.68 longitude=-74.5]
format 1: format 1:
sampleMimeType = audio/mp4a-latm sampleMimeType = audio/mp4a-latm
channelCount = 2 channelCount = 2
......
...@@ -10,6 +10,7 @@ format 0: ...@@ -10,6 +10,7 @@ format 0:
initializationData: initializationData:
data = length 29, hash 4746B5D9 data = length 29, hash 4746B5D9
data = length 10, hash 7A0D0F2B data = length 10, hash 7A0D0F2B
metadata = entries=[xyz: latitude=40.68 longitude=-74.5]
format 1: format 1:
sampleMimeType = audio/mp4a-latm sampleMimeType = audio/mp4a-latm
channelCount = 2 channelCount = 2
......
...@@ -10,6 +10,7 @@ format 0: ...@@ -10,6 +10,7 @@ format 0:
initializationData: initializationData:
data = length 29, hash 4746B5D9 data = length 29, hash 4746B5D9
data = length 10, hash 7A0D0F2B data = length 10, hash 7A0D0F2B
metadata = entries=[xyz: latitude=40.68 longitude=-74.5]
format 1: format 1:
sampleMimeType = audio/mp4a-latm sampleMimeType = audio/mp4a-latm
channelCount = 2 channelCount = 2
......
...@@ -10,12 +10,14 @@ format 0: ...@@ -10,12 +10,14 @@ format 0:
initializationData: initializationData:
data = length 33, hash D3FB879D data = length 33, hash D3FB879D
data = length 10, hash 7A0D0F2B data = length 10, hash 7A0D0F2B
metadata = entries=[mdta: key=com.android.capture.fps, smta: captureFrameRate=240.0, svcTemporalLayerCount=4, SlowMotion: segments=[Segment: startTimeMs=88, endTimeMs=879, speedDivisor=2, Segment: startTimeMs=1255, endTimeMs=1970, speedDivisor=8]]
format 1: format 1:
sampleMimeType = audio/mp4a-latm sampleMimeType = audio/mp4a-latm
channelCount = 2 channelCount = 2
sampleRate = 12000 sampleRate = 12000
pcmEncoding = 2 pcmEncoding = 2
metadata = entries=[smta: captureFrameRate=240.0, svcTemporalLayerCount=4, SlowMotion: segments=[Segment: startTimeMs=88, endTimeMs=879, speedDivisor=2, Segment: startTimeMs=1255, endTimeMs=1970, speedDivisor=8]] metadata = entries=[smta: captureFrameRate=240.0, svcTemporalLayerCount=4, SlowMotion: segments=[Segment: startTimeMs=88, endTimeMs=879, speedDivisor=2, Segment: startTimeMs=1255, endTimeMs=1970, speedDivisor=8]]
metadata = entries=[smta: captureFrameRate=240.0, svcTemporalLayerCount=4, SlowMotion: segments=[Segment: startTimeMs=88, endTimeMs=879, speedDivisor=2, Segment: startTimeMs=1255, endTimeMs=1970, speedDivisor=8]]
sample: sample:
trackIndex = 1 trackIndex = 1
dataHashCode = -212376212 dataHashCode = -212376212
......
...@@ -27,6 +27,7 @@ format 1: ...@@ -27,6 +27,7 @@ format 1:
metadata = entries=[TSSE: description=null: values=[Lavf58.76.100]] metadata = entries=[TSSE: description=null: values=[Lavf58.76.100]]
initializationData: initializationData:
data = length 2, hash 560 data = length 2, hash 560
metadata = entries=[TSSE: description=null: values=[Lavf58.76.100]]
sample: sample:
trackIndex = 1 trackIndex = 1
dataHashCode = 620415738 dataHashCode = 620415738
......
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