auto import from //depot/cupcake/@135843
diff --git a/media/libmediaplayerservice/VorbisPlayer.h b/media/libmediaplayerservice/VorbisPlayer.h
new file mode 100644
index 0000000..c30dc1b
--- /dev/null
+++ b/media/libmediaplayerservice/VorbisPlayer.h
@@ -0,0 +1,91 @@
+/*
+**
+** Copyright 2008, 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_VORBISPLAYER_H
+#define ANDROID_VORBISPLAYER_H
+
+#include <utils/threads.h>
+
+#include <media/MediaPlayerInterface.h>
+#include <media/AudioTrack.h>
+
+#include "ivorbiscodec.h"
+#include "ivorbisfile.h"
+
+#define ANDROID_LOOP_TAG "ANDROID_LOOP"
+
+namespace android {
+
+class VorbisPlayer : public MediaPlayerInterface {
+public:
+                        VorbisPlayer();
+                        ~VorbisPlayer();
+
+    virtual void        onFirstRef();
+    virtual status_t    initCheck();
+    virtual status_t    setDataSource(const char* path);
+    virtual status_t    setDataSource(int fd, int64_t offset, int64_t length);
+    virtual status_t    setVideoSurface(const sp<ISurface>& surface) { return UNKNOWN_ERROR; }
+    virtual status_t    prepare();
+    virtual status_t    prepareAsync();
+    virtual status_t    start();
+    virtual status_t    stop();
+    virtual status_t    seekTo(int msec);
+    virtual status_t    pause();
+    virtual bool        isPlaying();
+    virtual status_t    getCurrentPosition(int* msec);
+    virtual status_t    getDuration(int* msec);
+    virtual status_t    release();
+    virtual status_t    reset();
+    virtual status_t    setLooping(int loop);
+    virtual player_type playerType() { return VORBIS_PLAYER; }
+
+private:
+            status_t    setdatasource(const char *path, int fd, int64_t offset, int64_t length);
+            status_t    reset_nosync();
+            status_t    createOutputTrack();
+    static  int         renderThread(void*);
+            int         render();
+
+    static  size_t      vp_fread(void *, size_t, size_t, void *);
+    static  int         vp_fseek(void *, ogg_int64_t, int);
+    static  int         vp_fclose(void *);
+    static  long        vp_ftell(void *);
+
+    Mutex               mMutex;
+    Condition           mCondition;
+    FILE*               mFile;
+    int64_t             mOffset;
+    int64_t             mLength;
+    OggVorbis_File      mVorbisFile;
+    char*               mAudioBuffer;
+    int                 mPlayTime;
+    int                 mDuration;
+    status_t            mState;
+    int                 mStreamType;
+    bool                mLoop;
+    bool                mAndroidLoop;
+    volatile bool       mExit;
+    bool                mPaused;
+    volatile bool       mRender;
+    pid_t               mRenderTid;
+};
+
+}; // namespace android
+
+#endif // ANDROID_VORBISPLAYER_H
+