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
9e4d0db2
authored
Dec 06, 2021
by
kimvde
Committed by
Ian Baker
Dec 07, 2021
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Various small improvements in Transformer
PiperOrigin-RevId: 414428415
parent
2e55643f
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
53 additions
and
47 deletions
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/AudioSamplePipeline.java
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/FrameEditor.java
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/SamplePipeline.java
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformerAudioRenderer.java
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/VideoSamplePipeline.java
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/AudioSamplePipeline.java
View file @
9e4d0db2
...
@@ -98,12 +98,14 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
...
@@ -98,12 +98,14 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
}
}
@Override
@Override
public
void
release
()
{
@Nullable
sonicAudioProcessor
.
reset
();
public
DecoderInputBuffer
dequeueInputBuffer
()
{
decoder
.
release
();
return
decoder
.
maybeDequeueInputBuffer
(
decoderInputBuffer
)
?
decoderInputBuffer
:
null
;
if
(
encoder
!=
null
)
{
}
encoder
.
release
();
}
@Override
public
void
queueInputBuffer
()
{
decoder
.
queueInputBuffer
(
decoderInputBuffer
);
}
}
@Override
@Override
...
@@ -120,27 +122,11 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
...
@@ -120,27 +122,11 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
@Override
@Override
@Nullable
@Nullable
public
DecoderInputBuffer
dequeueInputBuffer
()
{
return
decoder
.
maybeDequeueInputBuffer
(
decoderInputBuffer
)
?
decoderInputBuffer
:
null
;
}
@Override
public
void
queueInputBuffer
()
{
decoder
.
queueInputBuffer
(
decoderInputBuffer
);
}
@Override
@Nullable
public
Format
getOutputFormat
()
{
public
Format
getOutputFormat
()
{
return
encoder
!=
null
?
encoder
.
getOutputFormat
()
:
null
;
return
encoder
!=
null
?
encoder
.
getOutputFormat
()
:
null
;
}
}
@Override
@Override
public
boolean
isEnded
()
{
return
encoder
!=
null
&&
encoder
.
isEnded
();
}
@Override
@Nullable
@Nullable
public
DecoderInputBuffer
getOutputBuffer
()
{
public
DecoderInputBuffer
getOutputBuffer
()
{
if
(
encoder
!=
null
)
{
if
(
encoder
!=
null
)
{
...
@@ -159,6 +145,20 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
...
@@ -159,6 +145,20 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
checkStateNotNull
(
encoder
).
releaseOutputBuffer
();
checkStateNotNull
(
encoder
).
releaseOutputBuffer
();
}
}
@Override
public
boolean
isEnded
()
{
return
encoder
!=
null
&&
encoder
.
isEnded
();
}
@Override
public
void
release
()
{
sonicAudioProcessor
.
reset
();
decoder
.
release
();
if
(
encoder
!=
null
)
{
encoder
.
release
();
}
}
/**
/**
* Attempts to pass decoder output data to the encoder, and returns whether it may be possible to
* Attempts to pass decoder output data to the encoder, and returns whether it may be possible to
* pass more data immediately by calling this method again.
* pass more data immediately by calling this method again.
...
...
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/FrameEditor.java
View file @
9e4d0db2
...
@@ -100,7 +100,7 @@ import java.io.IOException;
...
@@ -100,7 +100,7 @@ import java.io.IOException;
* Returns a 4x4, column-major Matrix float array, from an input {@link Matrix}. This is useful
* Returns a 4x4, column-major Matrix float array, from an input {@link Matrix}. This is useful
* for converting to the 4x4 column-major format commonly used in OpenGL.
* for converting to the 4x4 column-major format commonly used in OpenGL.
*/
*/
private
static
f
inal
f
loat
[]
getGlMatrixArray
(
Matrix
matrix
)
{
private
static
float
[]
getGlMatrixArray
(
Matrix
matrix
)
{
float
[]
matrix3x3Array
=
new
float
[
9
];
float
[]
matrix3x3Array
=
new
float
[
9
];
matrix
.
getValues
(
matrix3x3Array
);
matrix
.
getValues
(
matrix3x3Array
);
float
[]
matrix4x4Array
=
getMatrix4x4Array
(
matrix3x3Array
);
float
[]
matrix4x4Array
=
getMatrix4x4Array
(
matrix3x3Array
);
...
@@ -123,7 +123,7 @@ import java.io.IOException;
...
@@ -123,7 +123,7 @@ import java.io.IOException;
* Input format: [a, b, c, d, e, f, g, h, i] <br>
* Input format: [a, b, c, d, e, f, g, h, i] <br>
* Output format: [a, b, 0, c, d, e, 0, f, 0, 0, 1, 0, g, h, 0, i]
* Output format: [a, b, 0, c, d, e, 0, f, 0, 0, 1, 0, g, h, 0, i]
*/
*/
private
static
f
inal
f
loat
[]
getMatrix4x4Array
(
float
[]
matrix3x3Array
)
{
private
static
float
[]
getMatrix4x4Array
(
float
[]
matrix3x3Array
)
{
float
[]
matrix4x4Array
=
new
float
[
16
];
float
[]
matrix4x4Array
=
new
float
[
16
];
matrix4x4Array
[
10
]
=
1
;
matrix4x4Array
[
10
]
=
1
;
for
(
int
inputRow
=
0
;
inputRow
<
3
;
inputRow
++)
{
for
(
int
inputRow
=
0
;
inputRow
<
3
;
inputRow
++)
{
...
...
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/SamplePipeline.java
View file @
9e4d0db2
...
@@ -41,7 +41,7 @@ import com.google.android.exoplayer2.decoder.DecoderInputBuffer;
...
@@ -41,7 +41,7 @@ import com.google.android.exoplayer2.decoder.DecoderInputBuffer;
void
queueInputBuffer
();
void
queueInputBuffer
();
/**
/**
* Process the input data and returns whether more data can be processed by calling this method
* Process
es
the input data and returns whether more data can be processed by calling this method
* again.
* again.
*/
*/
boolean
processData
()
throws
ExoPlaybackException
;
boolean
processData
()
throws
ExoPlaybackException
;
...
...
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformerAudioRenderer.java
View file @
9e4d0db2
...
@@ -60,12 +60,7 @@ import com.google.android.exoplayer2.source.SampleStream.ReadDataResult;
...
@@ -60,12 +60,7 @@ import com.google.android.exoplayer2.source.SampleStream.ReadDataResult;
return
false
;
return
false
;
}
}
Format
inputFormat
=
checkNotNull
(
formatHolder
.
format
);
Format
inputFormat
=
checkNotNull
(
formatHolder
.
format
);
boolean
shouldChangeMimeType
=
if
(
shouldTranscode
(
inputFormat
))
{
transformation
.
audioMimeType
!=
null
&&
!
transformation
.
audioMimeType
.
equals
(
inputFormat
.
sampleMimeType
);
boolean
shouldFlattenForSlowMotion
=
transformation
.
flattenForSlowMotion
&&
isSlowMotion
(
inputFormat
);
if
(
shouldChangeMimeType
||
shouldFlattenForSlowMotion
)
{
samplePipeline
=
new
AudioSamplePipeline
(
inputFormat
,
transformation
,
getIndex
());
samplePipeline
=
new
AudioSamplePipeline
(
inputFormat
,
transformation
,
getIndex
());
}
else
{
}
else
{
samplePipeline
=
new
PassthroughSamplePipeline
(
inputFormat
);
samplePipeline
=
new
PassthroughSamplePipeline
(
inputFormat
);
...
@@ -73,6 +68,17 @@ import com.google.android.exoplayer2.source.SampleStream.ReadDataResult;
...
@@ -73,6 +68,17 @@ import com.google.android.exoplayer2.source.SampleStream.ReadDataResult;
return
true
;
return
true
;
}
}
private
boolean
shouldTranscode
(
Format
inputFormat
)
{
if
(
transformation
.
audioMimeType
!=
null
&&
!
transformation
.
audioMimeType
.
equals
(
inputFormat
.
sampleMimeType
))
{
return
true
;
}
if
(
transformation
.
flattenForSlowMotion
&&
isSlowMotion
(
inputFormat
))
{
return
true
;
}
return
false
;
}
private
static
boolean
isSlowMotion
(
Format
format
)
{
private
static
boolean
isSlowMotion
(
Format
format
)
{
@Nullable
Metadata
metadata
=
format
.
metadata
;
@Nullable
Metadata
metadata
=
format
.
metadata
;
if
(
metadata
==
null
)
{
if
(
metadata
==
null
)
{
...
...
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/VideoSamplePipeline.java
View file @
9e4d0db2
...
@@ -103,6 +103,17 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
...
@@ -103,6 +103,17 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
}
}
@Override
@Override
@Nullable
public
DecoderInputBuffer
dequeueInputBuffer
()
{
return
decoder
.
maybeDequeueInputBuffer
(
decoderInputBuffer
)
?
decoderInputBuffer
:
null
;
}
@Override
public
void
queueInputBuffer
()
{
decoder
.
queueInputBuffer
(
decoderInputBuffer
);
}
@Override
public
boolean
processData
()
{
public
boolean
processData
()
{
if
(
decoder
.
isEnded
())
{
if
(
decoder
.
isEnded
())
{
return
false
;
return
false
;
...
@@ -133,27 +144,11 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
...
@@ -133,27 +144,11 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
@Override
@Override
@Nullable
@Nullable
public
DecoderInputBuffer
dequeueInputBuffer
()
{
return
decoder
.
maybeDequeueInputBuffer
(
decoderInputBuffer
)
?
decoderInputBuffer
:
null
;
}
@Override
public
void
queueInputBuffer
()
{
decoder
.
queueInputBuffer
(
decoderInputBuffer
);
}
@Override
@Nullable
public
Format
getOutputFormat
()
{
public
Format
getOutputFormat
()
{
return
encoder
.
getOutputFormat
();
return
encoder
.
getOutputFormat
();
}
}
@Override
@Override
public
boolean
isEnded
()
{
return
encoder
.
isEnded
();
}
@Override
@Nullable
@Nullable
public
DecoderInputBuffer
getOutputBuffer
()
{
public
DecoderInputBuffer
getOutputBuffer
()
{
encoderOutputBuffer
.
data
=
encoder
.
getOutputBuffer
();
encoderOutputBuffer
.
data
=
encoder
.
getOutputBuffer
();
...
@@ -172,6 +167,11 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
...
@@ -172,6 +167,11 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
}
}
@Override
@Override
public
boolean
isEnded
()
{
return
encoder
.
isEnded
();
}
@Override
public
void
release
()
{
public
void
release
()
{
if
(
frameEditor
!=
null
)
{
if
(
frameEditor
!=
null
)
{
frameEditor
.
release
();
frameEditor
.
release
();
...
...
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