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_AMR_ASSEMBLER_H_
1839ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
1939ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber#define A_AMR_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 Huberstruct AString;
3139ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
3239ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huberstruct AAMRAssembler : public ARTPAssembler {
3339ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    AAMRAssembler(
3439ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber            const sp<AMessage> &notify, bool isWide,
3539ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber            const AString &params);
3639ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
3739ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huberprotected:
3839ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    virtual ~AAMRAssembler();
3939ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
4039ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    virtual AssemblyStatus assembleMore(const sp<ARTPSource> &source);
4139ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    virtual void onByeReceived();
4239ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    virtual void packetLost();
4339ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
4439ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huberprivate:
4539ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    bool mIsWide;
4639ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
4739ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    sp<AMessage> mNotifyMsg;
4839ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    bool mNextExpectedSeqNoValid;
4939ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    uint32_t mNextExpectedSeqNo;
5039ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
5139ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    AssemblyStatus addPacket(const sp<ARTPSource> &source);
5239ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
5339ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber    DISALLOW_EVIL_CONSTRUCTORS(AAMRAssembler);
5439ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber};
5539ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
5639ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber}  // namespace android
5739ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
5839ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber#endif  // A_AMR_ASSEMBLER_H_
5939ddf8e0f18766f7ba1e3246b774aa6ebd93eea8Andreas Huber
60