1840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber/*
2840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber * Copyright (C) 2012 The Android Open Source Project
3840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber *
4840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
5840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber * you may not use this file except in compliance with the License.
6840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber * You may obtain a copy of the License at
7840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber *
8840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber *      http://www.apache.org/licenses/LICENSE-2.0
9840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber *
10840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber * Unless required by applicable law or agreed to in writing, software
11840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
12840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber * See the License for the specific language governing permissions and
14840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber * limitations under the License.
15840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber */
16840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber
17840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber#ifndef MP4_SOURCE_H
18840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber#define MP4_SOURCE_H
19840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber
20840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber#include "NuPlayerSource.h"
21840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber
22840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Hubernamespace android {
23840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber
24cb1f88c684140ce0eb407049a78f889bc7d51be1Marco Nelissenstruct FragmentedMP4Parser;
25840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber
26840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huberstruct MP4Source : public NuPlayer::Source {
27840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber    MP4Source(const sp<IStreamSource> &source);
28840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber
29840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber    virtual void start();
30840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber
31840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber    virtual status_t feedMoreTSData();
32840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber
33840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber    virtual sp<AMessage> getFormat(bool audio);
34840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber
35840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber    virtual status_t dequeueAccessUnit(
36840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber            bool audio, sp<ABuffer> *accessUnit);
37840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber
38840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huberprotected:
39840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber    virtual ~MP4Source();
40840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber
41840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huberprivate:
42840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber    sp<IStreamSource> mSource;
43840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber    sp<ALooper> mLooper;
44cb1f88c684140ce0eb407049a78f889bc7d51be1Marco Nelissen    sp<FragmentedMP4Parser> mParser;
45840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber    bool mEOS;
46840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber
47840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber    DISALLOW_EVIL_CONSTRUCTORS(MP4Source);
48840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber};
49840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber
50840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber}  // namespace android
51840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber
52840667883fd09d44015716d79bc3ac4d60edc0f0Andreas Huber#endif // MP4_SOURCE_H
53