ARTPAssembler.h revision 39ddf8e0f18766f7ba1e3246b774aa6ebd93eea8
1e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard/* 2e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard * Copyright (C) 2010 The Android Open Source Project 3e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard * 4e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard * Licensed under the Apache License, Version 2.0 (the "License"); 5e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard * you may not use this file except in compliance with the License. 6e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard * You may obtain a copy of the License at 7e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard * 8e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard * http://www.apache.org/licenses/LICENSE-2.0 9e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard * 10e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard * Unless required by applicable law or agreed to in writing, software 11e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard * distributed under the License is distributed on an "AS IS" BASIS, 12e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard * See the License for the specific language governing permissions and 14e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard * limitations under the License. 15e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard */ 16e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 17e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard#ifndef A_RTP_ASSEMBLER_H_ 18e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 19e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard#define A_RTP_ASSEMBLER_H_ 20e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 21e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard#include <media/stagefright/foundation/ABase.h> 225d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen#include <utils/RefBase.h> 23e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 24e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgardnamespace android { 25e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 26e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgardstruct ABuffer; 27e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgardstruct ARTPSource; 28e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 29e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgardstruct ARTPAssembler : public RefBase { 30e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard enum AssemblyStatus { 315d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen MALFORMED_PACKET, 325d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen WRONG_SEQUENCE_NUMBER, 33e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard NOT_ENOUGH_DATA, 34e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard OK 355d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen }; 365d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen 375d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen ARTPAssembler(); 38e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 39e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard void onPacketReceived(const sp<ARTPSource> &source); 405d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen virtual void onByeReceived() = 0; 415d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen 425d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissenprotected: 435d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen static void PropagateTimes( 44e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard const sp<ABuffer> &from, const sp<ABuffer> &to); 45e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 465d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen virtual AssemblyStatus assembleMore(const sp<ARTPSource> &source) = 0; 475d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen virtual void packetLost() = 0; 485d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen 495d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissenprivate: 505d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen int64_t mFirstFailureTimeUs; 51e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 52e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard DISALLOW_EVIL_CONSTRUCTORS(ARTPAssembler); 535d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen}; 545d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen 55e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard} // namespace android 56e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard 575d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen#endif // A_RTP_ASSEMBLER_H_ 585d5c3a132bb446ac78a37dfaac24a46cacf0dd73Marco Nelissen