diff options
Diffstat (limited to 'libvideoeditor/lvpp/PreviewPlayer.h')
-rwxr-xr-x | libvideoeditor/lvpp/PreviewPlayer.h | 298 |
1 files changed, 0 insertions, 298 deletions
diff --git a/libvideoeditor/lvpp/PreviewPlayer.h b/libvideoeditor/lvpp/PreviewPlayer.h deleted file mode 100755 index 5a13b58..0000000 --- a/libvideoeditor/lvpp/PreviewPlayer.h +++ /dev/null @@ -1,298 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef PREVIEW_PLAYER_H_ - -#define PREVIEW_PLAYER_H_ - -#include "TimedEventQueue.h" -#include "VideoEditorAudioPlayer.h" - -#include <media/MediaPlayerInterface.h> -#include <media/stagefright/OMXClient.h> -#include <media/stagefright/TimeSource.h> -#include <utils/threads.h> -#include "NativeWindowRenderer.h" - -namespace android { - -struct VideoEditorAudioPlayer; -struct MediaExtractor; - -struct PreviewPlayer { - PreviewPlayer(NativeWindowRenderer* renderer); - ~PreviewPlayer(); - - void setListener(const wp<MediaPlayerBase> &listener); - void reset(); - - status_t play(); - status_t pause(); - - bool isPlaying() const; - void setSurface(const sp<Surface> &surface); - void setSurfaceTexture(const sp<IGraphicBufferProducer> &bufferProducer); - status_t seekTo(int64_t timeUs); - - status_t getVideoDimensions(int32_t *width, int32_t *height) const; - - - // FIXME: Sync between ... - void acquireLock(); - void releaseLock(); - - status_t prepare(); - status_t prepareAsync(); - status_t setDataSource(const char *path); - status_t setDataSource(const sp<IStreamSource> &source); - - void setAudioSink(const sp<MediaPlayerBase::AudioSink> &audioSink); - status_t setLooping(bool shouldLoop); - status_t getDuration(int64_t *durationUs); - status_t getPosition(int64_t *positionUs); - - uint32_t getSourceSeekFlags() const; - - void postAudioEOS(int64_t delayUs = 0ll); - void postAudioSeekComplete(); - - status_t loadEffectsSettings(M4VSS3GPP_EffectSettings* pEffectSettings, - int nEffects); - status_t loadAudioMixSettings(M4xVSS_AudioMixingSettings* pAudioMixSettings); - status_t setAudioMixPCMFileHandle(M4OSA_Context pAudioMixPCMFileHandle); - status_t setAudioMixStoryBoardParam(M4OSA_UInt32 audioMixStoryBoardTS, - M4OSA_UInt32 currentMediaBeginCutTime, - M4OSA_UInt32 currentMediaVolumeVol); - - status_t setPlaybackBeginTime(uint32_t msec); - status_t setPlaybackEndTime(uint32_t msec); - status_t setStoryboardStartTime(uint32_t msec); - status_t setProgressCallbackInterval(uint32_t cbInterval); - status_t setMediaRenderingMode(M4xVSS_MediaRendering mode, - M4VIDEOEDITING_VideoFrameSize outputVideoSize); - - status_t resetJniCallbackTimeStamp(); - status_t setImageClipProperties(uint32_t width, uint32_t height); - status_t readFirstVideoFrame(); - status_t getLastRenderedTimeMs(uint32_t *lastRenderedTimeMs); - status_t setAudioPlayer(VideoEditorAudioPlayer *audioPlayer); - -private: - enum { - PLAYING = 1, - LOOPING = 2, - FIRST_FRAME = 4, - PREPARING = 8, - PREPARED = 16, - AT_EOS = 32, - PREPARE_CANCELLED = 64, - CACHE_UNDERRUN = 128, - AUDIO_AT_EOS = 256, - VIDEO_AT_EOS = 512, - AUTO_LOOPING = 1024, - INFORMED_AV_EOS = 2048, - - // We are basically done preparing but are currently buffering - // sufficient data to begin playback and finish the preparation phase - // for good. - PREPARING_CONNECTED = 2048, - - // We're triggering a single video event to display the first frame - // after the seekpoint. - SEEK_PREVIEW = 4096, - - AUDIO_RUNNING = 8192, - AUDIOPLAYER_STARTED = 16384, - - INCOGNITO = 32768, - }; - - mutable Mutex mLock; - - OMXClient mClient; - TimedEventQueue mQueue; - bool mQueueStarted; - wp<MediaPlayerBase> mListener; - - sp<Surface> mSurface; - sp<ANativeWindow> mNativeWindow; - sp<MediaPlayerBase::AudioSink> mAudioSink; - - SystemTimeSource mSystemTimeSource; - TimeSource *mTimeSource; - - String8 mUri; - - sp<MediaSource> mVideoTrack; - sp<MediaSource> mVideoSource; - bool mVideoRendererIsPreview; - - sp<MediaSource> mAudioTrack; - sp<MediaSource> mAudioSource; - VideoEditorAudioPlayer *mAudioPlayer; - int64_t mDurationUs; - - int32_t mDisplayWidth; - int32_t mDisplayHeight; - - uint32_t mFlags; - uint32_t mExtractorFlags; - - int64_t mTimeSourceDeltaUs; - int64_t mVideoTimeUs; - - enum SeekType { - NO_SEEK, - SEEK, - SEEK_VIDEO_ONLY - }; - SeekType mSeeking; - - bool mSeekNotificationSent; - int64_t mSeekTimeUs; - - int64_t mBitrate; // total bitrate of the file (in bps) or -1 if unknown. - - bool mWatchForAudioSeekComplete; - bool mWatchForAudioEOS; - - sp<TimedEventQueue::Event> mVideoEvent; - bool mVideoEventPending; - sp<TimedEventQueue::Event> mStreamDoneEvent; - bool mStreamDoneEventPending; - sp<TimedEventQueue::Event> mCheckAudioStatusEvent; - bool mAudioStatusEventPending; - sp<TimedEventQueue::Event> mVideoLagEvent; - bool mVideoLagEventPending; - - sp<TimedEventQueue::Event> mAsyncPrepareEvent; - Condition mPreparedCondition; - bool mIsAsyncPrepare; - status_t mPrepareResult; - status_t mStreamDoneStatus; - - MediaBuffer *mVideoBuffer; - int64_t mLastVideoTimeUs; - ARect mCropRect; - int32_t mGivenWidth, mGivenHeight; - - - bool mIsChangeSourceRequired; - - NativeWindowRenderer *mNativeWindowRenderer; - RenderInput *mVideoRenderer; - - int32_t mVideoWidth, mVideoHeight; - - //Data structures used for audio and video effects - M4VSS3GPP_EffectSettings* mEffectsSettings; - M4xVSS_AudioMixingSettings* mPreviewPlayerAudioMixSettings; - M4OSA_Context mAudioMixPCMFileHandle; - M4OSA_UInt32 mAudioMixStoryBoardTS; - M4OSA_UInt32 mCurrentMediaBeginCutTime; - M4OSA_UInt32 mCurrentMediaVolumeValue; - M4OSA_UInt32 mCurrFramingEffectIndex; - - uint32_t mNumberEffects; - uint32_t mPlayBeginTimeMsec; - uint32_t mPlayEndTimeMsec; - uint64_t mDecodedVideoTs; // timestamp of current decoded video frame buffer - uint64_t mDecVideoTsStoryBoard; // timestamp of frame relative to storyboard - uint32_t mCurrentVideoEffect; - uint32_t mProgressCbInterval; - uint32_t mNumberDecVideoFrames; // Counter of number of video frames decoded - sp<TimedEventQueue::Event> mProgressCbEvent; - bool mProgressCbEventPending; - sp<TimedEventQueue::Event> mOverlayUpdateEvent; - bool mOverlayUpdateEventPending; - bool mOverlayUpdateEventPosted; - - M4xVSS_MediaRendering mRenderingMode; - uint32_t mOutputVideoWidth; - uint32_t mOutputVideoHeight; - - uint32_t mStoryboardStartTimeMsec; - - bool mIsVideoSourceJpg; - bool mIsFiftiesEffectStarted; - int64_t mImageFrameTimeUs; - bool mStartNextPlayer; - mutable Mutex mLockControl; - - M4VIFI_UInt8* mFrameRGBBuffer; - M4VIFI_UInt8* mFrameYUVBuffer; - - void cancelPlayerEvents_l(bool updateProgressCb = false); - status_t setDataSource_l(const sp<MediaExtractor> &extractor); - status_t setDataSource_l(const char *path); - void setNativeWindow_l(const sp<ANativeWindow> &native); - void reset_l(); - void clear_l(); - status_t play_l(); - status_t pause_l(bool at_eos = false); - status_t initRenderer_l(); - status_t initAudioDecoder_l(); - status_t initVideoDecoder_l(uint32_t flags = 0); - void notifyVideoSize_l(); - void notifyListener_l(int msg, int ext1 = 0, int ext2 = 0); - void onVideoEvent(); - void onVideoLagUpdate(); - void onStreamDone(); - void onCheckAudioStatus(); - void onPrepareAsyncEvent(); - - void finishAsyncPrepare_l(); - void abortPrepare(status_t err); - - status_t startAudioPlayer_l(); - void setVideoSource(const sp<MediaSource>& source); - status_t finishSetDataSource_l(); - void setAudioSource(const sp<MediaSource>& source); - - status_t seekTo_l(int64_t timeUs); - void seekAudioIfNecessary_l(); - void finishSeekIfNecessary(int64_t videoTimeUs); - - void postCheckAudioStatusEvent_l(int64_t delayUs); - void postVideoLagEvent_l(); - void postStreamDoneEvent_l(status_t status); - void postVideoEvent_l(int64_t delayUs = -1); - void setVideoPostProcessingNode( - M4VSS3GPP_VideoEffectType type, M4OSA_Bool enable); - void postProgressCallbackEvent_l(); - void shutdownVideoDecoder_l(); - void onProgressCbEvent(); - - void postOverlayUpdateEvent_l(); - void onUpdateOverlayEvent(); - - status_t setDataSource_l_jpg(); - status_t prepare_l(); - status_t prepareAsync_l(); - void updateBatteryUsage_l(); - void updateSizeToRender(sp<MetaData> meta); - - void setDuration_l(int64_t durationUs); - void setPosition_l(int64_t timeUs); - - PreviewPlayer(const PreviewPlayer &); - PreviewPlayer &operator=(const PreviewPlayer &); -}; - -} // namespace android - -#endif // PREVIEW_PLAYER_H_ - |