summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/Utils.cpp
diff options
context:
space:
mode:
authorVignesh Venkatasubramanian <vigneshv@google.com>2015-01-26 15:24:16 -0800
committerVignesh Venkatasubramanian <vigneshv@google.com>2015-01-26 15:24:16 -0800
commit9b4b24a46f3f76ebb186df8bc01c58848af02108 (patch)
tree2dbff5f9f0ab3334c1644f1c4ba5711350856f76 /media/libstagefright/Utils.cpp
parentdce27d0ebab31e82543bb777ed3eb04955cd18ff (diff)
downloadframeworks_av-9b4b24a46f3f76ebb186df8bc01c58848af02108.zip
frameworks_av-9b4b24a46f3f76ebb186df8bc01c58848af02108.tar.gz
frameworks_av-9b4b24a46f3f76ebb186df8bc01c58848af02108.tar.bz2
opus: Support for > 2 channels
This CL adds support for Opus streams that have more than 2 channels. It also fixes a bug where codec delay and seek preroll are not transferred during metadata to message conversion. Change-Id: Ia9748d4f7024368b2aa3c5cbd27f8016c859ea00
Diffstat (limited to 'media/libstagefright/Utils.cpp')
-rw-r--r--media/libstagefright/Utils.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/media/libstagefright/Utils.cpp b/media/libstagefright/Utils.cpp
index b3a79a0..c0be136 100644
--- a/media/libstagefright/Utils.cpp
+++ b/media/libstagefright/Utils.cpp
@@ -344,6 +344,28 @@ status_t convertMetaDataToMessage(
buffer->meta()->setInt32("csd", true);
buffer->meta()->setInt64("timeUs", 0);
msg->setBuffer("csd-0", buffer);
+
+ if (!meta->findData(kKeyOpusCodecDelay, &type, &data, &size)) {
+ return -EINVAL;
+ }
+
+ buffer = new ABuffer(size);
+ memcpy(buffer->data(), data, size);
+
+ buffer->meta()->setInt32("csd", true);
+ buffer->meta()->setInt64("timeUs", 0);
+ msg->setBuffer("csd-1", buffer);
+
+ if (!meta->findData(kKeyOpusSeekPreRoll, &type, &data, &size)) {
+ return -EINVAL;
+ }
+
+ buffer = new ABuffer(size);
+ memcpy(buffer->data(), data, size);
+
+ buffer->meta()->setInt32("csd", true);
+ buffer->meta()->setInt64("timeUs", 0);
+ msg->setBuffer("csd-2", buffer);
}
*format = msg;