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
6d266bfc
authored
Nov 14, 2022
by
kimvde
Committed by
Ian Baker
Nov 14, 2022
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Remove asyncErrorListener
PiperOrigin-RevId: 488310077
parent
3f1b1b70
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
40 additions
and
63 deletions
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/ExoPlayerAssetLoader.java
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/ExoPlayerAssetLoaderRenderer.java
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/MuxerWrapper.java
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/Transformer.java
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformerInternal.java
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/VideoTranscodingSamplePipeline.java
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/ExoPlayerAssetLoader.java
View file @
6d266bfc
...
...
@@ -92,8 +92,7 @@ import com.google.android.exoplayer2.video.VideoRendererEventListener;
progressState
=
PROGRESS_STATE_NO_TRANSFORMATION
;
}
public
void
start
(
MediaItem
mediaItem
,
Listener
listener
,
Transformer
.
AsyncErrorListener
asyncErrorListener
)
{
public
void
start
(
MediaItem
mediaItem
,
Listener
listener
)
{
DefaultTrackSelector
trackSelector
=
new
DefaultTrackSelector
(
context
);
trackSelector
.
setParameters
(
new
DefaultTrackSelector
.
Parameters
.
Builder
(
context
)
...
...
@@ -110,9 +109,7 @@ import com.google.android.exoplayer2.video.VideoRendererEventListener;
DEFAULT_BUFFER_FOR_PLAYBACK_AFTER_REBUFFER_MS
/
10
)
.
build
();
ExoPlayer
.
Builder
playerBuilder
=
new
ExoPlayer
.
Builder
(
context
,
new
RenderersFactoryImpl
(
removeAudio
,
removeVideo
,
listener
,
asyncErrorListener
))
new
ExoPlayer
.
Builder
(
context
,
new
RenderersFactoryImpl
(
removeAudio
,
removeVideo
,
listener
))
.
setMediaSourceFactory
(
mediaSourceFactory
)
.
setTrackSelector
(
trackSelector
)
.
setLoadControl
(
loadControl
)
...
...
@@ -156,17 +153,14 @@ import com.google.android.exoplayer2.video.VideoRendererEventListener;
private
final
boolean
removeAudio
;
private
final
boolean
removeVideo
;
private
final
ExoPlayerAssetLoader
.
Listener
assetLoaderListener
;
private
final
Transformer
.
AsyncErrorListener
asyncErrorListener
;
public
RenderersFactoryImpl
(
boolean
removeAudio
,
boolean
removeVideo
,
ExoPlayerAssetLoader
.
Listener
assetLoaderListener
,
Transformer
.
AsyncErrorListener
asyncErrorListener
)
{
ExoPlayerAssetLoader
.
Listener
assetLoaderListener
)
{
this
.
removeAudio
=
removeAudio
;
this
.
removeVideo
=
removeVideo
;
this
.
assetLoaderListener
=
assetLoaderListener
;
this
.
asyncErrorListener
=
asyncErrorListener
;
mediaClock
=
new
TransformerMediaClock
();
}
...
...
@@ -182,14 +176,12 @@ import com.google.android.exoplayer2.video.VideoRendererEventListener;
int
index
=
0
;
if
(!
removeAudio
)
{
renderers
[
index
]
=
new
ExoPlayerAssetLoaderRenderer
(
C
.
TRACK_TYPE_AUDIO
,
mediaClock
,
assetLoaderListener
,
asyncErrorListener
);
new
ExoPlayerAssetLoaderRenderer
(
C
.
TRACK_TYPE_AUDIO
,
mediaClock
,
assetLoaderListener
);
index
++;
}
if
(!
removeVideo
)
{
renderers
[
index
]
=
new
ExoPlayerAssetLoaderRenderer
(
C
.
TRACK_TYPE_VIDEO
,
mediaClock
,
assetLoaderListener
,
asyncErrorListener
);
new
ExoPlayerAssetLoaderRenderer
(
C
.
TRACK_TYPE_VIDEO
,
mediaClock
,
assetLoaderListener
);
index
++;
}
return
renderers
;
...
...
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/ExoPlayerAssetLoaderRenderer.java
View file @
6d266bfc
...
...
@@ -40,7 +40,6 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
private
final
TransformerMediaClock
mediaClock
;
private
final
ExoPlayerAssetLoader
.
Listener
assetLoaderListener
;
private
final
Transformer
.
AsyncErrorListener
asyncErrorListener
;
private
final
DecoderInputBuffer
decoderInputBuffer
;
private
boolean
isTransformationRunning
;
...
...
@@ -51,12 +50,10 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
public
ExoPlayerAssetLoaderRenderer
(
int
trackType
,
TransformerMediaClock
mediaClock
,
ExoPlayerAssetLoader
.
Listener
assetLoaderListener
,
Transformer
.
AsyncErrorListener
asyncErrorListener
)
{
ExoPlayerAssetLoader
.
Listener
assetLoaderListener
)
{
super
(
trackType
);
this
.
mediaClock
=
mediaClock
;
this
.
assetLoaderListener
=
assetLoaderListener
;
this
.
asyncErrorListener
=
asyncErrorListener
;
decoderInputBuffer
=
new
DecoderInputBuffer
(
BUFFER_REPLACEMENT_MODE_DISABLED
);
}
...
...
@@ -104,7 +101,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
while
(
samplePipeline
.
processData
()
||
feedPipelineFromInput
())
{}
}
catch
(
TransformationException
e
)
{
isTransformationRunning
=
false
;
as
yncErrorListener
.
onTransformati
onError
(
e
);
as
setLoaderListener
.
onError
(
e
);
}
}
...
...
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/MuxerWrapper.java
View file @
6d266bfc
...
...
@@ -28,6 +28,7 @@ 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.util.Consumer
;
import
com.google.android.exoplayer2.util.MimeTypes
;
import
com.google.android.exoplayer2.util.Util
;
import
com.google.common.collect.ImmutableList
;
...
...
@@ -57,7 +58,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
@Nullable
private
final
String
outputPath
;
@Nullable
private
final
ParcelFileDescriptor
outputParcelFileDescriptor
;
private
final
Muxer
.
Factory
muxerFactory
;
private
final
Transformer
.
AsyncErrorListener
asyncErrorListen
er
;
private
final
Consumer
<
TransformationException
>
errorConsum
er
;
private
final
SparseIntArray
trackTypeToIndex
;
private
final
SparseIntArray
trackTypeToSampleCount
;
private
final
SparseLongArray
trackTypeToTimeUs
;
...
...
@@ -77,7 +78,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
@Nullable
String
outputPath
,
@Nullable
ParcelFileDescriptor
outputParcelFileDescriptor
,
Muxer
.
Factory
muxerFactory
,
Transformer
.
AsyncErrorListener
asyncErrorListen
er
)
{
Consumer
<
TransformationException
>
errorConsum
er
)
{
if
(
outputPath
==
null
&&
outputParcelFileDescriptor
==
null
)
{
throw
new
NullPointerException
(
"Both output path and ParcelFileDescriptor are null"
);
}
...
...
@@ -85,7 +86,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
this
.
outputPath
=
outputPath
;
this
.
outputParcelFileDescriptor
=
outputParcelFileDescriptor
;
this
.
muxerFactory
=
muxerFactory
;
this
.
asyncErrorListener
=
asyncErrorListen
er
;
this
.
errorConsumer
=
errorConsum
er
;
trackTypeToIndex
=
new
SparseIntArray
();
trackTypeToSampleCount
=
new
SparseIntArray
();
...
...
@@ -306,7 +307,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
return
;
}
isAborted
=
true
;
asyncErrorListener
.
onTransformationError
(
errorConsumer
.
accept
(
TransformationException
.
createForMuxer
(
new
IllegalStateException
(
"No output sample written in the last "
...
...
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/Transformer.java
View file @
6d266bfc
...
...
@@ -713,22 +713,19 @@ public final class Transformer {
throw
new
IllegalStateException
(
"There is already a transformation in progress."
);
}
transformationInProgress
=
true
;
ComponentListener
componentListener
=
new
ComponentListener
(
mediaItem
,
looper
);
TransformerInternalListener
transformerInternalListener
=
new
TransformerInternalListener
(
mediaItem
,
looper
);
MuxerWrapper
muxerWrapper
=
new
MuxerWrapper
(
outputPath
,
outputParcelFileDescriptor
,
muxerFactory
,
/*
asyncErrorListener= */
componentListene
r
);
/*
errorConsumer= */
transformerInternalListener:
:
onTransformationErro
r
);
this
.
muxerWrapper
=
muxerWrapper
;
FallbackListener
fallbackListener
=
new
FallbackListener
(
mediaItem
,
listeners
,
transformationRequest
);
transformerInternal
.
start
(
mediaItem
,
muxerWrapper
,
/* listener= */
componentListener
,
fallbackListener
,
/* asyncErrorListener= */
componentListener
);
mediaItem
,
muxerWrapper
,
transformerInternalListener
,
fallbackListener
);
}
/**
...
...
@@ -822,23 +819,12 @@ public final class Transformer {
return
fileSize
;
}
/** Listener for exceptions that occur during a transformation. */
/* package */
interface
AsyncErrorListener
{
/**
* Called when a {@link TransformationException} occurs.
*
* <p>Can be called from any thread.
*/
void
onTransformationError
(
TransformationException
exception
);
}
private
final
class
ComponentListener
implements
TransformerInternal
.
Listener
,
AsyncErrorListener
{
private
final
class
TransformerInternalListener
implements
TransformerInternal
.
Listener
{
private
final
MediaItem
mediaItem
;
private
final
Handler
handler
;
public
Component
Listener
(
MediaItem
mediaItem
,
Looper
looper
)
{
public
TransformerInternal
Listener
(
MediaItem
mediaItem
,
Looper
looper
)
{
this
.
mediaItem
=
mediaItem
;
handler
=
new
Handler
(
looper
);
}
...
...
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformerInternal.java
View file @
6d266bfc
...
...
@@ -80,12 +80,10 @@ import com.google.common.collect.ImmutableList;
MediaItem
mediaItem
,
MuxerWrapper
muxerWrapper
,
Listener
listener
,
FallbackListener
fallbackListener
,
Transformer
.
AsyncErrorListener
asyncErrorListener
)
{
ComponentListener
componentListener
=
new
ComponentListener
(
mediaItem
,
muxerWrapper
,
listener
,
fallbackListener
,
asyncErrorListener
);
exoPlayerAssetLoader
.
start
(
mediaItem
,
componentListener
,
asyncErrorListener
);
FallbackListener
fallbackListener
)
{
AssetLoaderListener
assetLoaderListener
=
new
AssetLoaderListener
(
mediaItem
,
muxerWrapper
,
listener
,
fallbackListener
);
exoPlayerAssetLoader
.
start
(
mediaItem
,
assetLoaderListener
);
}
public
@Transformer
.
ProgressState
int
getProgress
(
ProgressHolder
progressHolder
)
{
...
...
@@ -96,27 +94,24 @@ import com.google.common.collect.ImmutableList;
exoPlayerAssetLoader
.
release
();
}
private
class
Component
Listener
implements
ExoPlayerAssetLoader
.
Listener
{
private
class
AssetLoader
Listener
implements
ExoPlayerAssetLoader
.
Listener
{
private
final
MediaItem
mediaItem
;
private
final
MuxerWrapper
muxerWrapper
;
private
final
TransformerInternal
.
Listener
listener
;
private
final
FallbackListener
fallbackListener
;
private
final
Transformer
.
AsyncErrorListener
asyncErrorListener
;
private
volatile
boolean
trackRegistered
;
public
Component
Listener
(
public
AssetLoader
Listener
(
MediaItem
mediaItem
,
MuxerWrapper
muxerWrapper
,
Listener
listener
,
FallbackListener
fallbackListener
,
Transformer
.
AsyncErrorListener
asyncErrorListener
)
{
FallbackListener
fallbackListener
)
{
this
.
mediaItem
=
mediaItem
;
this
.
muxerWrapper
=
muxerWrapper
;
this
.
listener
=
listener
;
this
.
fallbackListener
=
fallbackListener
;
this
.
asyncErrorListener
=
asyncErrorListener
;
}
@Override
...
...
@@ -142,10 +137,15 @@ import com.google.common.collect.ImmutableList;
@Override
public
void
onError
(
Exception
e
)
{
TransformationException
transformationException
=
e
instanceof
PlaybackException
?
TransformationException
.
createForPlaybackException
((
PlaybackException
)
e
)
:
TransformationException
.
createForUnexpected
(
e
);
TransformationException
transformationException
;
if
(
e
instanceof
TransformationException
)
{
transformationException
=
(
TransformationException
)
e
;
}
else
if
(
e
instanceof
PlaybackException
)
{
transformationException
=
TransformationException
.
createForPlaybackException
((
PlaybackException
)
e
);
}
else
{
transformationException
=
TransformationException
.
createForUnexpected
(
e
);
}
listener
.
onTransformationError
(
transformationException
);
}
...
...
@@ -181,7 +181,7 @@ import com.google.common.collect.ImmutableList;
encoderFactory
,
muxerWrapper
,
fallbackListener
,
asyncErrorListene
r
,
listener:
:
onTransformationErro
r
,
debugViewProvider
);
}
else
{
return
new
PassthroughSamplePipeline
(
...
...
library/transformer/src/main/java/com/google/android/exoplayer2/transformer/VideoTranscodingSamplePipeline.java
View file @
6d266bfc
...
...
@@ -31,6 +31,7 @@ import com.google.android.exoplayer2.Format;
import
com.google.android.exoplayer2.decoder.DecoderInputBuffer
;
import
com.google.android.exoplayer2.effect.Presentation
;
import
com.google.android.exoplayer2.effect.ScaleToFitTransformation
;
import
com.google.android.exoplayer2.util.Consumer
;
import
com.google.android.exoplayer2.util.DebugViewProvider
;
import
com.google.android.exoplayer2.util.Effect
;
import
com.google.android.exoplayer2.util.FrameInfo
;
...
...
@@ -75,7 +76,7 @@ import org.checkerframework.dataflow.qual.Pure;
Codec
.
EncoderFactory
encoderFactory
,
MuxerWrapper
muxerWrapper
,
FallbackListener
fallbackListener
,
Transformer
.
AsyncErrorListener
asyncErrorListen
er
,
Consumer
<
TransformationException
>
errorConsum
er
,
DebugViewProvider
debugViewProvider
)
throws
TransformationException
{
super
(
...
...
@@ -154,7 +155,7 @@ import org.checkerframework.dataflow.qual.Pure;
checkNotNull
(
frameProcessor
)
.
setOutputSurfaceInfo
(
encoderWrapper
.
getSurfaceInfo
(
width
,
height
));
}
catch
(
TransformationException
exception
)
{
asyncErrorListener
.
onTransformationError
(
exception
);
errorConsumer
.
accept
(
exception
);
}
}
...
...
@@ -165,7 +166,7 @@ import org.checkerframework.dataflow.qual.Pure;
@Override
public
void
onFrameProcessingError
(
FrameProcessingException
exception
)
{
asyncErrorListener
.
onTransformationError
(
errorConsumer
.
accept
(
TransformationException
.
createForFrameProcessingException
(
exception
,
TransformationException
.
ERROR_CODE_FRAME_PROCESSING_FAILED
));
}
...
...
@@ -175,7 +176,7 @@ import org.checkerframework.dataflow.qual.Pure;
try
{
encoderWrapper
.
signalEndOfInputStream
();
}
catch
(
TransformationException
exception
)
{
asyncErrorListener
.
onTransformationError
(
exception
);
errorConsumer
.
accept
(
exception
);
}
}
},
...
...
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