PreviewPlayer.h revision fa31daff175709d2c58d61d1354daa9495696631
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();
71fa31daff175709d2c58d61d1354daa9495696631Raghavender Palla    void acquireLock();
72fa31daff175709d2c58d61d1354daa9495696631Raghavender Palla    void releaseLock();
73643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
74643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t prepare();
75643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t setDataSource(
76643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        const char *uri, const KeyedVector<String8, String8> *headers);
77643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
78643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    //Added methods
7935cb2de64cb6482a08f446e80733e7d344a0dcacDharmaray Kundargi    status_t loadEffectsSettings(M4VSS3GPP_EffectSettings* pEffectSettings,
80643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi                                 int nEffects);
81643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t loadAudioMixSettings(M4xVSS_AudioMixingSettings* pAudioMixSettings);
82643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t setAudioMixPCMFileHandle(M4OSA_Context pAudioMixPCMFileHandle);
83643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t setAudioMixStoryBoardParam(M4OSA_UInt32 audioMixStoryBoardTS,
84643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi                            M4OSA_UInt32 currentMediaBeginCutTime,
85643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi                            M4OSA_UInt32 currentMediaVolumeVol);
86643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
87643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t setPlaybackBeginTime(uint32_t msec);
88643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t setPlaybackEndTime(uint32_t msec);
89643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t setStoryboardStartTime(uint32_t msec);
90643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t setProgressCallbackInterval(uint32_t cbInterval);
91643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t setMediaRenderingMode(M4xVSS_MediaRendering mode,
92643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi                            M4VIDEOEDITING_VideoFrameSize outputVideoSize);
93643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
94643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t resetJniCallbackTimeStamp();
95643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t setImageClipProperties(uint32_t width, uint32_t height);
96643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t readFirstVideoFrame();
97b2d6e0f74a12e5cce5b429e646172c63346346c3Santosh Madhava    status_t getLastRenderedTimeMs(uint32_t *lastRenderedTimeMs);
981c97d9ab52a288d24ea54499de435277cc1a3d68Rajneesh Chowdury    status_t setAudioPlayer(AudioPlayer *audioPlayer);
99643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
100643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargiprivate:
101643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    friend struct PreviewPlayerEvent;
102643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
103643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    enum {
104643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        PLAYING             = 1,
105643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        LOOPING             = 2,
106643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        FIRST_FRAME         = 4,
107643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        PREPARING           = 8,
108643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        PREPARED            = 16,
109643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        AT_EOS              = 32,
110643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        PREPARE_CANCELLED   = 64,
111643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        CACHE_UNDERRUN      = 128,
112643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        AUDIO_AT_EOS        = 256,
113643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        VIDEO_AT_EOS        = 512,
114643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        AUTO_LOOPING        = 1024,
115643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    };
116643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
117643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    sp<ISurface> mISurface;
118643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
119643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    void cancelPlayerEvents(bool keepBufferingGoing = false);
120643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t setDataSource_l(const sp<MediaExtractor> &extractor);
121643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t setDataSource_l(
122643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        const char *uri, const KeyedVector<String8, String8> *headers);
123643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    void reset_l();
124643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t play_l();
125bfece17c8f63de4d4b686da50f8ecac2f6f8ec53Santosh Madhava    status_t initRenderer_l();
126643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t initAudioDecoder();
127643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t initVideoDecoder(uint32_t flags = 0);
128643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    void onVideoEvent();
1291c97d9ab52a288d24ea54499de435277cc1a3d68Rajneesh Chowdury    void onStreamDone();
130643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t finishSetDataSource_l();
131643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    static bool ContinuePreparation(void *cookie);
132643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    void onPrepareAsyncEvent();
133643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    void finishAsyncPrepare_l();
1345bc7fb407ce1bab13d4a4a67d34a1a3192ee3186Dheeraj Sharma    status_t startAudioPlayer_l();
1351c97d9ab52a288d24ea54499de435277cc1a3d68Rajneesh Chowdury    bool mIsChangeSourceRequired;
136643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
137643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    sp<PreviewPlayerRenderer> mVideoRenderer;
138643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
139643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    int32_t mVideoWidth, mVideoHeight;
140643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
141643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    MediaBuffer *mLastVideoBuffer;
142643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
143643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    struct SuspensionState {
144643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        String8 mUri;
145643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        KeyedVector<String8, String8> mUriHeaders;
146643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        sp<DataSource> mFileSource;
147643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
148643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        uint32_t mFlags;
149643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        int64_t mPositionUs;
150643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
151643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        void *mLastVideoFrame;
152643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        size_t mLastVideoFrameSize;
153643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        int32_t mColorFormat;
154643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        int32_t mVideoWidth, mVideoHeight;
155643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        int32_t mDecodedWidth, mDecodedHeight;
156643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
157643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        SuspensionState()
158643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi            : mLastVideoFrame(NULL) {
159643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        }
160643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
161643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        ~SuspensionState() {
162643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi            if (mLastVideoFrame) {
163643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi                free(mLastVideoFrame);
164643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi                mLastVideoFrame = NULL;
165643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi            }
166643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi        }
167643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    } *mSuspensionState;
168643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
169643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    //Data structures used for audio and video effects
170643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    M4VSS3GPP_EffectSettings* mEffectsSettings;
171643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    M4xVSS_AudioMixingSettings* mPreviewPlayerAudioMixSettings;
172643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    M4OSA_Context mAudioMixPCMFileHandle;
173643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    M4OSA_UInt32 mAudioMixStoryBoardTS;
174643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    M4OSA_UInt32 mCurrentMediaBeginCutTime;
175643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    M4OSA_UInt32 mCurrentMediaVolumeValue;
176e6c0750cd2927967f93a8811954f889d23fadb6eDharmaray Kundargi    M4OSA_UInt32 mCurrFramingEffectIndex;
177643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
178643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    uint32_t mNumberEffects;
179643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    uint32_t mPlayBeginTimeMsec;
180643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    uint32_t mPlayEndTimeMsec;
181643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    uint64_t mDecodedVideoTs; // timestamp of current decoded video frame buffer
182643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    uint64_t mDecVideoTsStoryBoard; // timestamp of frame relative to storyboard
183643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    uint32_t mCurrentVideoEffect;
184643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    uint32_t mProgressCbInterval;
185643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    uint32_t mNumberDecVideoFrames; // Counter of number of video frames decoded
186643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    sp<TimedEventQueue::Event> mProgressCbEvent;
187643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    bool mProgressCbEventPending;
188e6c0750cd2927967f93a8811954f889d23fadb6eDharmaray Kundargi    sp<TimedEventQueue::Event> mOverlayUpdateEvent;
189e6c0750cd2927967f93a8811954f889d23fadb6eDharmaray Kundargi    bool mOverlayUpdateEventPending;
190e6c0750cd2927967f93a8811954f889d23fadb6eDharmaray Kundargi    bool mOverlayUpdateEventPosted;
191e6c0750cd2927967f93a8811954f889d23fadb6eDharmaray Kundargi
192643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    MediaBuffer *mResizedVideoBuffer;
193643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    bool mVideoResizedOrCropped;
194643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    M4xVSS_MediaRendering mRenderingMode;
195643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    uint32_t mOutputVideoWidth;
196643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    uint32_t mOutputVideoHeight;
197643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
19835cb2de64cb6482a08f446e80733e7d344a0dcacDharmaray Kundargi    int32_t mReportedWidth;  //docoder reported width
19935cb2de64cb6482a08f446e80733e7d344a0dcacDharmaray Kundargi    int32_t mReportedHeight; //docoder reported height
20035cb2de64cb6482a08f446e80733e7d344a0dcacDharmaray Kundargi
201643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    uint32_t mStoryboardStartTimeMsec;
202643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
203643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    bool mIsVideoSourceJpg;
204643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    bool mIsFiftiesEffectStarted;
205643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    int64_t mImageFrameTimeUs;
206643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    bool mStartNextPlayer;
207fa31daff175709d2c58d61d1354daa9495696631Raghavender Palla    mutable Mutex mLockControl;
208643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
209643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    M4VIFI_UInt8*  mFrameRGBBuffer;
210643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    M4VIFI_UInt8*  mFrameYUVBuffer;
211643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
212643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    void setVideoPostProcessingNode(
213643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi                    M4VSS3GPP_VideoEffectType type, M4OSA_Bool enable);
214643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    M4OSA_ERR doVideoPostProcessing();
215643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    M4OSA_ERR doMediaRendering();
216643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    void postProgressCallbackEvent_l();
217643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    void onProgressCbEvent();
218643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
219e6c0750cd2927967f93a8811954f889d23fadb6eDharmaray Kundargi    void postOverlayUpdateEvent_l();
220e6c0750cd2927967f93a8811954f889d23fadb6eDharmaray Kundargi    void onUpdateOverlayEvent();
221e6c0750cd2927967f93a8811954f889d23fadb6eDharmaray Kundargi
222643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t setDataSource_l_jpg();
223643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
224643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t prepare_l();
225643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    status_t prepareAsync_l();
226643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
2275bc7fb407ce1bab13d4a4a67d34a1a3192ee3186Dheeraj Sharma    VideoEditorAudioPlayer  *mVeAudioPlayer;
2285bc7fb407ce1bab13d4a4a67d34a1a3192ee3186Dheeraj Sharma
229643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    PreviewPlayer(const PreviewPlayer &);
230643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi    PreviewPlayer &operator=(const PreviewPlayer &);
231643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi};
232643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
233643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi}  // namespace android
234643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
235643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi#endif  // PREVIEW_PLAYER_H_
236643290dc4c83da23b1b8ff4ed71118203274bb15Dharmaray Kundargi
237