1. 程式人生 > >I版本和J版本打給rtsp音視訊幀打時間戳公式

I版本和J版本打給rtsp音視訊幀打時間戳公式

status_t ARTPConnection::parseRTCP(StreamInfo *s, const sp &buffer) {     if (s->mNumRTCPPacketsReceived++ == 0) {         如果收到的是第一個rtcp包會給MyHandler傳送一個訊息,用於改變一些變數的狀態         sp notify = s->mNotifyMsg->dup();         notify->setInt32("first-rtcp", true);         notify->post();     }     const uint8_t *data = buffer->data();     size_t size = buffer->size();     while (size > 0) {         if (size < 8) {             // Too short to be a valid RTCP header             return -1;         }         if ((data[0] >> 6) != 2) {             // Unsupported version.             return -1;         }         size_t headerLength = 4 * (data[2] << 8 | data[3]) + 4;         if (size < headerLength) {             // Only received a partial packet?             return -1;         }         switch (data[1]) {             case 200:             {                 parseSR(s, data, headerLength);  如果是SR型別的包
                break;             }             case 203:             {                 parseBYE(s, data, headerLength);                 break;             }             default:             {                 ALOGW("Unknown RTCP packet type %u of size %d",                      (unsigned)data[1], headerLength);                 break;             }         }         data += headerLength;         size -= headerLength;     }     return OK; }