From 4670188eaa0019a3ad38b5143f8d2187fe669092 Mon Sep 17 00:00:00 2001 From: Robert Shih Date: Fri, 25 Jul 2014 14:14:34 -0700 Subject: [PATCH] GenericSource: start/stop tracks correctly on selection Change-Id: I10343151f930a4ab778a6d2574ab5165af2013ba --- media/libmediaplayerservice/nuplayer/GenericSource.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/media/libmediaplayerservice/nuplayer/GenericSource.cpp b/media/libmediaplayerservice/nuplayer/GenericSource.cpp index 4c6a59c627..0b09f58493 100644 --- a/media/libmediaplayerservice/nuplayer/GenericSource.cpp +++ b/media/libmediaplayerservice/nuplayer/GenericSource.cpp @@ -137,7 +137,6 @@ void NuPlayer::GenericSource::initFromDataSource( } if (track != NULL) { - CHECK_EQ(track->start(), (status_t)OK); mSources.push(track); int64_t durationUs; if (meta->findInt64(kKeyDuration, &durationUs)) { @@ -184,6 +183,7 @@ void NuPlayer::GenericSource::start() { ALOGI("start"); if (mAudioTrack.mSource != NULL) { + CHECK_EQ(mAudioTrack.mSource->start(), (status_t)OK); mAudioTrack.mPackets = new AnotherPacketSource(mAudioTrack.mSource->getFormat()); @@ -191,6 +191,7 @@ void NuPlayer::GenericSource::start() { } if (mVideoTrack.mSource != NULL) { + CHECK_EQ(mVideoTrack.mSource->start(), (status_t)OK); mVideoTrack.mPackets = new AnotherPacketSource(mVideoTrack.mSource->getFormat()); @@ -255,7 +256,11 @@ void NuPlayer::GenericSource::onMessageReceived(const sp &msg) { } + if (track->mSource != NULL) { + track->mSource->stop(); + } track->mSource = source; + track->mSource->start(); track->mIndex = trackIndex; status_t avail; @@ -529,6 +534,7 @@ status_t NuPlayer::GenericSource::selectTrack(size_t trackIndex, bool select) { if (track == NULL) { return INVALID_OPERATION; } + track->mSource->stop(); track->mSource = NULL; track->mPackets->clear(); return OK; @@ -545,7 +551,11 @@ status_t NuPlayer::GenericSource::selectTrack(size_t trackIndex, bool select) { return OK; } track->mIndex = trackIndex; + if (track->mSource != NULL) { + track->mSource->stop(); + } track->mSource = mSources.itemAt(trackIndex); + track->mSource->start(); if (track->mPackets == NULL) { track->mPackets = new AnotherPacketSource(track->mSource->getFormat()); } else { -- 2.11.0