126a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi/*
226a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi * Copyright (C) 2011 The Android Open Source Project
326a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi *
426a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi * Licensed under the Apache License, Version 2.0 (the "License");
526a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi * you may not use this file except in compliance with the License.
626a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi * You may obtain a copy of the License at
726a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi *
826a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi *      http://www.apache.org/licenses/LICENSE-2.0
926a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi *
1026a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi * Unless required by applicable law or agreed to in writing, software
1126a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi * distributed under the License is distributed on an "AS IS" BASIS,
1226a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1326a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi * See the License for the specific language governing permissions and
1426a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi * limitations under the License.
1526a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi */
1626a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi
1726a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi#ifndef DUMMY_RECORDER_H_
1826a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi#define DUMMY_RECORDER_H_
1926a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi
2026a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi#include <pthread.h>
2126a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi#include <utils/String8.h>
2226a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi#include <media/stagefright/foundation/ABase.h>
2326a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi
2426a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi
2526a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketinamespace android {
2626a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi
2726a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketiclass MediaSource;
2826a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketiclass MediaBuffer;
2926a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi
3026a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketiclass DummyRecorder {
3126a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi    public:
3226a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi    // The media source from which this will receive frames
3326a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi    sp<MediaSource> mSource;
3426a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi    bool mStarted;
3526a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi    pthread_t mThread;
3626a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi
3726a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi    status_t start();
3826a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi    status_t stop();
3926a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi
4026a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi    // actual entry point for the thread
4126a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi    void readFromSource();
4226a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi
4326a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi    // static function to wrap the actual thread entry point
4426a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi    static void *threadWrapper(void *pthis);
4526a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi
4626a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi    DummyRecorder(const sp<MediaSource> &source) : mSource(source)
4726a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi                                                    , mStarted(false) {}
4826a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi    ~DummyRecorder( ) {}
4926a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi
5026a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi    private:
5126a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi
5226a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi    DISALLOW_EVIL_CONSTRUCTORS(DummyRecorder);
5326a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi};
5426a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi
5526a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi} // end of namespace android
5626a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi#endif
5726a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi
5826a197120c1bad8797f35e9b43482f5466280f8cPannag Sanketi
59