Merge "stagefright: propagate vorbis, opus and vp9 csd to muxer" into nyc-dev
diff --git a/media/libstagefright/Utils.cpp b/media/libstagefright/Utils.cpp
index c343dee..4303d09 100644
--- a/media/libstagefright/Utils.cpp
+++ b/media/libstagefright/Utils.cpp
@@ -1375,7 +1375,7 @@
}
// reassemble the csd data into its original form
- sp<ABuffer> csd0;
+ sp<ABuffer> csd0, csd1, csd2;
if (msg->findBuffer("csd-0", &csd0)) {
if (mime == MEDIA_MIMETYPE_VIDEO_AVC) {
sp<ABuffer> csd1;
@@ -1395,6 +1395,21 @@
uint8_t hvcc[1024]; // that oughta be enough, right?
size_t outsize = reassembleHVCC(csd0, hvcc, 1024, 4);
meta->setData(kKeyHVCC, kKeyHVCC, hvcc, outsize);
+ } else if (mime == MEDIA_MIMETYPE_VIDEO_VP9) {
+ meta->setData(kKeyVp9CodecPrivate, 0, csd0->data(), csd0->size());
+ } else if (mime == MEDIA_MIMETYPE_AUDIO_OPUS) {
+ meta->setData(kKeyOpusHeader, 0, csd0->data(), csd0->size());
+ if (msg->findBuffer("csd-1", &csd1)) {
+ meta->setData(kKeyOpusCodecDelay, 0, csd1->data(), csd1->size());
+ }
+ if (msg->findBuffer("csd-2", &csd2)) {
+ meta->setData(kKeyOpusSeekPreRoll, 0, csd2->data(), csd2->size());
+ }
+ } else if (mime == MEDIA_MIMETYPE_AUDIO_VORBIS) {
+ meta->setData(kKeyVorbisInfo, 0, csd0->data(), csd0->size());
+ if (msg->findBuffer("csd-1", &csd1)) {
+ meta->setData(kKeyVorbisBooks, 0, csd1->data(), csd1->size());
+ }
}
}
diff --git a/media/libstagefright/webm/WebmElement.cpp b/media/libstagefright/webm/WebmElement.cpp
index 6a7da12..17fae06 100644
--- a/media/libstagefright/webm/WebmElement.cpp
+++ b/media/libstagefright/webm/WebmElement.cpp
@@ -361,6 +361,15 @@
kVideoType,
trackEntryFields);
+ // CSD
+ uint32_t type;
+ const void *data;
+ size_t size;
+ if (meta->findData(kKeyVp9CodecPrivate, &type, &data, &size)) {
+ sp<ABuffer> buf = new ABuffer((void *)data, size); // note: buf does not own data
+ trackEntryFields.push_back(new WebmBinary(kMkvCodecPrivate, buf));
+ }
+
List<sp<WebmElement> > videoInfo;
videoInfo.push_back(new WebmUnsigned(kMkvPixelWidth, width));
videoInfo.push_back(new WebmUnsigned(kMkvPixelHeight, height));