Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
d579ccfd
authored
Mar 13, 2023
by
sheenachhabra
Committed by
tonihei
Mar 14, 2023
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Remove setLocation() method from Muxer interface
PiperOrigin-RevId: 516314175
parent
44cf5735
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
60 additions
and
46 deletions
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/DefaultMuxer.java
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/FrameworkMuxer.java
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/Muxer.java
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/MuxerWrapper.java
library/transformer/src/test/java/com/google/android/exoplayer2/transformer/TestMuxer.java
testdata/src/test/assets/transformerdumps/mp4/sample.mp4.48000hz.dump
testdata/src/test/assets/transformerdumps/mp4/sample.mp4.concatenated.dump
testdata/src/test/assets/transformerdumps/mp4/sample.mp4.concatenated_with_high_pitch_and_no_video.dump
testdata/src/test/assets/transformerdumps/mp4/sample.mp4.dump
testdata/src/test/assets/transformerdumps/mp4/sample.mp4.noaudio.dump
testdata/src/test/assets/transformerdumps/mp4/sample.mp4.novideo.dump
testdata/src/test/assets/transformerdumps/mp4/sample.mp4.silence_then_audio.dump
testdata/src/test/assets/transformerdumps/mp4/sample.mp4.silence_then_audio_with_effects.dump
testdata/src/test/assets/transformerdumps/mp4/sample.mp4.silentaudio.dump
testdata/src/test/assets/transformerdumps/mp4/sample_sef_slow_motion.mp4.dump
testdata/src/test/assets/transformerdumps/mp4/sample_with_increasing_timestamps_320w_240h.mp4.clipped.dump
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/DefaultMuxer.java
View file @
d579ccfd
...
...
@@ -17,6 +17,7 @@ package com.google.android.exoplayer2.transformer;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.Format
;
import
com.google.android.exoplayer2.metadata.Metadata
;
import
com.google.common.collect.ImmutableList
;
import
java.nio.ByteBuffer
;
...
...
@@ -77,11 +78,6 @@ public final class DefaultMuxer implements Muxer {
}
@Override
public
void
setLocation
(
float
latitude
,
float
longitude
)
{
this
.
muxer
.
setLocation
(
latitude
,
longitude
);
}
@Override
public
int
addTrack
(
Format
format
)
throws
MuxerException
{
return
muxer
.
addTrack
(
format
);
}
...
...
@@ -94,6 +90,11 @@ public final class DefaultMuxer implements Muxer {
}
@Override
public
void
addMetadata
(
Metadata
metadata
)
{
muxer
.
addMetadata
(
metadata
);
}
@Override
public
void
release
(
boolean
forCancellation
)
throws
MuxerException
{
muxer
.
release
(
forCancellation
);
}
...
...
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/FrameworkMuxer.java
View file @
d579ccfd
...
...
@@ -25,8 +25,11 @@ import android.media.MediaCodec;
import
android.media.MediaFormat
;
import
android.media.MediaMuxer
;
import
android.util.SparseLongArray
;
import
androidx.annotation.Nullable
;
import
com.google.android.exoplayer2.C
;
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.MimeTypes
;
import
com.google.android.exoplayer2.util.Util
;
...
...
@@ -105,11 +108,6 @@ import java.nio.ByteBuffer;
}
@Override
public
void
setLocation
(
float
latitude
,
float
longitude
)
{
mediaMuxer
.
setLocation
(
latitude
,
longitude
);
}
@Override
public
int
addTrack
(
Format
format
)
throws
MuxerException
{
String
sampleMimeType
=
checkNotNull
(
format
.
sampleMimeType
);
MediaFormat
mediaFormat
;
...
...
@@ -191,6 +189,14 @@ import java.nio.ByteBuffer;
}
@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
{
if
(!
isStarted
)
{
mediaMuxer
.
release
();
...
...
@@ -261,4 +267,15 @@ import java.nio.ByteBuffer;
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
;
}
}
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/Muxer.java
View file @
d579ccfd
...
...
@@ -17,6 +17,7 @@ package com.google.android.exoplayer2.transformer;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.Format
;
import
com.google.android.exoplayer2.metadata.Metadata
;
import
com.google.android.exoplayer2.util.MimeTypes
;
import
com.google.common.collect.ImmutableList
;
import
java.nio.ByteBuffer
;
...
...
@@ -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.
*
* @param format The {@link Format} of the track.
...
...
@@ -94,6 +87,9 @@ public interface Muxer {
int
trackIndex
,
ByteBuffer
data
,
long
presentationTimeUs
,
@C
.
BufferFlags
int
flags
)
throws
MuxerException
;
/** Adds {@link Metadata} about the output file. */
void
addMetadata
(
Metadata
metadata
);
/**
* Finishes writing the output and releases any resources associated with muxing.
*
...
...
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/MuxerWrapper.java
View file @
d579ccfd
...
...
@@ -28,7 +28,6 @@ import androidx.annotation.Nullable;
import
com.google.android.exoplayer2.C
;
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.MimeTypes
;
import
com.google.android.exoplayer2.util.Util
;
import
com.google.common.collect.ImmutableList
;
...
...
@@ -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,
* ByteBuffer, boolean, long) written}.
*
* <p>If the {@link Format#metadata} contains {@link Mp4LocationData}, then it will be added to
* the muxer.
* <p>{@link Muxer#addMetadata(Metadata)} is called if the {@link Format#metadata} is present.
*
* @param format The {@link Format} to be added.
* @throws IllegalArgumentException If the format is unsupported.
...
...
@@ -160,15 +158,15 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
TrackInfo
trackInfo
=
new
TrackInfo
(
format
,
muxer
.
addTrack
(
format
));
trackTypeToInfo
.
put
(
trackType
,
trackInfo
);
if
(
format
.
metadata
!=
null
)
{
muxer
.
addMetadata
(
format
.
metadata
);
}
if
(
trackTypeToInfo
.
size
()
==
trackCount
)
{
isReady
=
true
;
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;
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
{
public
final
Format
format
;
public
final
int
index
;
...
...
library/transformer/src/test/java/com/google/android/exoplayer2/transformer/TestMuxer.java
View file @
d579ccfd
...
...
@@ -17,6 +17,7 @@ package com.google.android.exoplayer2.transformer;
import
com.google.android.exoplayer2.C
;
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.Dumper
;
import
java.nio.ByteBuffer
;
...
...
@@ -43,11 +44,6 @@ public final class TestMuxer implements Muxer, Dumper.Dumpable {
// Muxer implementation.
@Override
public
void
setLocation
(
float
latitude
,
float
longitude
)
{
muxer
.
setLocation
(
latitude
,
longitude
);
}
@Override
public
int
addTrack
(
Format
format
)
throws
MuxerException
{
int
trackIndex
=
muxer
.
addTrack
(
format
);
dumpables
.
add
(
new
DumpableFormat
(
format
,
trackIndex
));
...
...
@@ -68,6 +64,12 @@ public final class TestMuxer implements Muxer, Dumper.Dumpable {
}
@Override
public
void
addMetadata
(
Metadata
metadata
)
{
dumpables
.
add
(
dumper
->
dumper
.
add
(
"metadata"
,
metadata
));
muxer
.
addMetadata
(
metadata
);
}
@Override
public
void
release
(
boolean
forCancellation
)
throws
MuxerException
{
dumpables
.
add
(
dumper
->
dumper
.
add
(
"released"
,
true
));
muxer
.
release
(
forCancellation
);
...
...
testdata/src/test/assets/transformerdumps/mp4/sample.mp4.48000hz.dump
View file @
d579ccfd
...
...
@@ -10,12 +10,14 @@ format 0:
initializationData:
data = length 29, hash 4746B5D9
data = length 10, hash 7A0D0F2B
metadata = entries=[xyz: latitude=40.68 longitude=-74.5]
format 1:
sampleMimeType = audio/mp4a-latm
channelCount = 1
sampleRate = 48000
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]
sample:
trackIndex = 1
dataHashCode = 1868041800
...
...
testdata/src/test/assets/transformerdumps/mp4/sample.mp4.concatenated.dump
View file @
d579ccfd
...
...
@@ -10,6 +10,7 @@ format 0:
initializationData:
data = length 29, hash 4746B5D9
data = length 10, hash 7A0D0F2B
metadata = entries=[xyz: latitude=40.68 longitude=-74.5]
format 1:
peakBitrate = 200000
id = 2
...
...
@@ -22,6 +23,7 @@ format 1:
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68 longitude=-74.5]
initializationData:
data = length 2, hash 5F7
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68 longitude=-74.5]
sample:
trackIndex = 1
dataHashCode = 1205768497
...
...
testdata/src/test/assets/transformerdumps/mp4/sample.mp4.concatenated_with_high_pitch_and_no_video.dump
View file @
d579ccfd
...
...
@@ -4,6 +4,7 @@ format 0:
sampleRate = 44100
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]
sample:
trackIndex = 0
dataHashCode = 915609509
...
...
testdata/src/test/assets/transformerdumps/mp4/sample.mp4.dump
View file @
d579ccfd
...
...
@@ -10,6 +10,7 @@ format 0:
initializationData:
data = length 29, hash 4746B5D9
data = length 10, hash 7A0D0F2B
metadata = entries=[xyz: latitude=40.68 longitude=-74.5]
format 1:
peakBitrate = 200000
id = 2
...
...
@@ -22,6 +23,7 @@ format 1:
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68 longitude=-74.5]
initializationData:
data = length 2, hash 5F7
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68 longitude=-74.5]
sample:
trackIndex = 1
dataHashCode = 1205768497
...
...
testdata/src/test/assets/transformerdumps/mp4/sample.mp4.noaudio.dump
View file @
d579ccfd
...
...
@@ -10,6 +10,7 @@ format 0:
initializationData:
data = length 29, hash 4746B5D9
data = length 10, hash 7A0D0F2B
metadata = entries=[xyz: latitude=40.68 longitude=-74.5]
sample:
trackIndex = 0
dataHashCode = -770308242
...
...
testdata/src/test/assets/transformerdumps/mp4/sample.mp4.novideo.dump
View file @
d579ccfd
...
...
@@ -10,6 +10,7 @@ format 0:
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68 longitude=-74.5]
initializationData:
data = length 2, hash 5F7
metadata = entries=[TSSE: description=null: values=[Lavf56.1.0], xyz: latitude=40.68 longitude=-74.5]
sample:
trackIndex = 0
dataHashCode = 1205768497
...
...
testdata/src/test/assets/transformerdumps/mp4/sample.mp4.silence_then_audio.dump
View file @
d579ccfd
...
...
@@ -10,6 +10,7 @@ format 0:
initializationData:
data = length 29, hash 4746B5D9
data = length 10, hash 7A0D0F2B
metadata = entries=[xyz: latitude=40.68 longitude=-74.5]
format 1:
sampleMimeType = audio/mp4a-latm
channelCount = 2
...
...
testdata/src/test/assets/transformerdumps/mp4/sample.mp4.silence_then_audio_with_effects.dump
View file @
d579ccfd
...
...
@@ -10,6 +10,7 @@ format 0:
initializationData:
data = length 29, hash 4746B5D9
data = length 10, hash 7A0D0F2B
metadata = entries=[xyz: latitude=40.68 longitude=-74.5]
format 1:
sampleMimeType = audio/mp4a-latm
channelCount = 2
...
...
testdata/src/test/assets/transformerdumps/mp4/sample.mp4.silentaudio.dump
View file @
d579ccfd
...
...
@@ -10,6 +10,7 @@ format 0:
initializationData:
data = length 29, hash 4746B5D9
data = length 10, hash 7A0D0F2B
metadata = entries=[xyz: latitude=40.68 longitude=-74.5]
format 1:
sampleMimeType = audio/mp4a-latm
channelCount = 2
...
...
testdata/src/test/assets/transformerdumps/mp4/sample_sef_slow_motion.mp4.dump
View file @
d579ccfd
...
...
@@ -10,12 +10,14 @@ format 0:
initializationData:
data = length 33, hash D3FB879D
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:
sampleMimeType = audio/mp4a-latm
channelCount = 2
sampleRate = 12000
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]]
sample:
trackIndex = 1
dataHashCode = -212376212
...
...
testdata/src/test/assets/transformerdumps/mp4/sample_with_increasing_timestamps_320w_240h.mp4.clipped.dump
View file @
d579ccfd
...
...
@@ -27,6 +27,7 @@ format 1:
metadata = entries=[TSSE: description=null: values=[Lavf58.76.100]]
initializationData:
data = length 2, hash 560
metadata = entries=[TSSE: description=null: values=[Lavf58.76.100]]
sample:
trackIndex = 1
dataHashCode = 620415738
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment