NuPlayer: add missing getSelectedTrack in CCDecoder
Test: cts
Bug: 119938763
Change-Id: I0dcc35ec65f0912d43aa5b0e3a797334d2581a78
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp
index 0784939..3922767 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayer.cpp
+++ b/media/libmediaplayerservice/nuplayer/NuPlayer.cpp
@@ -659,20 +659,31 @@
case kWhatGetSelectedTrack:
{
+ int32_t type32;
+ CHECK(msg->findInt32("type", (int32_t*)&type32));
+ media_track_type type = (media_track_type)type32;
+
+ size_t inbandTracks = 0;
status_t err = INVALID_OPERATION;
+ ssize_t selectedTrack = -1;
if (mSource != NULL) {
err = OK;
-
- int32_t type32;
- CHECK(msg->findInt32("type", (int32_t*)&type32));
- media_track_type type = (media_track_type)type32;
- ssize_t selectedTrack = mSource->getSelectedTrack(type);
-
- Parcel* reply;
- CHECK(msg->findPointer("reply", (void**)&reply));
- reply->writeInt32(selectedTrack);
+ inbandTracks = mSource->getTrackCount();
+ selectedTrack = mSource->getSelectedTrack(type);
}
+ if (selectedTrack == -1 && mCCDecoder != NULL) {
+ err = OK;
+ selectedTrack = mCCDecoder->getSelectedTrack(type);
+ if (selectedTrack != -1) {
+ selectedTrack += inbandTracks;
+ }
+ }
+
+ Parcel* reply;
+ CHECK(msg->findPointer("reply", (void**)&reply));
+ reply->writeInt32(selectedTrack);
+
sp<AMessage> response = new AMessage;
response->setInt32("err", err);