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_ASSEMBLER_H_ 187a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 197a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber#define A_RTP_ASSEMBLER_H_ 207a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 217a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber#include <media/stagefright/foundation/ABase.h> 227a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber#include <utils/RefBase.h> 237a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 247a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Hubernamespace android { 257a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 267a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huberstruct ABuffer; 277a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huberstruct ARTPSource; 287a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 297a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huberstruct ARTPAssembler : public RefBase { 307a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber enum AssemblyStatus { 317a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber MALFORMED_PACKET, 327a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber WRONG_SEQUENCE_NUMBER, 337a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber NOT_ENOUGH_DATA, 347a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber OK 357a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber }; 367a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 377a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber ARTPAssembler(); 387a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 397a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber void onPacketReceived(const sp<ARTPSource> &source); 4057648e4eec7dd2593af467877bc7cce4aa654759Andreas Huber virtual void onByeReceived() = 0; 417a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 427a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huberprotected: 437a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber virtual AssemblyStatus assembleMore(const sp<ARTPSource> &source) = 0; 447a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber virtual void packetLost() = 0; 457a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 46eeb97d91b97f1fc0b26815f098515e9c06d219b8Andreas Huber static void CopyTimes(const sp<ABuffer> &to, const sp<ABuffer> &from); 47eeb97d91b97f1fc0b26815f098515e9c06d219b8Andreas Huber 487a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huberprivate: 497a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber int64_t mFirstFailureTimeUs; 507a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 517a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber DISALLOW_EVIL_CONSTRUCTORS(ARTPAssembler); 527a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber}; 537a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 547a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber} // namespace android 557a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber 567a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8Andreas Huber#endif // A_RTP_ASSEMBLER_H_ 57