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
4ebe046b
authored
Nov 18, 2021
by
tonihei
Committed by
Ian Baker
Nov 19, 2021
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Set LogSessionId on MediaParser for progressive playbacks.
PiperOrigin-RevId: 410766492
parent
21e659ef
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
46 additions
and
7 deletions
libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/MediaParserExtractorAdapter.java
libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/ProgressiveMediaExtractor.java
libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/ProgressiveMediaSource.java
libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/mediaparser/MediaParserUtil.java
libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/ProgressiveMediaPeriodTest.java
libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/MediaParserExtractorAdapter.java
View file @
4ebe046b
...
...
@@ -28,7 +28,10 @@ import androidx.annotation.RequiresApi;
import
androidx.media3.common.C
;
import
androidx.media3.common.DataReader
;
import
androidx.media3.common.util.UnstableApi
;
import
androidx.media3.common.util.Util
;
import
androidx.media3.exoplayer.analytics.PlayerId
;
import
androidx.media3.exoplayer.source.mediaparser.InputReaderAdapterV30
;
import
androidx.media3.exoplayer.source.mediaparser.MediaParserUtil
;
import
androidx.media3.exoplayer.source.mediaparser.OutputConsumerAdapterV30
;
import
androidx.media3.extractor.Extractor
;
import
androidx.media3.extractor.ExtractorOutput
;
...
...
@@ -54,7 +57,7 @@ public final class MediaParserExtractorAdapter implements ProgressiveMediaExtrac
private
String
parserName
;
@SuppressLint
(
"WrongConstant"
)
public
MediaParserExtractorAdapter
()
{
public
MediaParserExtractorAdapter
(
PlayerId
playerId
)
{
// TODO: Add support for injecting the desired extractor list.
outputConsumerAdapter
=
new
OutputConsumerAdapterV30
();
inputReaderAdapter
=
new
InputReaderAdapterV30
();
...
...
@@ -63,6 +66,9 @@ public final class MediaParserExtractorAdapter implements ProgressiveMediaExtrac
mediaParser
.
setParameter
(
PARAMETER_IN_BAND_CRYPTO_INFO
,
true
);
mediaParser
.
setParameter
(
PARAMETER_INCLUDE_SUPPLEMENTAL_DATA
,
true
);
parserName
=
MediaParser
.
PARSER_NAME_UNKNOWN
;
if
(
Util
.
SDK_INT
>=
31
)
{
MediaParserUtil
.
setLogSessionIdOnMediaParser
(
mediaParser
,
playerId
);
}
}
@Override
...
...
libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/ProgressiveMediaExtractor.java
View file @
4ebe046b
...
...
@@ -19,6 +19,7 @@ import android.net.Uri;
import
androidx.media3.common.C
;
import
androidx.media3.common.DataReader
;
import
androidx.media3.common.util.UnstableApi
;
import
androidx.media3.exoplayer.analytics.PlayerId
;
import
androidx.media3.extractor.Extractor
;
import
androidx.media3.extractor.ExtractorOutput
;
import
androidx.media3.extractor.PositionHolder
;
...
...
@@ -33,8 +34,12 @@ public interface ProgressiveMediaExtractor {
/** Creates {@link ProgressiveMediaExtractor} instances. */
interface
Factory
{
/** Returns a new {@link ProgressiveMediaExtractor} instance. */
ProgressiveMediaExtractor
createProgressiveMediaExtractor
();
/**
* Returns a new {@link ProgressiveMediaExtractor} instance.
*
* @param playerId The {@link PlayerId} of the player this extractor is used for.
*/
ProgressiveMediaExtractor
createProgressiveMediaExtractor
(
PlayerId
playerId
);
}
/**
...
...
libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/ProgressiveMediaSource.java
View file @
4ebe046b
...
...
@@ -79,7 +79,7 @@ public final class ProgressiveMediaSource extends BaseMediaSource
* Factory(dataSourceFactory, () -> new BundledExtractorsAdapter(extractorsFactory)}.
*/
public
Factory
(
DataSource
.
Factory
dataSourceFactory
,
ExtractorsFactory
extractorsFactory
)
{
this
(
dataSourceFactory
,
()
->
new
BundledExtractorsAdapter
(
extractorsFactory
));
this
(
dataSourceFactory
,
playerId
->
new
BundledExtractorsAdapter
(
extractorsFactory
));
}
/**
...
...
@@ -107,7 +107,7 @@ public final class ProgressiveMediaSource extends BaseMediaSource
@Deprecated
public
Factory
setExtractorsFactory
(
@Nullable
ExtractorsFactory
extractorsFactory
)
{
this
.
progressiveMediaExtractorFactory
=
()
->
playerId
->
new
BundledExtractorsAdapter
(
extractorsFactory
!=
null
?
extractorsFactory
:
new
DefaultExtractorsFactory
());
return
this
;
...
...
@@ -315,7 +315,7 @@ public final class ProgressiveMediaSource extends BaseMediaSource
return
new
ProgressiveMediaPeriod
(
localConfiguration
.
uri
,
dataSource
,
progressiveMediaExtractorFactory
.
createProgressiveMediaExtractor
(),
progressiveMediaExtractorFactory
.
createProgressiveMediaExtractor
(
getPlayerId
()
),
drmSessionManager
,
createDrmEventDispatcher
(
id
),
loadableLoadErrorHandlingPolicy
,
...
...
libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/mediaparser/MediaParserUtil.java
View file @
4ebe046b
...
...
@@ -17,8 +17,11 @@ package androidx.media3.exoplayer.source.mediaparser;
import
android.media.MediaFormat
;
import
android.media.MediaParser
;
import
android.media.metrics.LogSessionId
;
import
androidx.annotation.RequiresApi
;
import
androidx.media3.common.Format
;
import
androidx.media3.common.util.UnstableApi
;
import
androidx.media3.exoplayer.analytics.PlayerId
;
/**
* Miscellaneous constants and utility methods related to the {@link MediaParser} integration.
...
...
@@ -59,4 +62,27 @@ public final class MediaParserUtil {
}
return
mediaFormat
;
}
/**
* Calls {@link MediaParser#setLogSessionId(LogSessionId)}.
*
* @param mediaParser The {@link MediaParser} to call the method on.
* @param playerId The {@link PlayerId} to obtain the {@link LogSessionId} from.
*/
@RequiresApi
(
31
)
public
static
void
setLogSessionIdOnMediaParser
(
MediaParser
mediaParser
,
PlayerId
playerId
)
{
Api31
.
setLogSessionIdOnMediaParser
(
mediaParser
,
playerId
);
}
@RequiresApi
(
31
)
private
static
final
class
Api31
{
private
Api31
()
{}
public
static
void
setLogSessionIdOnMediaParser
(
MediaParser
mediaParser
,
PlayerId
playerId
)
{
LogSessionId
logSessionId
=
playerId
.
getLogSessionId
();
if
(!
logSessionId
.
equals
(
LogSessionId
.
LOG_SESSION_ID_NONE
))
{
mediaParser
.
setLogSessionId
(
logSessionId
);
}
}
}
}
libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/ProgressiveMediaPeriodTest.java
View file @
4ebe046b
...
...
@@ -21,6 +21,7 @@ import static com.google.common.truth.Truth.assertThat;
import
android.net.Uri
;
import
androidx.media3.common.C
;
import
androidx.media3.datasource.AssetDataSource
;
import
androidx.media3.exoplayer.analytics.PlayerId
;
import
androidx.media3.exoplayer.drm.DrmSessionEventListener
;
import
androidx.media3.exoplayer.drm.DrmSessionManager
;
import
androidx.media3.exoplayer.source.MediaSource.MediaPeriodId
;
...
...
@@ -48,7 +49,8 @@ public final class ProgressiveMediaPeriodTest {
@Test
public
void
prepareUsingMediaParser_updatesSourceInfoBeforeOnPreparedCallback
()
throws
TimeoutException
{
testExtractorsUpdatesSourceInfoBeforeOnPreparedCallback
(
new
MediaParserExtractorAdapter
());
testExtractorsUpdatesSourceInfoBeforeOnPreparedCallback
(
new
MediaParserExtractorAdapter
(
PlayerId
.
UNSET
));
}
private
static
void
testExtractorsUpdatesSourceInfoBeforeOnPreparedCallback
(
...
...
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