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
03ba1c9a
authored
Oct 03, 2019
by
wingyippp
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
return null if Seek Table is not supported. proguard in flac-extension
parent
070aab72
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
31 additions
and
25 deletions
extensions/flac/proguard-rules.txt
extensions/flac/src/main/java/com/google/android/exoplayer2/ext/flac/FlacDecoderJni.java
extensions/flac/src/main/java/com/google/android/exoplayer2/ext/flac/FlacExtractor.java
extensions/flac/src/main/jni/flac_jni.cc
extensions/flac/src/main/jni/flac_parser.cc
library/core/proguard-rules.txt
extensions/flac/proguard-rules.txt
View file @
03ba1c9a
...
...
@@ -15,3 +15,13 @@
-keep class com.google.android.exoplayer2.metadata.flac.PictureFrame {
*;
}
-dontnote com.google.android.exoplayer2.extractor.SeekPoint
-keepclasseswithmembers class com.google.android.exoplayer2.extractor.SeekPoint {
<init>(long, long);
}
-dontnote com.google.android.exoplayer2.extractor.SeekMap$SeekPoints
-keepclasseswithmembers class com.google.android.exoplayer2.extractor.SeekMap$SeekPoints {
<init>(com.google.android.exoplayer2.extractor.SeekPoint, com.google.android.exoplayer2.extractor.SeekPoint);
}
\ No newline at end of file
extensions/flac/src/main/java/com/google/android/exoplayer2/ext/flac/FlacDecoderJni.java
View file @
03ba1c9a
...
...
@@ -221,10 +221,10 @@ import java.nio.ByteBuffer;
* stream.
*
* @param timeUs A seek position in microseconds.
* @return The corresponding SeekPoints in the flac seek table or
* {@link com.google.android.exoplayer2.extractor.SeekPoint#position} set -1 if the stream doesn't
* @return The corresponding SeekPoints in the flac seek table or null if the stream doesn't
* have a seek table.
*/
@Nullable
public
SeekMap
.
SeekPoints
getSeekPoints
(
long
timeUs
)
{
return
flacGetSeekPoints
(
nativeDecoderContext
,
timeUs
);
}
...
...
extensions/flac/src/main/java/com/google/android/exoplayer2/ext/flac/FlacExtractor.java
View file @
03ba1c9a
...
...
@@ -29,6 +29,7 @@ import com.google.android.exoplayer2.extractor.ExtractorsFactory;
import
com.google.android.exoplayer2.extractor.Id3Peeker
;
import
com.google.android.exoplayer2.extractor.PositionHolder
;
import
com.google.android.exoplayer2.extractor.SeekMap
;
import
com.google.android.exoplayer2.extractor.SeekPoint
;
import
com.google.android.exoplayer2.extractor.TrackOutput
;
import
com.google.android.exoplayer2.metadata.Metadata
;
import
com.google.android.exoplayer2.metadata.id3.Id3Decoder
;
...
...
@@ -341,7 +342,8 @@ public final class FlacExtractor implements Extractor {
@Override
public
SeekPoints
getSeekPoints
(
long
timeUs
)
{
return
decoderJni
.
getSeekPoints
(
timeUs
);
@Nullable
SeekPoints
seekPoints
=
decoderJni
.
getSeekPoints
(
timeUs
);
return
seekPoints
==
null
?
new
SeekPoints
(
SeekPoint
.
START
)
:
seekPoints
;
}
@Override
...
...
extensions/flac/src/main/jni/flac_jni.cc
View file @
03ba1c9a
...
...
@@ -203,16 +203,20 @@ DECODER_FUNC(jlong, flacGetNextFrameFirstSampleIndex, jlong jContext) {
DECODER_FUNC
(
jobject
,
flacGetSeekPoints
,
jlong
jContext
,
jlong
timeUs
)
{
Context
*
context
=
reinterpret_cast
<
Context
*>
(
jContext
);
int64_t
*
result
=
context
->
parser
->
getSeekPositions
(
timeUs
);
jclass
seekPointClass
=
env
->
FindClass
(
"com/google/android/exoplayer2/extractor/SeekPoint"
);
jclass
seekPointsClass
=
env
->
FindClass
(
"com/google/android/exoplayer2/extractor/SeekMap$SeekPoints"
);
jmethodID
cidSeekPoint
=
env
->
GetMethodID
(
seekPointClass
,
"<init>"
,
"(JJ)V"
);
jmethodID
cidSeekPoints
=
env
->
GetMethodID
(
seekPointsClass
,
"<init>"
,
"(Lcom/google/android/exoplayer2/extractor/SeekPoint;Lcom/google/android/exoplayer2/extractor/SeekPoint;)V"
);
jobject
jSeekPointFirst
=
env
->
NewObject
(
seekPointClass
,
cidSeekPoint
,
(
jlong
)
result
[
0
],
(
jlong
)
result
[
1
]);
jobject
jSeekPointSecond
=
env
->
NewObject
(
seekPointClass
,
cidSeekPoint
,
(
jlong
)
result
[
2
],
(
jlong
)
result
[
3
]);
jobject
jSeekPoints
=
env
->
NewObject
(
seekPointsClass
,
cidSeekPoints
,
jSeekPointFirst
,
jSeekPointSecond
);
env
->
DeleteLocalRef
(
jSeekPointFirst
);
env
->
DeleteLocalRef
(
jSeekPointSecond
);
return
jSeekPoints
;
if
(
result
!=
NULL
)
{
jclass
seekPointClass
=
env
->
FindClass
(
"com/google/android/exoplayer2/extractor/SeekPoint"
);
jclass
seekPointsClass
=
env
->
FindClass
(
"com/google/android/exoplayer2/extractor/SeekMap$SeekPoints"
);
jmethodID
cidSeekPoint
=
env
->
GetMethodID
(
seekPointClass
,
"<init>"
,
"(JJ)V"
);
jmethodID
cidSeekPoints
=
env
->
GetMethodID
(
seekPointsClass
,
"<init>"
,
"(Lcom/google/android/exoplayer2/extractor/SeekPoint;Lcom/google/android/exoplayer2/extractor/SeekPoint;)V"
);
jobject
jSeekPointFirst
=
env
->
NewObject
(
seekPointClass
,
cidSeekPoint
,
(
jlong
)
result
[
0
],
(
jlong
)
result
[
1
]);
jobject
jSeekPointSecond
=
env
->
NewObject
(
seekPointClass
,
cidSeekPoint
,
(
jlong
)
result
[
2
],
(
jlong
)
result
[
3
]);
jobject
jSeekPoints
=
env
->
NewObject
(
seekPointsClass
,
cidSeekPoints
,
jSeekPointFirst
,
jSeekPointSecond
);
env
->
DeleteLocalRef
(
jSeekPointFirst
);
env
->
DeleteLocalRef
(
jSeekPointSecond
);
return
jSeekPoints
;
}
else
{
return
NULL
;
}
}
DECODER_FUNC
(
jstring
,
flacGetStateString
,
jlong
jContext
)
{
...
...
extensions/flac/src/main/jni/flac_parser.cc
View file @
03ba1c9a
...
...
@@ -440,9 +440,8 @@ size_t FLACParser::readBuffer(void *output, size_t output_size) {
int64_t
*
FLACParser
::
getSeekPositions
(
int64_t
timeUs
)
{
int64_t
*
result
=
new
int64_t
[
4
];
memset
(
result
,
-
1
,
sizeof
(
result
));
if
(
!
mSeekTable
)
{
return
result
;
return
NULL
;
}
int64_t
sample
=
(
timeUs
*
getSampleRate
())
/
1000000LL
;
...
...
library/core/proguard-rules.txt
View file @
03ba1c9a
...
...
@@ -58,16 +58,6 @@
<init>(com.google.android.exoplayer2.upstream.DataSource$Factory);
}
-dontnote com.google.android.exoplayer2.extractor.SeekPoint
-keepclasseswithmembers class com.google.android.exoplayer2.extractor.SeekPoint {
<init>(long, long);
}
-dontnote com.google.android.exoplayer2.extractor.SeekMap$SeekPoints
-keepclasseswithmembers class com.google.android.exoplayer2.extractor.SeekMap$SeekPoints {
<init>(com.google.android.exoplayer2.extractor.SeekPoint, com.google.android.exoplayer2.extractor.SeekPoint);
}
# Don't warn about checkerframework and Kotlin annotations
-dontwarn org.checkerframework.**
-dontwarn kotlin.annotations.jvm.**
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