PreviewPlayer.h revision bfece17c8f63de4d4b686da50f8ecac2f6f8ec53
1643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi/*
2643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi * Copyright (C) 2011 NXP Software
3643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi * Copyright (C) 2011 The Android Open Source Project
4643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi *
5643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi * Licensed under the Apache License, Version 2.0 (the "License");
6643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi * you may not use this file except in compliance with the License.
7643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi * You may obtain a copy of the License at
8643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi *
9643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi *      http://www.apache.org/licenses/LICENSE-2.0
10643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi *
11643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi * Unless required by applicable law or agreed to in writing, software
12643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi * distributed under the License is distributed on an "AS IS" BASIS,
13643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi * See the License for the specific language governing permissions and
15643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi * limitations under the License.
16643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi */
17643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
18643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi#ifndef PREVIEW_PLAYER_H_
19643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
20643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi#define PREVIEW_PLAYER_H_
21643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
22643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi#include "NuHTTPDataSource.h"
23643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi#include "TimedEventQueue.h"
24643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi#include "VideoEditorAudioPlayer.h"
25643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
26643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi#include <media/MediaPlayerInterface.h>
27643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi#include <media/stagefright/DataSource.h>
28643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi#include <media/stagefright/OMXClient.h>
29643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi#include <media/stagefright/TimeSource.h>
30643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi#include <utils/threads.h>
31643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi#include <AwesomePlayer.h>
32643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi#include "VideoEditorPreviewController.h"
33643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
34643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundarginamespace android {
35643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
36643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargistruct AudioPlayer;
37643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargistruct DataSource;
38643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargistruct MediaBuffer;
39643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargistruct MediaExtractor;
40643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargistruct MediaSource;
41643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
42643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargistruct PreviewPlayerRenderer : public RefBase {
43643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    PreviewPlayerRenderer() {}
44643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
45643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    virtual void render(MediaBuffer *buffer) = 0;
46643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    virtual void render() = 0;
47643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    virtual void getBuffer(uint8_t **data, size_t *stride) = 0;
48643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
49643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargiprivate:
50643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    PreviewPlayerRenderer(const PreviewPlayerRenderer &);
51643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    PreviewPlayerRenderer &operator=(const PreviewPlayerRenderer &);
52643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi};
53643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
54643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargistruct PreviewPlayer : public AwesomePlayer {
55643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    PreviewPlayer();
56643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    ~PreviewPlayer();
57643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
58643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    //Override baseclass methods
59643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    void reset();
60643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
61643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t play();
62643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
63643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    void setISurface(const sp<ISurface> &isurface);
64643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
65643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t seekTo(int64_t timeUs);
66643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
67643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t getVideoDimensions(int32_t *width, int32_t *height) const;
68643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
69643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t suspend();
70643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t resume();
71643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
72643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t prepare();
73643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t setDataSource(
74643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        const char *uri, const KeyedVector<String8, String8> *headers);
75643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
76643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    //Added methods
7735cb2de64cb6482a08f446e80733e7d344a0dcacDharmaray Kundargi    status_t loadEffectsSettings(M4VSS3GPP_EffectSettings* pEffectSettings,
78643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi                                 int nEffects);
79643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t loadAudioMixSettings(M4xVSS_AudioMixingSettings* pAudioMixSettings);
80643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t setAudioMixPCMFileHandle(M4OSA_Context pAudioMixPCMFileHandle);
81643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t setAudioMixStoryBoardParam(M4OSA_UInt32 audioMixStoryBoardTS,
82643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi                            M4OSA_UInt32 currentMediaBeginCutTime,
83643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi                            M4OSA_UInt32 currentMediaVolumeVol);
84643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
85643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t setPlaybackBeginTime(uint32_t msec);
86643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t setPlaybackEndTime(uint32_t msec);
87643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t setStoryboardStartTime(uint32_t msec);
88643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t setProgressCallbackInterval(uint32_t cbInterval);
89643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t setMediaRenderingMode(M4xVSS_MediaRendering mode,
90643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi                            M4VIDEOEDITING_VideoFrameSize outputVideoSize);
91643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
92643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t resetJniCallbackTimeStamp();
93643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t setImageClipProperties(uint32_t width, uint32_t height);
94643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t readFirstVideoFrame();
95643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
96643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
97643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargiprivate:
98643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    friend struct PreviewPlayerEvent;
99643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
100643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    enum {
101643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        PLAYING             = 1,
102643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        LOOPING             = 2,
103643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        FIRST_FRAME         = 4,
104643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        PREPARING           = 8,
105643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        PREPARED            = 16,
106643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        AT_EOS              = 32,
107643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        PREPARE_CANCELLED   = 64,
108643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        CACHE_UNDERRUN      = 128,
109643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        AUDIO_AT_EOS        = 256,
110643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        VIDEO_AT_EOS        = 512,
111643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        AUTO_LOOPING        = 1024,
112643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    };
113643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
114643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    sp<ISurface> mISurface;
115643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
116643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    void cancelPlayerEvents(bool keepBufferingGoing = false);
117643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t setDataSource_l(const sp<MediaExtractor> &extractor);
118643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t setDataSource_l(
119643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        const char *uri, const KeyedVector<String8, String8> *headers);
120643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    void reset_l();
121643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    void partial_reset_l();
122643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t play_l();
123bfece17c8f63de4d4b686da50f8ecac2f6f8ec53Santosh Madhava    status_t initRenderer_l();
124643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t initAudioDecoder();
125643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t initVideoDecoder(uint32_t flags = 0);
126643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    void onVideoEvent();
127643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t finishSetDataSource_l();
128643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    static bool ContinuePreparation(void *cookie);
129643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    void onPrepareAsyncEvent();
130643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    void finishAsyncPrepare_l();
131643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
132643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    sp<PreviewPlayerRenderer> mVideoRenderer;
133643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
134643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    int32_t mVideoWidth, mVideoHeight;
135643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
136643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    MediaBuffer *mLastVideoBuffer;
137643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
138643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    struct SuspensionState {
139643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        String8 mUri;
140643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        KeyedVector<String8, String8> mUriHeaders;
141643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        sp<DataSource> mFileSource;
142643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
143643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        uint32_t mFlags;
144643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        int64_t mPositionUs;
145643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
146643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        void *mLastVideoFrame;
147643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        size_t mLastVideoFrameSize;
148643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        int32_t mColorFormat;
149643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        int32_t mVideoWidth, mVideoHeight;
150643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        int32_t mDecodedWidth, mDecodedHeight;
151643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
152643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        SuspensionState()
153643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi            : mLastVideoFrame(NULL) {
154643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        }
155643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
156643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        ~SuspensionState() {
157643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi            if (mLastVideoFrame) {
158643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi                free(mLastVideoFrame);
159643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi                mLastVideoFrame = NULL;
160643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi            }
161643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        }
162643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    } *mSuspensionState;
163643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
164643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    //Data structures used for audio and video effects
165643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    M4VSS3GPP_EffectSettings* mEffectsSettings;
166643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    M4xVSS_AudioMixingSettings* mPreviewPlayerAudioMixSettings;
167643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    M4OSA_Context mAudioMixPCMFileHandle;
168643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    M4OSA_UInt32 mAudioMixStoryBoardTS;
169643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    M4OSA_UInt32 mCurrentMediaBeginCutTime;
170643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    M4OSA_UInt32 mCurrentMediaVolumeValue;
171e6c0750cd2927967f93a8811954f889d23fadb6eDharmaray Kundargi    M4OSA_UInt32 mCurrFramingEffectIndex;
172643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
173643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    uint32_t mNumberEffects;
174643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    uint32_t mPlayBeginTimeMsec;
175643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    uint32_t mPlayEndTimeMsec;
176643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    uint64_t mDecodedVideoTs; // timestamp of current decoded video frame buffer
177643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    uint64_t mDecVideoTsStoryBoard; // timestamp of frame relative to storyboard
178643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    uint32_t mCurrentVideoEffect;
179643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    uint32_t mProgressCbInterval;
180643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    uint32_t mNumberDecVideoFrames; // Counter of number of video frames decoded
181643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    sp<TimedEventQueue::Event> mProgressCbEvent;
182643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    bool mProgressCbEventPending;
183e6c0750cd2927967f93a8811954f889d23fadb6eDharmaray Kundargi    sp<TimedEventQueue::Event> mOverlayUpdateEvent;
184e6c0750cd2927967f93a8811954f889d23fadb6eDharmaray Kundargi    bool mOverlayUpdateEventPending;
185e6c0750cd2927967f93a8811954f889d23fadb6eDharmaray Kundargi    bool mOverlayUpdateEventPosted;
186e6c0750cd2927967f93a8811954f889d23fadb6eDharmaray Kundargi
187643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    MediaBuffer *mResizedVideoBuffer;
188643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    bool mVideoResizedOrCropped;
189643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    M4xVSS_MediaRendering mRenderingMode;
190643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    uint32_t mOutputVideoWidth;
191643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    uint32_t mOutputVideoHeight;
192643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
19335cb2de64cb6482a08f446e80733e7d344a0dcacDharmaray Kundargi    int32_t mReportedWidth;  //docoder reported width
19435cb2de64cb6482a08f446e80733e7d344a0dcacDharmaray Kundargi    int32_t mReportedHeight; //docoder reported height
19535cb2de64cb6482a08f446e80733e7d344a0dcacDharmaray Kundargi
196643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    uint32_t mStoryboardStartTimeMsec;
197643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
198643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    bool mIsVideoSourceJpg;
199643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    bool mIsFiftiesEffectStarted;
200643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    int64_t mImageFrameTimeUs;
201643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    bool mStartNextPlayer;
202643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
203643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    M4VIFI_UInt8*  mFrameRGBBuffer;
204643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    M4VIFI_UInt8*  mFrameYUVBuffer;
205643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
206643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    void setVideoPostProcessingNode(
207643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi                    M4VSS3GPP_VideoEffectType type, M4OSA_Bool enable);
208643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    M4OSA_ERR doVideoPostProcessing();
209643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    M4OSA_ERR doMediaRendering();
210643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    void postProgressCallbackEvent_l();
211643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    void onProgressCbEvent();
212643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
213e6c0750cd2927967f93a8811954f889d23fadb6eDharmaray Kundargi    void postOverlayUpdateEvent_l();
214e6c0750cd2927967f93a8811954f889d23fadb6eDharmaray Kundargi    void onUpdateOverlayEvent();
215e6c0750cd2927967f93a8811954f889d23fadb6eDharmaray Kundargi
216643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t setDataSource_l_jpg();
217643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
218643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t prepare_l();
219643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t prepareAsync_l();
220643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
221643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    PreviewPlayer(const PreviewPlayer &);
222643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    PreviewPlayer &operator=(const PreviewPlayer &);
223643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi};
224643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
225643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi}  // namespace android
226643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
227643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi#endif  // PREVIEW_PLAYER_H_
228643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
229