Loading media/libstagefright/Utils.cpp +16 −1 Original line number Diff line number Diff line Loading @@ -1375,7 +1375,7 @@ void convertMessageToMetaData(const sp<AMessage> &msg, sp<MetaData> &meta) { } // 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; Loading @@ -1395,6 +1395,21 @@ void convertMessageToMetaData(const sp<AMessage> &msg, sp<MetaData> &meta) { 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()); } } } Loading media/libstagefright/webm/WebmElement.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -361,6 +361,15 @@ sp<WebmElement> WebmElement::VideoTrackEntry( 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)); Loading Loading
media/libstagefright/Utils.cpp +16 −1 Original line number Diff line number Diff line Loading @@ -1375,7 +1375,7 @@ void convertMessageToMetaData(const sp<AMessage> &msg, sp<MetaData> &meta) { } // 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; Loading @@ -1395,6 +1395,21 @@ void convertMessageToMetaData(const sp<AMessage> &msg, sp<MetaData> &meta) { 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()); } } } Loading
media/libstagefright/webm/WebmElement.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -361,6 +361,15 @@ sp<WebmElement> WebmElement::VideoTrackEntry( 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)); Loading