147ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber/*
247ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber * Copyright (C) 2010 The Android Open Source Project
347ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber *
447ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
547ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber * you may not use this file except in compliance with the License.
647ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber * You may obtain a copy of the License at
747ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber *
847ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber *      http://www.apache.org/licenses/LICENSE-2.0
947ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber *
1047ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber * Unless required by applicable law or agreed to in writing, software
1147ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
1247ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1347ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber * See the License for the specific language governing permissions and
1447ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber * limitations under the License.
1547ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber */
1647ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber
1747ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber#ifndef VPX_DECODER_H_
1847ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber
1947ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber#define VPX_DECODER_H_
2047ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber
2147ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber#include <media/stagefright/MediaSource.h>
2247ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber#include <utils/Vector.h>
2347ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber
2447ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Hubernamespace android {
2547ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber
2647ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huberstruct MediaBufferGroup;
2747ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber
2847ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huberstruct VPXDecoder : public MediaSource {
2947ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber    VPXDecoder(const sp<MediaSource> &source);
3047ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber
3147ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber    virtual status_t start(MetaData *params);
3247ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber    virtual status_t stop();
3347ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber
3447ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber    virtual sp<MetaData> getFormat();
3547ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber
3647ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber    virtual status_t read(
3747ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber            MediaBuffer **buffer, const ReadOptions *options);
3847ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber
3947ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huberprotected:
4047ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber    virtual ~VPXDecoder();
4147ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber
4247ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huberprivate:
4347ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber    sp<MediaSource> mSource;
4447ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber    bool mStarted;
4547ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber    int32_t mWidth, mHeight;
4647ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber    size_t mBufferSize;
4747ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber
4847ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber    void *mCtx;
4947ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber    MediaBufferGroup *mBufferGroup;
5047ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber
516624c9fd0bc5e3858a22a04c05b5059445c1c367Andreas Huber    int64_t mTargetTimeUs;
526624c9fd0bc5e3858a22a04c05b5059445c1c367Andreas Huber
5347ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber    sp<MetaData> mFormat;
5447ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber
5547ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber    VPXDecoder(const VPXDecoder &);
5647ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber    VPXDecoder &operator=(const VPXDecoder &);
5747ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber};
5847ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber
5947ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber}  // namespace android
6047ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber
6147ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber#endif  // VPX_DECODER_H_
6247ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber
63