17a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber/* 27a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber * Copyright (C) 2010 The Android Open Source Project 37a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber * 47a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 57a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber * you may not use this file except in compliance with the License. 67a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber * You may obtain a copy of the License at 77a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber * 87a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 97a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber * 107a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber * Unless required by applicable law or agreed to in writing, software 117a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 127a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber * See the License for the specific language governing permissions and 147a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber * limitations under the License. 157a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber */ 167a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 177a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber#ifndef A_RTP_SOURCE_H_ 187a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 197a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber#define A_RTP_SOURCE_H_ 207a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 217a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber#include <stdint.h> 227a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 237a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber#include <media/stagefright/foundation/ABase.h> 247a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber#include <utils/List.h> 257a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber#include <utils/RefBase.h> 267a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 277a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Hubernamespace android { 287a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 297a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huberstruct ABuffer; 307a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huberstruct AMessage; 317a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huberstruct ARTPAssembler; 327a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huberstruct ASessionDescription; 337a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 347a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huberstruct ARTPSource : public RefBase { 357a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber ARTPSource( 367a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber uint32_t id, 377a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber const sp<ASessionDescription> &sessionDesc, size_t index, 387a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber const sp<AMessage> ¬ify); 397a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 407a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber void processRTPPacket(const sp<ABuffer> &buffer); 417a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber void timeUpdate(uint32_t rtpTime, uint64_t ntpTime); 4257648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber void byeReceived(); 437a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 447a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber List<sp<ABuffer> > *queue() { return &mQueue; } 457a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 4657648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber void addReceiverReport(const sp<ABuffer> &buffer); 4757648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber void addFIR(const sp<ABuffer> &buffer); 4857648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber 497a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huberprivate: 507a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber uint32_t mID; 517a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber uint32_t mHighestSeqNumber; 527a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber int32_t mNumBuffersReceived; 537a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 547a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber List<sp<ABuffer> > mQueue; 557a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber sp<ARTPAssembler> mAssembler; 567a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 5757648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber uint64_t mLastNTPTime; 5857648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber int64_t mLastNTPTimeUpdateUs; 5957648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber 6057648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber bool mIssueFIRRequests; 6157648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber int64_t mLastFIRRequestUs; 6257648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber uint8_t mNextFIRSeqNo; 6357648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber 64b2934b16eac8d8a866c37a7d1d7e03635f475b08Andreas Huber sp<AMessage> mNotify; 657a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 667a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber bool queuePacket(const sp<ABuffer> &buffer); 677a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 687a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber DISALLOW_EVIL_CONSTRUCTORS(ARTPSource); 697a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber}; 707a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 717a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber} // namespace android 727a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 737a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber#endif // A_RTP_SOURCE_H_ 74