NuPlayerStreamListener.h revision 32f3cefa373cd55e63deda36ca9d07c7fe22eaaf
10469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy/* 20469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy * Copyright (C) 2010 The Android Open Source Project 30469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy * 40469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy * Licensed under the Apache License, Version 2.0 (the "License"); 50469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy * you may not use this file except in compliance with the License. 60469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy * You may obtain a copy of the License at 70469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy * 80469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy * http://www.apache.org/licenses/LICENSE-2.0 90469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy * 100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy * Unless required by applicable law or agreed to in writing, software 110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy * distributed under the License is distributed on an "AS IS" BASIS, 120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy * See the License for the specific language governing permissions and 140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy * limitations under the License. 150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy */ 160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy 170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy#ifndef NUPLAYER_STREAM_LISTENER_H_ 180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy 190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy#define NUPLAYER_STREAM_LISTENER_H_ 200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy 210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy#include "NuPlayer.h" 220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy 230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy#include <media/IStreamSource.h> 240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy 250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamynamespace android { 260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy 270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamystruct MemoryDealer; 280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy 290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamystruct NuPlayer::NuPlayerStreamListener : public BnStreamListener { 300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy NuPlayerStreamListener( 310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy const sp<IStreamSource> &source, 320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy ALooper::handler_id targetID); 330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy 340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy virtual void queueBuffer(size_t index, size_t size); 350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy 360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy virtual void issueCommand( 370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy Command cmd, bool synchronous, const sp<AMessage> &extra); 380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy 390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy void start(); 400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy ssize_t read(void *data, size_t size, sp<AMessage> *extra); 410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy 420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyprivate: 430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy enum { 440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy kNumBuffers = 16, 450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy kBufferSize = 188 * 20 460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy }; 470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy 480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy struct QueueEntry { 490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy bool mIsCommand; 500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy 510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy size_t mIndex; 520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy size_t mSize; 530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy size_t mOffset; 540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy 550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy Command mCommand; 560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy sp<AMessage> mExtra; 570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy }; 580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy 590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy Mutex mLock; 600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy 610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy sp<IStreamSource> mSource; 620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy ALooper::handler_id mTargetID; 630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy sp<MemoryDealer> mMemoryDealer; 640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy Vector<sp<IMemory> > mBuffers; 650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy List<QueueEntry> mQueue; 660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy bool mEOS; 670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy bool mSendDataNotification; 680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy 690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy DISALLOW_EVIL_CONSTRUCTORS(NuPlayerStreamListener); 700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}; 710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy 720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy} // namespace android 730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy 740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy#endif // NUPLAYER_STREAM_LISTENER_H_ 750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy