VT: Fixed an issue that CVO can not be parsed. am: 7bf2734afc am: bac2de1c22
Original change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1591119
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I13bd35db8c08e73e25d2853bd6b40df1dd475fef
diff --git a/media/libstagefright/rtsp/ARTPConnection.cpp b/media/libstagefright/rtsp/ARTPConnection.cpp
index 07f9dd3..97a9bbb 100644
--- a/media/libstagefright/rtsp/ARTPConnection.cpp
+++ b/media/libstagefright/rtsp/ARTPConnection.cpp
@@ -678,14 +678,14 @@
const uint8_t *extensionData = &data[payloadOffset];
size_t extensionLength =
- 4 * (extensionData[2] << 8 | extensionData[3]);
+ (4 * (extensionData[2] << 8 | extensionData[3])) + 4;
- if (size < payloadOffset + 4 + extensionLength) {
+ if (size < payloadOffset + extensionLength) {
return -1;
}
parseRTPExt(s, (const uint8_t *)extensionData, extensionLength, &cvoDegrees);
- payloadOffset += 4 + extensionLength;
+ payloadOffset += extensionLength;
}
uint32_t srcId = u32at(&data[8]);
@@ -699,8 +699,9 @@
meta->setInt32("rtp-time", rtpTime);
meta->setInt32("PT", data[1] & 0x7f);
meta->setInt32("M", data[1] >> 7);
- if (cvoDegrees >= 0)
+ if (cvoDegrees >= 0) {
meta->setInt32("cvo", cvoDegrees);
+ }
buffer->setInt32Data(u16at(&data[2]));
buffer->setRange(payloadOffset, size - payloadOffset);