summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Dong <jdong@google.com>2012-07-19 19:18:06 -0700
committerJames Dong <jdong@google.com>2012-07-20 15:28:25 -0700
commitc374dae535b83d9b499dd9fe8f9dabdb8b0ac9fd (patch)
tree9e854a53f611c1a6a08c7ac507037c9fcf49c3c9
parent33e6e35b03a726e35203e97550f32154c91d5f13 (diff)
Added a callback to signal when the rendering of the video frame just occurred
Change-Id: Ifbd78606ffc33483aecebf02cb18e0e52af9624d related-to-bug: 6851811
-rw-r--r--include/media/mediaplayer.h2
-rw-r--r--media/libstagefright/AwesomePlayer.cpp7
-rw-r--r--media/libstagefright/include/AwesomePlayer.h1
3 files changed, 10 insertions, 0 deletions
diff --git a/include/media/mediaplayer.h b/include/media/mediaplayer.h
index 1fad3833..f7cebc5f 100644
--- a/include/media/mediaplayer.h
+++ b/include/media/mediaplayer.h
@@ -99,6 +99,8 @@ enum media_info_type {
// The player was started because it was used as the next player for another
// player, which just completed playback
MEDIA_INFO_STARTED_AS_NEXT = 2,
+ // The player just pushed the very first video frame for rendering
+ MEDIA_INFO_RENDERING_START = 3,
// 7xx
// The video is too complex for the decoder: it can't decode frames fast
// enough. Possibly only the audio plays fine at this stage.
diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp
index 661d7cd5..664d5dd4 100644
--- a/media/libstagefright/AwesomePlayer.cpp
+++ b/media/libstagefright/AwesomePlayer.cpp
@@ -183,6 +183,7 @@ AwesomePlayer::AwesomePlayer()
: mQueueStarted(false),
mUIDValid(false),
mTimeSource(NULL),
+ mVideoRenderingStarted(false),
mVideoRendererIsPreview(false),
mAudioPlayer(NULL),
mDisplayWidth(0),
@@ -468,6 +469,7 @@ void AwesomePlayer::reset() {
}
void AwesomePlayer::reset_l() {
+ mVideoRenderingStarted = false;
mActiveAudioTrackIndex = -1;
mDisplayWidth = 0;
mDisplayHeight = 0;
@@ -1805,6 +1807,11 @@ void AwesomePlayer::onVideoEvent() {
if (mVideoRenderer != NULL) {
mSinceLastDropped++;
mVideoRenderer->render(mVideoBuffer);
+ if (!mVideoRenderingStarted) {
+ mVideoRenderingStarted = true;
+ notifyListener_l(MEDIA_INFO, MEDIA_INFO_RENDERING_START);
+ }
+
}
mVideoBuffer->release();
diff --git a/media/libstagefright/include/AwesomePlayer.h b/media/libstagefright/include/AwesomePlayer.h
index 68380a87..1422687d 100644
--- a/media/libstagefright/include/AwesomePlayer.h
+++ b/media/libstagefright/include/AwesomePlayer.h
@@ -166,6 +166,7 @@ private:
sp<MediaSource> mVideoTrack;
sp<MediaSource> mVideoSource;
sp<AwesomeRenderer> mVideoRenderer;
+ bool mVideoRenderingStarted;
bool mVideoRendererIsPreview;
ssize_t mActiveAudioTrackIndex;