Define constants in IStreamListener in MediaKeys.h
Currently, constants in IStreamSource are being used in ATSParser while
they are separate entities. This defines those constants in MediaKeys.h
so that ATSParser can be used without depending on IStreamSource.
This removes libmedia dependency from libmpeg2extractor.
Test: build.
Bug: 67908537
Change-Id: I503a4cdb530825b1932463efae999d120b839e56
diff --git a/media/extractors/mpeg2/Android.bp b/media/extractors/mpeg2/Android.bp
index c6bb40d..8f70aee 100644
--- a/media/extractors/mpeg2/Android.bp
+++ b/media/extractors/mpeg2/Android.bp
@@ -20,7 +20,6 @@
"libcutils",
"libhidlbase",
"liblog",
- "libmedia", // Needed for IStreamListener
"libmediaextractor",
"libstagefright", // Needed for AnotherPacketSource and more
"libstagefright_foundation",
diff --git a/media/extractors/mpeg2/MPEG2TSExtractor.cpp b/media/extractors/mpeg2/MPEG2TSExtractor.cpp
index 4f61e16..fef4d30 100644
--- a/media/extractors/mpeg2/MPEG2TSExtractor.cpp
+++ b/media/extractors/mpeg2/MPEG2TSExtractor.cpp
@@ -29,6 +29,7 @@
#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/foundation/ALooper.h>
#include <media/stagefright/foundation/AUtils.h>
+#include <media/stagefright/foundation/MediaKeys.h>
#include <media/stagefright/MediaDefs.h>
#include <media/stagefright/MediaErrors.h>
#include <media/stagefright/MetaData.h>
@@ -560,7 +561,7 @@
status_t MPEG2TSExtractor::queueDiscontinuityForSeek(int64_t actualSeekTimeUs) {
// Signal discontinuity
sp<AMessage> extra(new AMessage);
- extra->setInt64(IStreamListener::kKeyMediaTimeUs, actualSeekTimeUs);
+ extra->setInt64(kATSParserKeyMediaTimeUs, actualSeekTimeUs);
mParser->signalDiscontinuity(ATSParser::DISCONTINUITY_TIME, extra);
// After discontinuity, impl should only have discontinuities
diff --git a/media/libmedia/IStreamSource.cpp b/media/libmedia/IStreamSource.cpp
index ba0a272..e11bc74 100644
--- a/media/libmedia/IStreamSource.cpp
+++ b/media/libmedia/IStreamSource.cpp
@@ -20,24 +20,13 @@
#include <media/IStreamSource.h>
#include <media/stagefright/foundation/AMessage.h>
+#include <media/stagefright/foundation/MediaKeys.h>
#include <binder/IMemory.h>
#include <binder/Parcel.h>
namespace android {
-// static
-const char *const IStreamListener::kKeyResumeAtPTS = "resume-at-PTS";
-
-// static
-const char *const IStreamListener::kKeyDiscontinuityMask = "discontinuity-mask";
-
-// static
-const char *const IStreamListener::kKeyMediaTimeUs = "media-time-us";
-
-// static
-const char *const IStreamListener::kKeyRecentMediaTimeUs = "recent-media-time-us";
-
enum {
// IStreamSource
SET_LISTENER = IBinder::FIRST_CALL_TRANSACTION,
diff --git a/media/libmedia/include/media/IStreamSource.h b/media/libmedia/include/media/IStreamSource.h
index 4a6aafd..c08c3e8 100644
--- a/media/libmedia/include/media/IStreamSource.h
+++ b/media/libmedia/include/media/IStreamSource.h
@@ -54,40 +54,6 @@
virtual void queueBuffer(size_t index, size_t size) = 0;
- // When signalling a discontinuity you can optionally
- // specify an int64_t PTS timestamp in "msg".
- // If present, rendering of data following the discontinuity
- // will be suppressed until media time reaches this timestamp.
- static const char *const kKeyResumeAtPTS;
-
- // When signalling a discontinuity you can optionally
- // specify the type(s) of discontinuity, i.e. if the
- // audio format has changed, the video format has changed,
- // time has jumped or any combination thereof.
- // To do so, include a non-zero int32_t value
- // under the key "kKeyDiscontinuityMask" when issuing the DISCONTINUITY
- // command.
- // If there is a change in audio/video format, The new logical stream
- // must start with proper codec initialization
- // information for playback to continue, i.e. SPS and PPS in the case
- // of AVC video etc.
- // If this key is not present, only a time discontinuity is assumed.
- // The value should be a bitmask of values from
- // ATSParser::DiscontinuityType.
- static const char *const kKeyDiscontinuityMask;
-
- // Optionally signalled as part of a discontinuity that includes
- // DISCONTINUITY_TIME. It indicates the media time (in us) to be associated
- // with the next PTS occuring in the stream. The value is of type int64_t.
- static const char *const kKeyMediaTimeUs;
-
- // Optionally signalled as part of a discontinuity that includes
- // DISCONTINUITY_TIME. It indicates the media time (in us) of a recent
- // sample from the same content, and is used as a hint for the parser to
- // handle PTS wraparound. This is required when a new parser is created
- // to continue parsing content from the same timeline.
- static const char *const kKeyRecentMediaTimeUs;
-
virtual void issueCommand(
Command cmd, bool synchronous, const sp<AMessage> &msg = NULL) = 0;
};
diff --git a/media/libmedia/nuplayer2/StreamingSource.cpp b/media/libmedia/nuplayer2/StreamingSource.cpp
index ed990c4..1c370b6 100644
--- a/media/libmedia/nuplayer2/StreamingSource.cpp
+++ b/media/libmedia/nuplayer2/StreamingSource.cpp
@@ -28,6 +28,7 @@
#include <media/stagefright/foundation/ABuffer.h>
#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/foundation/AMessage.h>
+#include <media/stagefright/foundation/MediaKeys.h>
#include <media/stagefright/MetaData.h>
#include <media/stagefright/Utils.h>
@@ -114,7 +115,7 @@
int32_t mask;
if (extra != NULL
&& extra->findInt32(
- IStreamListener::kKeyDiscontinuityMask, &mask)) {
+ kIStreamListenerKeyDiscontinuityMask, &mask)) {
if (mask == 0) {
ALOGE("Client specified an illegal discontinuity type.");
setError(ERROR_UNSUPPORTED);
@@ -142,7 +143,7 @@
int64_t mediaTimeUs;
memcpy(&mediaTimeUs, &buffer[2], sizeof(mediaTimeUs));
- extra->setInt64(IStreamListener::kKeyMediaTimeUs, mediaTimeUs);
+ extra->setInt64(kATSParserKeyMediaTimeUs, mediaTimeUs);
}
mTSParser->signalDiscontinuity(
diff --git a/media/libmediaplayerservice/nuplayer/StreamingSource.cpp b/media/libmediaplayerservice/nuplayer/StreamingSource.cpp
index 388ca20..b3da53f 100644
--- a/media/libmediaplayerservice/nuplayer/StreamingSource.cpp
+++ b/media/libmediaplayerservice/nuplayer/StreamingSource.cpp
@@ -28,6 +28,7 @@
#include <media/stagefright/foundation/ABuffer.h>
#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/foundation/AMessage.h>
+#include <media/stagefright/foundation/MediaKeys.h>
#include <media/stagefright/MetaData.h>
#include <media/stagefright/Utils.h>
@@ -114,7 +115,7 @@
int32_t mask;
if (extra != NULL
&& extra->findInt32(
- IStreamListener::kKeyDiscontinuityMask, &mask)) {
+ kIStreamListenerKeyDiscontinuityMask, &mask)) {
if (mask == 0) {
ALOGE("Client specified an illegal discontinuity type.");
setError(ERROR_UNSUPPORTED);
@@ -142,7 +143,7 @@
int64_t mediaTimeUs;
memcpy(&mediaTimeUs, &buffer[2], sizeof(mediaTimeUs));
- extra->setInt64(IStreamListener::kKeyMediaTimeUs, mediaTimeUs);
+ extra->setInt64(kATSParserKeyMediaTimeUs, mediaTimeUs);
}
mTSParser->signalDiscontinuity(
diff --git a/media/libstagefright/foundation/Android.bp b/media/libstagefright/foundation/Android.bp
index c087a27..df3e280 100644
--- a/media/libstagefright/foundation/Android.bp
+++ b/media/libstagefright/foundation/Android.bp
@@ -65,6 +65,7 @@
"MediaBuffer.cpp",
"MediaBufferGroup.cpp",
"MediaDefs.cpp",
+ "MediaKeys.cpp",
"MetaData.cpp",
"ParsedMessage.cpp",
"avc_utils.cpp",
diff --git a/media/libstagefright/foundation/MediaKeys.cpp b/media/libstagefright/foundation/MediaKeys.cpp
new file mode 100644
index 0000000..53920c9
--- /dev/null
+++ b/media/libstagefright/foundation/MediaKeys.cpp
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+#include <media/stagefright/foundation/MediaKeys.h>
+
+namespace android {
+
+const char *const kIStreamListenerKeyDiscontinuityMask = "discontinuity-mask";
+const char *const kATSParserKeyResumeAtPTS = "resume-at-PTS";
+const char *const kATSParserKeyMediaTimeUs = "media-time-us";
+const char *const kATSParserKeyRecentMediaTimeUs = "recent-media-time-us";
+
+} // namespace android
diff --git a/media/libstagefright/foundation/include/media/stagefright/foundation/MediaKeys.h b/media/libstagefright/foundation/include/media/stagefright/foundation/MediaKeys.h
new file mode 100644
index 0000000..db924bb
--- /dev/null
+++ b/media/libstagefright/foundation/include/media/stagefright/foundation/MediaKeys.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+#ifndef MEDIA_KEYS_H_
+
+#define MEDIA_KEYS_H_
+
+namespace android {
+
+// When signalling a discontinuity to IStreamListener you can optionally
+// specify the type(s) of discontinuity, i.e. if the audio format has changed,
+// the video format has changed, time has jumped or any combination thereof.
+// To do so, include a non-zero int32_t value under the key
+// "kIStreamListenerKeyDiscontinuityMask" when issuing the
+// IStreamListener::DISCONTINUITY command.
+// If there is a change in audio/video format, The new logical stream
+// must start with proper codec initialization
+// information for playback to continue, i.e. SPS and PPS in the case
+// of AVC video etc.
+// If this key is not present, only a time discontinuity is assumed.
+// The value should be a bitmask of values from
+// ATSParser::DiscontinuityType.
+extern const char *const kIStreamListenerKeyDiscontinuityMask;
+
+// When signalling a discontinuity to ATSParser you can optionally
+// specify an int64_t PTS timestamp in "extra".
+// If present, rendering of data following the discontinuity
+// will be suppressed until media time reaches this timestamp.
+extern const char *const kATSParserKeyResumeAtPTS;
+
+// When signalling a discontinuity to ATSParser you can optionally
+// specify an int64_t PTS timestamp in "extra".
+// It indicates the media time (in us) to be associated
+// with the next PTS occuring in the stream. The value is of type int64_t.
+extern const char *const kATSParserKeyMediaTimeUs;
+
+// When signalling a discontinuity to ATSParser you can optionally
+// specify an int64_t PTS timestamp in "extra".
+// It indicates the media time (in us) of a recent
+// sample from the same content, and is used as a hint for the parser to
+// handle PTS wraparound. This is required when a new parser is created
+// to continue parsing content from the same timeline.
+extern const char *const kATSParserKeyRecentMediaTimeUs;
+
+} // namespace android
+
+#endif // MEDIA_KEYS_H_
diff --git a/media/libstagefright/httplive/PlaylistFetcher.cpp b/media/libstagefright/httplive/PlaylistFetcher.cpp
index b46694b..b46d923 100644
--- a/media/libstagefright/httplive/PlaylistFetcher.cpp
+++ b/media/libstagefright/httplive/PlaylistFetcher.cpp
@@ -31,6 +31,7 @@
#include <media/stagefright/foundation/ABuffer.h>
#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/foundation/ByteUtils.h>
+#include <media/stagefright/foundation/MediaKeys.h>
#include <media/stagefright/foundation/avc_utils.h>
#include <media/stagefright/MediaDefs.h>
#include <media/stagefright/MetaData.h>
@@ -1693,12 +1694,12 @@
sp<AMessage> extra = new AMessage;
// Since we are using absolute timestamps, signal an offset of 0 to prevent
// ATSParser from skewing the timestamps of access units.
- extra->setInt64(IStreamListener::kKeyMediaTimeUs, 0);
+ extra->setInt64(kATSParserKeyMediaTimeUs, 0);
// When adapting, signal a recent media time to the parser,
// so that PTS wrap around is handled for the new variant.
if (mStartTimeUs >= 0 && !mStartTimeUsRelative) {
- extra->setInt64(IStreamListener::kKeyRecentMediaTimeUs, mStartTimeUs);
+ extra->setInt64(kATSParserKeyRecentMediaTimeUs, mStartTimeUs);
}
mTSParser->signalDiscontinuity(
diff --git a/media/libstagefright/mpeg2ts/ATSParser.cpp b/media/libstagefright/mpeg2ts/ATSParser.cpp
index cd60a6c..464ee90 100644
--- a/media/libstagefright/mpeg2ts/ATSParser.cpp
+++ b/media/libstagefright/mpeg2ts/ATSParser.cpp
@@ -29,6 +29,7 @@
#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/foundation/AMessage.h>
#include <media/stagefright/foundation/ByteUtils.h>
+#include <media/stagefright/foundation/MediaKeys.h>
#include <media/stagefright/foundation/avc_utils.h>
#include <media/stagefright/foundation/hexdump.h>
#include <media/stagefright/MediaDefs.h>
@@ -341,7 +342,7 @@
if ((type & DISCONTINUITY_TIME)
&& extra != NULL
&& extra->findInt64(
- IStreamListener::kKeyMediaTimeUs, &mediaTimeUs)) {
+ kATSParserKeyMediaTimeUs, &mediaTimeUs)) {
mFirstPTSValid = false;
}
@@ -1032,7 +1033,7 @@
uint64_t resumeAtPTS;
if (extra != NULL
&& extra->findInt64(
- IStreamListener::kKeyResumeAtPTS,
+ kATSParserKeyResumeAtPTS,
(int64_t *)&resumeAtPTS)) {
int64_t resumeAtMediaTimeUs =
mProgram->convertPTSToTimestamp(resumeAtPTS);
@@ -1694,12 +1695,12 @@
DiscontinuityType type, const sp<AMessage> &extra) {
int64_t mediaTimeUs;
if ((type & DISCONTINUITY_TIME) && extra != NULL) {
- if (extra->findInt64(IStreamListener::kKeyMediaTimeUs, &mediaTimeUs)) {
+ if (extra->findInt64(kATSParserKeyMediaTimeUs, &mediaTimeUs)) {
mAbsoluteTimeAnchorUs = mediaTimeUs;
}
if ((mFlags & TS_TIMESTAMPS_ARE_ABSOLUTE)
&& extra->findInt64(
- IStreamListener::kKeyRecentMediaTimeUs, &mediaTimeUs)) {
+ kATSParserKeyRecentMediaTimeUs, &mediaTimeUs)) {
if (mAbsoluteTimeAnchorUs >= 0ll) {
mediaTimeUs -= mAbsoluteTimeAnchorUs;
}