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
12a93517
authored
Jun 04, 2020
by
kimvde
Committed by
Oliver Woodman
Jun 05, 2020
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Miscellaneous renamings in FilenameUtils
PiperOrigin-RevId: 314723830
parent
3474c39c
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
207 additions
and
250 deletions
library/common/src/main/java/com/google/android/exoplayer2/util/FileTypes.java
library/common/src/main/java/com/google/android/exoplayer2/util/FilenameUtil.java
library/common/src/test/java/com/google/android/exoplayer2/util/FilenameUtilTest.java → library/common/src/test/java/com/google/android/exoplayer2/util/FileTypesTest.java
library/extractor/src/main/java/com/google/android/exoplayer2/extractor/DefaultExtractorsFactory.java
library/hls/src/main/java/com/google/android/exoplayer2/source/hls/DefaultHlsExtractorFactory.java
library/common/src/main/java/com/google/android/exoplayer2/util/FileTypes.java
0 → 100644
View file @
12a93517
/*
* Copyright 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
.
util
;
import
android.net.Uri
;
import
androidx.annotation.IntDef
;
import
java.lang.annotation.Documented
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
/** Defines common file type constants and helper methods. */
public
final
class
FileTypes
{
/**
* File types. One of {@link #UNKNOWN}, {@link #AC3}, {@link #AC4}, {@link #ADTS}, {@link #AMR},
* {@link #FLAC}, {@link #FLV}, {@link #MATROSKA}, {@link #MP3}, {@link #MP4}, {@link #OGG},
* {@link #PS}, {@link #TS}, {@link #WAV} and {@link #WEBVTT}.
*/
@Documented
@Retention
(
RetentionPolicy
.
SOURCE
)
@IntDef
({
UNKNOWN
,
AC3
,
AC4
,
ADTS
,
AMR
,
FLAC
,
FLV
,
MATROSKA
,
MP3
,
MP4
,
OGG
,
PS
,
TS
,
WAV
,
WEBVTT
})
public
@interface
Type
{}
/** Unknown file type. */
public
static
final
int
UNKNOWN
=
-
1
;
/** File type for the AC-3 and E-AC-3 formats. */
public
static
final
int
AC3
=
0
;
/** File type for the AC-4 format. */
public
static
final
int
AC4
=
1
;
/** File type for the ADTS format. */
public
static
final
int
ADTS
=
2
;
/** File type for the AMR format. */
public
static
final
int
AMR
=
3
;
/** File type for the FLAC format. */
public
static
final
int
FLAC
=
4
;
/** File type for the FLV format. */
public
static
final
int
FLV
=
5
;
/** File type for the Matroska and WebM formats. */
public
static
final
int
MATROSKA
=
6
;
/** File type for the MP3 format. */
public
static
final
int
MP3
=
7
;
/** File type for the MP4 format. */
public
static
final
int
MP4
=
8
;
/** File type for the Ogg format. */
public
static
final
int
OGG
=
9
;
/** File type for the MPEG-PS format. */
public
static
final
int
PS
=
10
;
/** File type for the MPEG-TS format. */
public
static
final
int
TS
=
11
;
/** File type for the WAV format. */
public
static
final
int
WAV
=
12
;
/** File type for the WebVTT format. */
public
static
final
int
WEBVTT
=
13
;
private
static
final
String
EXTENSION_AC3
=
".ac3"
;
private
static
final
String
EXTENSION_EC3
=
".ec3"
;
private
static
final
String
EXTENSION_AC4
=
".ac4"
;
private
static
final
String
EXTENSION_ADTS
=
".adts"
;
private
static
final
String
EXTENSION_AAC
=
".aac"
;
private
static
final
String
EXTENSION_AMR
=
".amr"
;
private
static
final
String
EXTENSION_FLAC
=
".flac"
;
private
static
final
String
EXTENSION_FLV
=
".flv"
;
private
static
final
String
EXTENSION_PREFIX_MK
=
".mk"
;
private
static
final
String
EXTENSION_WEBM
=
".webm"
;
private
static
final
String
EXTENSION_PREFIX_OG
=
".og"
;
private
static
final
String
EXTENSION_OPUS
=
".opus"
;
private
static
final
String
EXTENSION_MP3
=
".mp3"
;
private
static
final
String
EXTENSION_MP4
=
".mp4"
;
private
static
final
String
EXTENSION_PREFIX_M4
=
".m4"
;
private
static
final
String
EXTENSION_PREFIX_MP4
=
".mp4"
;
private
static
final
String
EXTENSION_PREFIX_CMF
=
".cmf"
;
private
static
final
String
EXTENSION_PS
=
".ps"
;
private
static
final
String
EXTENSION_MPEG
=
".mpeg"
;
private
static
final
String
EXTENSION_MPG
=
".mpg"
;
private
static
final
String
EXTENSION_M2P
=
".m2p"
;
private
static
final
String
EXTENSION_TS
=
".ts"
;
private
static
final
String
EXTENSION_PREFIX_TS
=
".ts"
;
private
static
final
String
EXTENSION_WAV
=
".wav"
;
private
static
final
String
EXTENSION_WAVE
=
".wave"
;
private
static
final
String
EXTENSION_VTT
=
".vtt"
;
private
static
final
String
EXTENSION_WEBVTT
=
".webvtt"
;
private
FileTypes
()
{}
/**
* Returns the {@link Type} corresponding to the filename extension of the provided {@link Uri}.
* The filename is considered to be the last segment of the {@link Uri} path.
*/
@FileTypes
.
Type
public
static
int
getFormatFromExtension
(
Uri
uri
)
{
String
filename
=
uri
.
getLastPathSegment
();
if
(
filename
==
null
)
{
return
FileTypes
.
UNKNOWN
;
}
else
if
(
filename
.
endsWith
(
EXTENSION_AC3
)
||
filename
.
endsWith
(
EXTENSION_EC3
))
{
return
FileTypes
.
AC3
;
}
else
if
(
filename
.
endsWith
(
EXTENSION_AC4
))
{
return
FileTypes
.
AC4
;
}
else
if
(
filename
.
endsWith
(
EXTENSION_ADTS
)
||
filename
.
endsWith
(
EXTENSION_AAC
))
{
return
FileTypes
.
ADTS
;
}
else
if
(
filename
.
endsWith
(
EXTENSION_AMR
))
{
return
FileTypes
.
AMR
;
}
else
if
(
filename
.
endsWith
(
EXTENSION_FLAC
))
{
return
FileTypes
.
FLAC
;
}
else
if
(
filename
.
endsWith
(
EXTENSION_FLV
))
{
return
FileTypes
.
FLV
;
}
else
if
(
filename
.
startsWith
(
EXTENSION_PREFIX_MK
,
/* toffset= */
filename
.
length
()
-
(
EXTENSION_PREFIX_MK
.
length
()
+
1
))
||
filename
.
endsWith
(
EXTENSION_WEBM
))
{
return
FileTypes
.
MATROSKA
;
}
else
if
(
filename
.
endsWith
(
EXTENSION_MP3
))
{
return
FileTypes
.
MP3
;
}
else
if
(
filename
.
endsWith
(
EXTENSION_MP4
)
||
filename
.
startsWith
(
EXTENSION_PREFIX_M4
,
/* toffset= */
filename
.
length
()
-
(
EXTENSION_PREFIX_M4
.
length
()
+
1
))
||
filename
.
startsWith
(
EXTENSION_PREFIX_MP4
,
/* toffset= */
filename
.
length
()
-
(
EXTENSION_PREFIX_MP4
.
length
()
+
1
))
||
filename
.
startsWith
(
EXTENSION_PREFIX_CMF
,
/* toffset= */
filename
.
length
()
-
(
EXTENSION_PREFIX_CMF
.
length
()
+
1
)))
{
return
FileTypes
.
MP4
;
}
else
if
(
filename
.
startsWith
(
EXTENSION_PREFIX_OG
,
/* toffset= */
filename
.
length
()
-
(
EXTENSION_PREFIX_OG
.
length
()
+
1
))
||
filename
.
endsWith
(
EXTENSION_OPUS
))
{
return
FileTypes
.
OGG
;
}
else
if
(
filename
.
endsWith
(
EXTENSION_PS
)
||
filename
.
endsWith
(
EXTENSION_MPEG
)
||
filename
.
endsWith
(
EXTENSION_MPG
)
||
filename
.
endsWith
(
EXTENSION_M2P
))
{
return
FileTypes
.
PS
;
}
else
if
(
filename
.
endsWith
(
EXTENSION_TS
)
||
filename
.
startsWith
(
EXTENSION_PREFIX_TS
,
/* toffset= */
filename
.
length
()
-
(
EXTENSION_PREFIX_TS
.
length
()
+
1
)))
{
return
FileTypes
.
TS
;
}
else
if
(
filename
.
endsWith
(
EXTENSION_WAV
)
||
filename
.
endsWith
(
EXTENSION_WAVE
))
{
return
FileTypes
.
WAV
;
}
else
if
(
filename
.
endsWith
(
EXTENSION_VTT
)
||
filename
.
endsWith
(
EXTENSION_WEBVTT
))
{
return
FileTypes
.
WEBVTT
;
}
else
{
return
FileTypes
.
UNKNOWN
;
}
}
}
library/common/src/main/java/com/google/android/exoplayer2/util/FilenameUtil.java
deleted
100644 → 0
View file @
3474c39c
/*
* Copyright 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
.
util
;
import
android.net.Uri
;
import
androidx.annotation.IntDef
;
import
java.lang.annotation.Documented
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
/** Filename related utility methods. */
public
final
class
FilenameUtil
{
/**
* File formats. One of {@link #FILE_FORMAT_UNKNOWN}, {@link #FILE_FORMAT_AC3}, {@link
* #FILE_FORMAT_AC4}, {@link #FILE_FORMAT_ADTS}, {@link #FILE_FORMAT_AMR}, {@link
* #FILE_FORMAT_FLAC}, {@link #FILE_FORMAT_FLV}, {@link #FILE_FORMAT_MATROSKA}, {@link
* #FILE_FORMAT_MP3}, {@link #FILE_FORMAT_MP4}, {@link #FILE_FORMAT_OGG}, {@link #FILE_FORMAT_PS},
* {@link #FILE_FORMAT_TS}, {@link #FILE_FORMAT_WAV} and {@link #FILE_FORMAT_WEBVTT}.
*/
@Documented
@Retention
(
RetentionPolicy
.
SOURCE
)
@IntDef
({
FILE_FORMAT_UNKNOWN
,
FILE_FORMAT_AC3
,
FILE_FORMAT_AC4
,
FILE_FORMAT_ADTS
,
FILE_FORMAT_AMR
,
FILE_FORMAT_FLAC
,
FILE_FORMAT_FLV
,
FILE_FORMAT_MATROSKA
,
FILE_FORMAT_MP3
,
FILE_FORMAT_MP4
,
FILE_FORMAT_OGG
,
FILE_FORMAT_PS
,
FILE_FORMAT_TS
,
FILE_FORMAT_WAV
,
FILE_FORMAT_WEBVTT
})
public
@interface
FileFormat
{}
/** Unknown file format. */
public
static
final
int
FILE_FORMAT_UNKNOWN
=
-
1
;
/** File format for AC-3 and E-AC-3. */
public
static
final
int
FILE_FORMAT_AC3
=
0
;
/** File format for AC-4. */
public
static
final
int
FILE_FORMAT_AC4
=
1
;
/** File format for ADTS. */
public
static
final
int
FILE_FORMAT_ADTS
=
2
;
/** File format for AMR. */
public
static
final
int
FILE_FORMAT_AMR
=
3
;
/** File format for FLAC. */
public
static
final
int
FILE_FORMAT_FLAC
=
4
;
/** File format for FLV. */
public
static
final
int
FILE_FORMAT_FLV
=
5
;
/** File format for Matroska and WebM. */
public
static
final
int
FILE_FORMAT_MATROSKA
=
6
;
/** File format for MP3. */
public
static
final
int
FILE_FORMAT_MP3
=
7
;
/** File format for MP4. */
public
static
final
int
FILE_FORMAT_MP4
=
8
;
/** File format for Ogg. */
public
static
final
int
FILE_FORMAT_OGG
=
9
;
/** File format for MPEG-PS. */
public
static
final
int
FILE_FORMAT_PS
=
10
;
/** File format for MPEG-TS. */
public
static
final
int
FILE_FORMAT_TS
=
11
;
/** File format for WAV. */
public
static
final
int
FILE_FORMAT_WAV
=
12
;
/** File format for WebVTT. */
public
static
final
int
FILE_FORMAT_WEBVTT
=
13
;
private
static
final
String
FILE_EXTENSION_AC3
=
".ac3"
;
private
static
final
String
FILE_EXTENSION_EC3
=
".ec3"
;
private
static
final
String
FILE_EXTENSION_AC4
=
".ac4"
;
private
static
final
String
FILE_EXTENSION_ADTS
=
".adts"
;
private
static
final
String
FILE_EXTENSION_AAC
=
".aac"
;
private
static
final
String
FILE_EXTENSION_AMR
=
".amr"
;
private
static
final
String
FILE_EXTENSION_FLAC
=
".flac"
;
private
static
final
String
FILE_EXTENSION_FLV
=
".flv"
;
private
static
final
String
FILE_EXTENSION_PREFIX_MK
=
".mk"
;
private
static
final
String
FILE_EXTENSION_WEBM
=
".webm"
;
private
static
final
String
FILE_EXTENSION_PREFIX_OG
=
".og"
;
private
static
final
String
FILE_EXTENSION_OPUS
=
".opus"
;
private
static
final
String
FILE_EXTENSION_MP3
=
".mp3"
;
private
static
final
String
FILE_EXTENSION_MP4
=
".mp4"
;
private
static
final
String
FILE_EXTENSION_PREFIX_M4
=
".m4"
;
private
static
final
String
FILE_EXTENSION_PREFIX_MP4
=
".mp4"
;
private
static
final
String
FILE_EXTENSION_PREFIX_CMF
=
".cmf"
;
private
static
final
String
FILE_EXTENSION_PS
=
".ps"
;
private
static
final
String
FILE_EXTENSION_MPEG
=
".mpeg"
;
private
static
final
String
FILE_EXTENSION_MPG
=
".mpg"
;
private
static
final
String
FILE_EXTENSION_M2P
=
".m2p"
;
private
static
final
String
FILE_EXTENSION_TS
=
".ts"
;
private
static
final
String
FILE_EXTENSION_PREFIX_TS
=
".ts"
;
private
static
final
String
FILE_EXTENSION_WAV
=
".wav"
;
private
static
final
String
FILE_EXTENSION_WAVE
=
".wave"
;
private
static
final
String
FILE_EXTENSION_VTT
=
".vtt"
;
private
static
final
String
FILE_EXTENSION_WEBVTT
=
".webvtt"
;
private
FilenameUtil
()
{}
/**
* Returns the {@link FileFormat} corresponding to the filename extension of the provided {@link
* Uri}. The filename is considered to be the last segment of the {@link Uri} path.
*/
@FileFormat
public
static
int
getFormatFromExtension
(
Uri
uri
)
{
String
filename
=
uri
.
getLastPathSegment
();
if
(
filename
==
null
)
{
return
FILE_FORMAT_UNKNOWN
;
}
else
if
(
filename
.
endsWith
(
FILE_EXTENSION_AC3
)
||
filename
.
endsWith
(
FILE_EXTENSION_EC3
))
{
return
FILE_FORMAT_AC3
;
}
else
if
(
filename
.
endsWith
(
FILE_EXTENSION_AC4
))
{
return
FILE_FORMAT_AC4
;
}
else
if
(
filename
.
endsWith
(
FILE_EXTENSION_ADTS
)
||
filename
.
endsWith
(
FILE_EXTENSION_AAC
))
{
return
FILE_FORMAT_ADTS
;
}
else
if
(
filename
.
endsWith
(
FILE_EXTENSION_AMR
))
{
return
FILE_FORMAT_AMR
;
}
else
if
(
filename
.
endsWith
(
FILE_EXTENSION_FLAC
))
{
return
FILE_FORMAT_FLAC
;
}
else
if
(
filename
.
endsWith
(
FILE_EXTENSION_FLV
))
{
return
FILE_FORMAT_FLV
;
}
else
if
(
filename
.
startsWith
(
FILE_EXTENSION_PREFIX_MK
,
/* toffset= */
filename
.
length
()
-
(
FILE_EXTENSION_PREFIX_MK
.
length
()
+
1
))
||
filename
.
endsWith
(
FILE_EXTENSION_WEBM
))
{
return
FILE_FORMAT_MATROSKA
;
}
else
if
(
filename
.
endsWith
(
FILE_EXTENSION_MP3
))
{
return
FILE_FORMAT_MP3
;
}
else
if
(
filename
.
endsWith
(
FILE_EXTENSION_MP4
)
||
filename
.
startsWith
(
FILE_EXTENSION_PREFIX_M4
,
/* toffset= */
filename
.
length
()
-
(
FILE_EXTENSION_PREFIX_M4
.
length
()
+
1
))
||
filename
.
startsWith
(
FILE_EXTENSION_PREFIX_MP4
,
/* toffset= */
filename
.
length
()
-
(
FILE_EXTENSION_PREFIX_MP4
.
length
()
+
1
))
||
filename
.
startsWith
(
FILE_EXTENSION_PREFIX_CMF
,
/* toffset= */
filename
.
length
()
-
(
FILE_EXTENSION_PREFIX_CMF
.
length
()
+
1
)))
{
return
FILE_FORMAT_MP4
;
}
else
if
(
filename
.
startsWith
(
FILE_EXTENSION_PREFIX_OG
,
/* toffset= */
filename
.
length
()
-
(
FILE_EXTENSION_PREFIX_OG
.
length
()
+
1
))
||
filename
.
endsWith
(
FILE_EXTENSION_OPUS
))
{
return
FILE_FORMAT_OGG
;
}
else
if
(
filename
.
endsWith
(
FILE_EXTENSION_PS
)
||
filename
.
endsWith
(
FILE_EXTENSION_MPEG
)
||
filename
.
endsWith
(
FILE_EXTENSION_MPG
)
||
filename
.
endsWith
(
FILE_EXTENSION_M2P
))
{
return
FILE_FORMAT_PS
;
}
else
if
(
filename
.
endsWith
(
FILE_EXTENSION_TS
)
||
filename
.
startsWith
(
FILE_EXTENSION_PREFIX_TS
,
/* toffset= */
filename
.
length
()
-
(
FILE_EXTENSION_PREFIX_TS
.
length
()
+
1
)))
{
return
FILE_FORMAT_TS
;
}
else
if
(
filename
.
endsWith
(
FILE_EXTENSION_WAV
)
||
filename
.
endsWith
(
FILE_EXTENSION_WAVE
))
{
return
FILE_FORMAT_WAV
;
}
else
if
(
filename
.
endsWith
(
FILE_EXTENSION_VTT
)
||
filename
.
endsWith
(
FILE_EXTENSION_WEBVTT
))
{
return
FILE_FORMAT_WEBVTT
;
}
else
{
return
FILE_FORMAT_UNKNOWN
;
}
}
}
library/common/src/test/java/com/google/android/exoplayer2/util/File
nameUtil
Test.java
→
library/common/src/test/java/com/google/android/exoplayer2/util/File
Types
Test.java
View file @
12a93517
...
...
@@ -15,10 +15,7 @@
*/
package
com
.
google
.
android
.
exoplayer2
.
util
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FilenameUtil
.
FILE_FORMAT_MATROSKA
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FilenameUtil
.
FILE_FORMAT_MP3
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FilenameUtil
.
FILE_FORMAT_UNKNOWN
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FilenameUtil
.
getFormatFromExtension
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FileTypes
.
getFormatFromExtension
;
import
static
com
.
google
.
common
.
truth
.
Truth
.
assertThat
;
import
android.net.Uri
;
...
...
@@ -26,24 +23,23 @@ import androidx.test.ext.junit.runners.AndroidJUnit4;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
/** Tests for {@link File
nameUtil
Test}. */
/** Tests for {@link File
Types
Test}. */
@RunWith
(
AndroidJUnit4
.
class
)
public
class
File
nameUtil
Test
{
public
class
File
Types
Test
{
@Test
public
void
getFormatFromExtension_withExtension_returnsExpectedFormat
()
{
assertThat
(
getFormatFromExtension
(
Uri
.
parse
(
"filename.mp3"
))).
isEqualTo
(
F
ILE_FORMAT_
MP3
);
assertThat
(
getFormatFromExtension
(
Uri
.
parse
(
"filename.mp3"
))).
isEqualTo
(
F
ileTypes
.
MP3
);
}
@Test
public
void
getFormatFromExtension_withExtensionPrefix_returnsExpectedFormat
()
{
assertThat
(
getFormatFromExtension
(
Uri
.
parse
(
"filename.mka"
))).
isEqualTo
(
F
ILE_FORMAT_
MATROSKA
);
assertThat
(
getFormatFromExtension
(
Uri
.
parse
(
"filename.mka"
))).
isEqualTo
(
F
ileTypes
.
MATROSKA
);
}
@Test
public
void
getFormatFromExtension_withUnknownExtension_returnsUnknownFormat
()
{
assertThat
(
getFormatFromExtension
(
Uri
.
parse
(
"filename.unknown"
)))
.
isEqualTo
(
FILE_FORMAT_UNKNOWN
);
assertThat
(
getFormatFromExtension
(
Uri
.
parse
(
"filename.unknown"
))).
isEqualTo
(
FileTypes
.
UNKNOWN
);
}
@Test
...
...
@@ -51,11 +47,11 @@ public class FilenameUtilTest {
assertThat
(
getFormatFromExtension
(
Uri
.
parse
(
"http://www.example.com/filename.mp3?query=myquery#fragment"
)))
.
isEqualTo
(
F
ILE_FORMAT_
MP3
);
.
isEqualTo
(
F
ileTypes
.
MP3
);
}
@Test
public
void
getFormatFromExtension_withNullFilename_returnsUnknownFormat
()
{
assertThat
(
getFormatFromExtension
(
Uri
.
EMPTY
)).
isEqualTo
(
F
ILE_FORMAT_
UNKNOWN
);
assertThat
(
getFormatFromExtension
(
Uri
.
EMPTY
)).
isEqualTo
(
F
ileTypes
.
UNKNOWN
);
}
}
library/extractor/src/main/java/com/google/android/exoplayer2/extractor/DefaultExtractorsFactory.java
View file @
12a93517
...
...
@@ -15,20 +15,7 @@
*/
package
com
.
google
.
android
.
exoplayer2
.
extractor
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FilenameUtil
.
FILE_FORMAT_AC3
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FilenameUtil
.
FILE_FORMAT_AC4
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FilenameUtil
.
FILE_FORMAT_ADTS
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FilenameUtil
.
FILE_FORMAT_AMR
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FilenameUtil
.
FILE_FORMAT_FLAC
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FilenameUtil
.
FILE_FORMAT_FLV
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FilenameUtil
.
FILE_FORMAT_MATROSKA
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FilenameUtil
.
FILE_FORMAT_MP3
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FilenameUtil
.
FILE_FORMAT_MP4
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FilenameUtil
.
FILE_FORMAT_OGG
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FilenameUtil
.
FILE_FORMAT_PS
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FilenameUtil
.
FILE_FORMAT_TS
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FilenameUtil
.
FILE_FORMAT_WAV
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FilenameUtil
.
getFormatFromExtension
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FileTypes
.
getFormatFromExtension
;
import
android.net.Uri
;
import
androidx.annotation.Nullable
;
...
...
@@ -48,7 +35,7 @@ import com.google.android.exoplayer2.extractor.ts.PsExtractor;
import
com.google.android.exoplayer2.extractor.ts.TsExtractor
;
import
com.google.android.exoplayer2.extractor.ts.TsPayloadReader
;
import
com.google.android.exoplayer2.extractor.wav.WavExtractor
;
import
com.google.android.exoplayer2.util.File
nameUtil
;
import
com.google.android.exoplayer2.util.File
Types
;
import
com.google.android.exoplayer2.util.TimestampAdjuster
;
import
java.lang.reflect.Constructor
;
import
java.util.ArrayList
;
...
...
@@ -86,19 +73,19 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory {
// https://docs.google.com/document/d/1w2mKaWMxfz2Ei8-LdxqbPs1VLe_oudB-eryXXw9OvQQ.
private
static
final
int
[]
DEFAULT_EXTRACTOR_ORDER
=
new
int
[]
{
F
ILE_FORMAT_
FLV
,
F
ILE_FORMAT_
FLAC
,
F
ILE_FORMAT_
WAV
,
F
ILE_FORMAT_
MP4
,
F
ILE_FORMAT_
AMR
,
F
ILE_FORMAT_
PS
,
F
ILE_FORMAT_
OGG
,
F
ILE_FORMAT_
TS
,
F
ILE_FORMAT_
MATROSKA
,
F
ILE_FORMAT_
ADTS
,
F
ILE_FORMAT_
AC3
,
F
ILE_FORMAT_
AC4
,
F
ILE_FORMAT_
MP3
,
F
ileTypes
.
FLV
,
F
ileTypes
.
FLAC
,
F
ileTypes
.
WAV
,
F
ileTypes
.
MP4
,
F
ileTypes
.
AMR
,
F
ileTypes
.
PS
,
F
ileTypes
.
OGG
,
F
ileTypes
.
TS
,
F
ileTypes
.
MATROSKA
,
F
ileTypes
.
ADTS
,
F
ileTypes
.
AC3
,
F
ileTypes
.
AC4
,
F
ileTypes
.
MP3
,
};
@Nullable
...
...
@@ -285,7 +272,7 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory {
public
synchronized
Extractor
[]
createExtractors
(
Uri
uri
)
{
List
<
Extractor
>
extractors
=
new
ArrayList
<>(
/* initialCapacity= */
14
);
@File
nameUtil
.
FileFormat
int
extensionFormat
=
getFormatFromExtension
(
uri
);
@File
Types
.
Type
int
extensionFormat
=
getFormatFromExtension
(
uri
);
addExtractorsForFormat
(
extensionFormat
,
extractors
);
for
(
int
format
:
DEFAULT_EXTRACTOR_ORDER
)
{
...
...
@@ -297,16 +284,15 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory {
return
extractors
.
toArray
(
new
Extractor
[
extractors
.
size
()]);
}
private
void
addExtractorsForFormat
(
@FilenameUtil
.
FileFormat
int
fileFormat
,
List
<
Extractor
>
extractors
)
{
private
void
addExtractorsForFormat
(
@FileTypes
.
Type
int
fileFormat
,
List
<
Extractor
>
extractors
)
{
switch
(
fileFormat
)
{
case
F
ILE_FORMAT_
AC3:
case
F
ileTypes
.
AC3
:
extractors
.
add
(
new
Ac3Extractor
());
break
;
case
F
ILE_FORMAT_
AC4:
case
F
ileTypes
.
AC4
:
extractors
.
add
(
new
Ac4Extractor
());
break
;
case
F
ILE_FORMAT_
ADTS:
case
F
ileTypes
.
ADTS
:
extractors
.
add
(
new
AdtsExtractor
(
adtsFlags
...
...
@@ -314,7 +300,7 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory {
?
AdtsExtractor
.
FLAG_ENABLE_CONSTANT_BITRATE_SEEKING
:
0
)));
break
;
case
F
ILE_FORMAT_
AMR:
case
F
ileTypes
.
AMR
:
extractors
.
add
(
new
AmrExtractor
(
amrFlags
...
...
@@ -322,7 +308,7 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory {
?
AmrExtractor
.
FLAG_ENABLE_CONSTANT_BITRATE_SEEKING
:
0
)));
break
;
case
F
ILE_FORMAT_
FLAC:
case
F
ileTypes
.
FLAC
:
if
(
FLAC_EXTENSION_EXTRACTOR_CONSTRUCTOR
!=
null
)
{
try
{
extractors
.
add
(
FLAC_EXTENSION_EXTRACTOR_CONSTRUCTOR
.
newInstance
());
...
...
@@ -334,13 +320,13 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory {
extractors
.
add
(
new
FlacExtractor
(
coreFlacFlags
));
}
break
;
case
F
ILE_FORMAT_
FLV:
case
F
ileTypes
.
FLV
:
extractors
.
add
(
new
FlvExtractor
());
break
;
case
F
ILE_FORMAT_
MATROSKA:
case
F
ileTypes
.
MATROSKA
:
extractors
.
add
(
new
MatroskaExtractor
(
matroskaFlags
));
break
;
case
F
ILE_FORMAT_
MP3:
case
F
ileTypes
.
MP3
:
extractors
.
add
(
new
Mp3Extractor
(
mp3Flags
...
...
@@ -348,20 +334,20 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory {
?
Mp3Extractor
.
FLAG_ENABLE_CONSTANT_BITRATE_SEEKING
:
0
)));
break
;
case
F
ILE_FORMAT_
MP4:
case
F
ileTypes
.
MP4
:
extractors
.
add
(
new
FragmentedMp4Extractor
(
fragmentedMp4Flags
));
extractors
.
add
(
new
Mp4Extractor
(
mp4Flags
));
break
;
case
F
ILE_FORMAT_
OGG:
case
F
ileTypes
.
OGG
:
extractors
.
add
(
new
OggExtractor
());
break
;
case
F
ILE_FORMAT_
PS:
case
F
ileTypes
.
PS
:
extractors
.
add
(
new
PsExtractor
());
break
;
case
F
ILE_FORMAT_
TS:
case
F
ileTypes
.
TS
:
extractors
.
add
(
new
TsExtractor
(
tsMode
,
tsFlags
));
break
;
case
F
ILE_FORMAT_
WAV:
case
F
ileTypes
.
WAV
:
extractors
.
add
(
new
WavExtractor
());
break
;
default
:
...
...
library/hls/src/main/java/com/google/android/exoplayer2/source/hls/DefaultHlsExtractorFactory.java
View file @
12a93517
...
...
@@ -15,14 +15,7 @@
*/
package
com
.
google
.
android
.
exoplayer2
.
source
.
hls
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FilenameUtil
.
FILE_FORMAT_AC3
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FilenameUtil
.
FILE_FORMAT_AC4
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FilenameUtil
.
FILE_FORMAT_ADTS
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FilenameUtil
.
FILE_FORMAT_MP3
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FilenameUtil
.
FILE_FORMAT_MP4
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FilenameUtil
.
FILE_FORMAT_TS
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FilenameUtil
.
FILE_FORMAT_WEBVTT
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FilenameUtil
.
getFormatFromExtension
;
import
static
com
.
google
.
android
.
exoplayer2
.
util
.
FileTypes
.
getFormatFromExtension
;
import
android.net.Uri
;
import
android.text.TextUtils
;
...
...
@@ -39,7 +32,7 @@ import com.google.android.exoplayer2.extractor.ts.DefaultTsPayloadReaderFactory;
import
com.google.android.exoplayer2.extractor.ts.TsExtractor
;
import
com.google.android.exoplayer2.metadata.Metadata
;
import
com.google.android.exoplayer2.util.Assertions
;
import
com.google.android.exoplayer2.util.File
nameUtil
;
import
com.google.android.exoplayer2.util.File
Types
;
import
com.google.android.exoplayer2.util.MimeTypes
;
import
com.google.android.exoplayer2.util.TimestampAdjuster
;
import
java.io.EOFException
;
...
...
@@ -195,21 +188,21 @@ public final class DefaultHlsExtractorFactory implements HlsExtractorFactory {
if
(
MimeTypes
.
TEXT_VTT
.
equals
(
format
.
sampleMimeType
))
{
return
new
WebvttExtractor
(
format
.
language
,
timestampAdjuster
);
}
@File
nameUtil
.
FileFormat
int
fileFormat
=
getFormatFromExtension
(
uri
);
@File
Types
.
Type
int
fileFormat
=
getFormatFromExtension
(
uri
);
switch
(
fileFormat
)
{
case
F
ILE_FORMAT_
WEBVTT:
case
F
ileTypes
.
WEBVTT
:
return
new
WebvttExtractor
(
format
.
language
,
timestampAdjuster
);
case
F
ILE_FORMAT_
ADTS:
case
F
ileTypes
.
ADTS
:
return
new
AdtsExtractor
();
case
F
ILE_FORMAT_
AC3:
case
F
ileTypes
.
AC3
:
return
new
Ac3Extractor
();
case
F
ILE_FORMAT_
AC4:
case
F
ileTypes
.
AC4
:
return
new
Ac4Extractor
();
case
F
ILE_FORMAT_
MP3:
case
F
ileTypes
.
MP3
:
return
new
Mp3Extractor
(
/* flags= */
0
,
/* forcedFirstSampleTimestampUs= */
0
);
case
F
ILE_FORMAT_
MP4:
case
F
ileTypes
.
MP4
:
return
createFragmentedMp4Extractor
(
timestampAdjuster
,
format
,
muxedCaptionFormats
);
case
F
ILE_FORMAT_
TS:
case
F
ileTypes
.
TS
:
return
createTsExtractor
(
payloadReaderFactoryFlags
,
exposeCea608WhenMissingDeclarations
,
...
...
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