139ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber/*
239ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber * Copyright (C) 2010 The Android Open Source Project
339ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber *
439ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
539ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber * you may not use this file except in compliance with the License.
639ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber * You may obtain a copy of the License at
739ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber *
839ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber *      http://www.apache.org/licenses/LICENSE-2.0
939ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber *
1039ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber * Unless required by applicable law or agreed to in writing, software
1139ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
1239ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1339ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber * See the License for the specific language governing permissions and
1439ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber * limitations under the License.
1539ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber */
1639ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
1739ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber#ifndef A_H263_ASSEMBLER_H_
1839ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
1939ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber#define A_H263_ASSEMBLER_H_
2039ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
2139ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber#include "ARTPAssembler.h"
2239ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
2339ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber#include <utils/List.h>
2439ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
2539ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber#include <stdint.h>
2639ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
2739ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Hubernamespace android {
2839ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
2939ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huberstruct AMessage;
3039ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
3139ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huberstruct AH263Assembler : public ARTPAssembler {
3239ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    AH263Assembler(const sp<AMessage> &notify);
3339ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
3439ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huberprotected:
3539ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    virtual ~AH263Assembler();
3639ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
3739ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    virtual AssemblyStatus assembleMore(const sp<ARTPSource> &source);
3839ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    virtual void onByeReceived();
3939ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    virtual void packetLost();
4039ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
4139ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huberprivate:
4239ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    sp<AMessage> mNotifyMsg;
4339ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    uint32_t mAccessUnitRTPTime;
4439ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    bool mNextExpectedSeqNoValid;
4539ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    uint32_t mNextExpectedSeqNo;
4639ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    bool mAccessUnitDamaged;
4739ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    List<sp<ABuffer> > mPackets;
4839ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
4939ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    AssemblyStatus addPacket(const sp<ARTPSource> &source);
5039ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    void submitAccessUnit();
5139ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
5239ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    DISALLOW_EVIL_CONSTRUCTORS(AH263Assembler);
5339ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber};
5439ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
5539ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber}  // namespace android
5639ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
5739ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber#endif  // A_H263_ASSEMBLER_H_
58