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
6c788443
authored
Sep 07, 2020
by
Oliver Woodman
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Remove unfinished FfmpegVideoRenderer from release
parent
6cce608f
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
1 additions
and
155 deletions
extensions/ffmpeg/src/main/java/com/google/android/exoplayer2/ext/ffmpeg/FfmpegLibrary.java
extensions/ffmpeg/src/main/java/com/google/android/exoplayer2/ext/ffmpeg/FfmpegVideoRenderer.java
library/core/proguard-rules.txt
library/core/src/main/java/com/google/android/exoplayer2/DefaultRenderersFactory.java
extensions/ffmpeg/src/main/java/com/google/android/exoplayer2/ext/ffmpeg/FfmpegLibrary.java
View file @
6c788443
...
...
@@ -45,7 +45,7 @@ public final class FfmpegLibrary {
/**
* Override the names of the FFmpeg native libraries. If an application wishes to call this
* method, it must do so before calling any other method defined by this class, and before
* instantiating a {@link FfmpegAudioRenderer}
or {@link FfmpegVideoRenderer}
instance.
* instantiating a {@link FfmpegAudioRenderer} instance.
*
* @param libraries The names of the FFmpeg native libraries.
*/
...
...
extensions/ffmpeg/src/main/java/com/google/android/exoplayer2/ext/ffmpeg/FfmpegVideoRenderer.java
deleted
100644 → 0
View file @
6cce608f
/*
* Copyright (C) 2020 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com
.
google
.
android
.
exoplayer2
.
ext
.
ffmpeg
;
import
android.os.Handler
;
import
android.view.Surface
;
import
androidx.annotation.Nullable
;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.Format
;
import
com.google.android.exoplayer2.RendererCapabilities
;
import
com.google.android.exoplayer2.decoder.Decoder
;
import
com.google.android.exoplayer2.drm.ExoMediaCrypto
;
import
com.google.android.exoplayer2.util.TraceUtil
;
import
com.google.android.exoplayer2.util.Util
;
import
com.google.android.exoplayer2.video.DecoderVideoRenderer
;
import
com.google.android.exoplayer2.video.VideoDecoderInputBuffer
;
import
com.google.android.exoplayer2.video.VideoDecoderOutputBuffer
;
import
com.google.android.exoplayer2.video.VideoRendererEventListener
;
// TODO: Remove the NOTE below.
/**
* <b>NOTE: This class if under development and is not yet functional.</b>
*
* <p>Decodes and renders video using FFmpeg.
*/
public
final
class
FfmpegVideoRenderer
extends
DecoderVideoRenderer
{
private
static
final
String
TAG
=
"FfmpegVideoRenderer"
;
/**
* Creates a new instance.
*
* @param allowedJoiningTimeMs The maximum duration in milliseconds for which this video renderer
* can attempt to seamlessly join an ongoing playback.
* @param eventHandler A handler to use when delivering events to {@code eventListener}. May be
* null if delivery of events is not required.
* @param eventListener A listener of events. May be null if delivery of events is not required.
* @param maxDroppedFramesToNotify The maximum number of frames that can be dropped between
* invocations of {@link VideoRendererEventListener#onDroppedFrames(int, long)}.
*/
public
FfmpegVideoRenderer
(
long
allowedJoiningTimeMs
,
@Nullable
Handler
eventHandler
,
@Nullable
VideoRendererEventListener
eventListener
,
int
maxDroppedFramesToNotify
)
{
super
(
allowedJoiningTimeMs
,
eventHandler
,
eventListener
,
maxDroppedFramesToNotify
);
// TODO: Implement.
}
@Override
public
String
getName
()
{
return
TAG
;
}
@Override
@RendererCapabilities
.
Capabilities
public
final
int
supportsFormat
(
Format
format
)
{
// TODO: Remove this line and uncomment the implementation below.
return
FORMAT_UNSUPPORTED_TYPE
;
/*
String mimeType = Assertions.checkNotNull(format.sampleMimeType);
if (!FfmpegLibrary.isAvailable() || !MimeTypes.isVideo(mimeType)) {
return FORMAT_UNSUPPORTED_TYPE;
} else if (!FfmpegLibrary.supportsFormat(format.sampleMimeType)) {
return RendererCapabilities.create(FORMAT_UNSUPPORTED_SUBTYPE);
} else if (format.exoMediaCryptoType != null) {
return RendererCapabilities.create(FORMAT_UNSUPPORTED_DRM);
} else {
return RendererCapabilities.create(
FORMAT_HANDLED,
ADAPTIVE_SEAMLESS,
TUNNELING_NOT_SUPPORTED);
}
*/
}
@SuppressWarnings
(
"return.type.incompatible"
)
@Override
protected
Decoder
<
VideoDecoderInputBuffer
,
VideoDecoderOutputBuffer
,
FfmpegDecoderException
>
createDecoder
(
Format
format
,
@Nullable
ExoMediaCrypto
mediaCrypto
)
throws
FfmpegDecoderException
{
TraceUtil
.
beginSection
(
"createFfmpegVideoDecoder"
);
// TODO: Implement, remove the SuppressWarnings annotation, and update the return type to use
// the concrete type of the decoder (probably FfmepgVideoDecoder).
TraceUtil
.
endSection
();
return
null
;
}
@Override
protected
void
renderOutputBufferToSurface
(
VideoDecoderOutputBuffer
outputBuffer
,
Surface
surface
)
throws
FfmpegDecoderException
{
// TODO: Implement.
}
@Override
protected
void
setDecoderOutputMode
(
@C
.
VideoOutputMode
int
outputMode
)
{
// TODO: Uncomment the implementation below.
/*
if (decoder != null) {
decoder.setOutputMode(outputMode);
}
*/
}
@Override
protected
boolean
canKeepCodec
(
Format
oldFormat
,
Format
newFormat
)
{
return
Util
.
areEqual
(
oldFormat
.
sampleMimeType
,
newFormat
.
sampleMimeType
);
}
}
library/core/proguard-rules.txt
View file @
6c788443
...
...
@@ -25,10 +25,6 @@
-keepclassmembers class com.google.android.exoplayer2.ext.av1.Libgav1VideoRenderer {
<init>(long, android.os.Handler, com.google.android.exoplayer2.video.VideoRendererEventListener, int);
}
-dontnote com.google.android.exoplayer2.ext.ffmpeg.FfmpegVideoRenderer
-keepclassmembers class com.google.android.exoplayer2.ext.ffmpeg.FfmpegVideoRenderer {
<init>(long, android.os.Handler, com.google.android.exoplayer2.video.VideoRendererEventListener, int);
}
-dontnote com.google.android.exoplayer2.ext.opus.LibopusAudioRenderer
-keepclassmembers class com.google.android.exoplayer2.ext.opus.LibopusAudioRenderer {
<init>(android.os.Handler, com.google.android.exoplayer2.audio.AudioRendererEventListener, com.google.android.exoplayer2.audio.AudioSink);
...
...
library/core/src/main/java/com/google/android/exoplayer2/DefaultRenderersFactory.java
View file @
6c788443
...
...
@@ -436,34 +436,6 @@ public class DefaultRenderersFactory implements RenderersFactory {
// The extension is present, but instantiation failed.
throw
new
RuntimeException
(
"Error instantiating AV1 extension"
,
e
);
}
try
{
// Full class names used for constructor args so the LINT rule triggers if any of them move.
// LINT.IfChange
Class
<?>
clazz
=
Class
.
forName
(
"com.google.android.exoplayer2.ext.ffmpeg.FfmpegVideoRenderer"
);
Constructor
<?>
constructor
=
clazz
.
getConstructor
(
long
.
class
,
android
.
os
.
Handler
.
class
,
com
.
google
.
android
.
exoplayer2
.
video
.
VideoRendererEventListener
.
class
,
int
.
class
);
// LINT.ThenChange(../../../../../../../proguard-rules.txt)
Renderer
renderer
=
(
Renderer
)
constructor
.
newInstance
(
allowedVideoJoiningTimeMs
,
eventHandler
,
eventListener
,
MAX_DROPPED_VIDEO_FRAME_COUNT_TO_NOTIFY
);
out
.
add
(
extensionRendererIndex
++,
renderer
);
Log
.
i
(
TAG
,
"Loaded FfmpegVideoRenderer."
);
}
catch
(
ClassNotFoundException
e
)
{
// Expected if the app was built without the extension.
}
catch
(
Exception
e
)
{
// The extension is present, but instantiation failed.
throw
new
RuntimeException
(
"Error instantiating FFmpeg extension"
,
e
);
}
}
/**
...
...
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