videoeditor preview code on honeycomb

Change-Id: I9c3c9cb921ea697ab16732973d26ef9035cda2ee
diff --git a/libvideoeditor/lvpp/VideoEditorPlayer.h b/libvideoeditor/lvpp/VideoEditorPlayer.h
new file mode 100755
index 0000000..47d174d
--- /dev/null
+++ b/libvideoeditor/lvpp/VideoEditorPlayer.h
@@ -0,0 +1,157 @@
+/*

+ * Copyright (C) 2011 NXP Software

+ * 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 ANDROID_VIDEOEDITOR_PLAYER_H

+#define ANDROID_VIDEOEDITOR_PLAYER_H

+

+#include <media/MediaPlayerInterface.h>

+#include "AudioTrack.h"

+#include "M4xVSS_API.h"

+#include "VideoEditorMain.h"

+#include "VideoEditorTools.h"

+

+

+namespace android {

+

+struct PreviewPlayer;

+

+class VideoEditorPlayer : public MediaPlayerInterface {

+

+    class VeAudioOutput: public MediaPlayerBase::AudioSink

+    {

+    public:

+                                VeAudioOutput();

+        virtual                 ~VeAudioOutput();

+

+        virtual bool            ready() const { return mTrack != NULL; }

+        virtual bool            realtime() const { return true; }

+        virtual ssize_t         bufferSize() const;

+        virtual ssize_t         frameCount() const;

+        virtual ssize_t         channelCount() const;

+        virtual ssize_t         frameSize() const;

+        virtual uint32_t        latency() const;

+        virtual float           msecsPerFrame() const;

+        virtual status_t        getPosition(uint32_t *position);

+        virtual int             getSessionId();

+

+        virtual status_t        open(

+                uint32_t sampleRate, int channelCount,

+                int format, int bufferCount,

+                AudioCallback cb, void *cookie);

+

+        virtual void            start();

+        virtual ssize_t         write(const void* buffer, size_t size);

+        virtual void            stop();

+        virtual void            flush();

+        virtual void            pause();

+        virtual void            close();

+        void setAudioStreamType(int streamType) { mStreamType = streamType; }

+                void            setVolume(float left, float right);

+        virtual status_t        dump(int fd,const Vector<String16>& args) const;

+

+        static bool             isOnEmulator();

+        static int              getMinBufferCount();

+    private:

+        static void             setMinBufferCount();

+        static void             CallbackWrapper(

+                int event, void *me, void *info);

+

+        AudioTrack*             mTrack;

+        AudioCallback           mCallback;

+        void *                  mCallbackCookie;

+        int                     mStreamType;

+        float                   mLeftVolume;

+        float                   mRightVolume;

+        float                   mMsecsPerFrame;

+        uint32_t                mLatency;

+        int                     mSessionId;

+        static bool             mIsOnEmulator;

+        static int              mMinBufferCount; // 12 for emulator; otherwise 4

+

+        public:

+        uint32_t                mNumFramesWritten;

+        void                    snoopWrite(const void*, size_t);

+    };

+

+public:

+    VideoEditorPlayer();

+    virtual ~VideoEditorPlayer();

+

+    virtual status_t initCheck();

+

+    virtual status_t setDataSource(

+            const char *url, const KeyedVector<String8, String8> *headers);

+

+    virtual status_t setDataSource(int fd, int64_t offset, int64_t length);

+    virtual status_t setVideoISurface(const sp<ISurface> &surface);

+    virtual status_t setVideoSurface(const sp<Surface> &surface);

+    virtual status_t prepare();

+    virtual status_t prepareAsync();

+    virtual status_t start();

+    virtual status_t stop();

+    virtual status_t pause();

+    virtual bool isPlaying();

+    virtual status_t seekTo(int msec);

+    virtual status_t getCurrentPosition(int *msec);

+    virtual status_t getDuration(int *msec);

+    virtual status_t reset();

+    virtual status_t setLooping(int loop);

+    virtual player_type playerType();

+    virtual status_t invoke(const Parcel &request, Parcel *reply);

+    virtual void setAudioSink(const sp<AudioSink> &audioSink);

+    virtual status_t suspend();

+    virtual status_t resume();

+

+    virtual status_t getMetadata(

+                        const media::Metadata::Filter& ids, Parcel *records);

+

+    virtual status_t loadEffectsSettings(

+                         M4VSS3GPP_EffectSettings* pEffectSettings, int nEffects);

+

+    virtual status_t loadAudioMixSettings(

+                         M4xVSS_AudioMixingSettings* pAudioMixSettings);

+

+    virtual status_t setAudioMixPCMFileHandle(

+                         M4OSA_Context pAudioMixPCMFileHandle);

+

+    virtual status_t setAudioMixStoryBoardParam(

+                         M4OSA_UInt32 x, M4OSA_UInt32 y, M4OSA_UInt32 z);

+

+    virtual status_t setPlaybackBeginTime(uint32_t msec);

+    virtual status_t setPlaybackEndTime(uint32_t msec);

+    virtual status_t setStoryboardStartTime(uint32_t msec);

+    virtual status_t setProgressCallbackInterval(uint32_t cbInterval);

+

+    virtual status_t setMediaRenderingMode(M4xVSS_MediaRendering mode,

+                          M4VIDEOEDITING_VideoFrameSize outputVideoSize);

+

+    virtual status_t resetJniCallbackTimeStamp();

+    virtual status_t setImageClipProperties(uint32_t width, uint32_t height);

+    virtual status_t readFirstVideoFrame();

+

+

+private:

+    PreviewPlayer       *mPlayer;

+    sp<VeAudioOutput>    mVeAudioSink;

+

+    VideoEditorPlayer(const VideoEditorPlayer &);

+    VideoEditorPlayer &operator=(const VideoEditorPlayer &);

+};

+

+}  // namespace android

+

+#endif  // ANDROID_VIDEOEDITOR_PLAYER_H