summaryrefslogtreecommitdiff
path: root/camera/inc/OmxFrameDecoder.h
diff options
context:
space:
mode:
Diffstat (limited to 'camera/inc/OmxFrameDecoder.h')
-rw-r--r--camera/inc/OmxFrameDecoder.h204
1 files changed, 0 insertions, 204 deletions
diff --git a/camera/inc/OmxFrameDecoder.h b/camera/inc/OmxFrameDecoder.h
deleted file mode 100644
index 7cbbf2c..0000000
--- a/camera/inc/OmxFrameDecoder.h
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * Copyright (C) Texas Instruments - http://www.ti.com/
- *
- * 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 OMXFRAMEDECODER_H_
-#define OMXFRAMEDECODER_H_
-
-
-#include <utils/threads.h>
-#include <utils/List.h>
-#include "FrameDecoder.h"
-#include "OMX_Types.h"
-#include "OMX_Core.h"
-#include "OMX_Component.h"
-#include "Decoder_libjpeg.h"
-
-namespace Ti {
-namespace Camera {
-
-enum OmxDecoderState {
- OmxDecoderState_Unloaded = 0,
- OmxDecoderState_Loaded,
- OmxDecoderState_Idle,
- OmxDecoderState_Executing,
- OmxDecoderState_Error,
- OmxDecoderState_Invalid,
- OmxDecoderState_Reconfigure,
- OmxDecoderState_Exit
-};
-
-enum PortType {
- PortIndexInput = 0,
- PortIndexOutput = 1
-};
-
-
-struct OmxMessage {
- enum {
- EVENT,
- EMPTY_BUFFER_DONE,
- FILL_BUFFER_DONE,
- }type;
-
- union {
- // if type == EVENT
- struct {
- OMX_PTR appData;
- OMX_EVENTTYPE event;
- OMX_U32 data1;
- OMX_U32 data2;
- OMX_PTR pEventData;
- } eventData;
-
- // if type == (EMPTY_BUFFER_DONE || FILL_BUFFER_DONE)
- struct {
- OMX_PTR appData;
- OMX_BUFFERHEADERTYPE* pBuffHead;
- } bufferData;
- } u;
-};
-
-class CallbackDispatcher;
-
-struct CallbackDispatcherThread : public android::Thread {
- CallbackDispatcherThread(CallbackDispatcher *dispatcher)
- : mDispatcher(dispatcher) {
- }
-
-private:
- CallbackDispatcher *mDispatcher;
-
- bool threadLoop();
-
- CallbackDispatcherThread(const CallbackDispatcherThread &);
- CallbackDispatcherThread &operator=(const CallbackDispatcherThread &);
-};
-
-class CallbackDispatcher
-{
-
-public:
- CallbackDispatcher();
- ~CallbackDispatcher();
-
- void post(const OmxMessage &msg);
- bool loop();
-
-private:
- void dispatch(const OmxMessage &msg);
-
- CallbackDispatcher(const CallbackDispatcher &);
- CallbackDispatcher &operator=(const CallbackDispatcher &);
-
- android::Mutex mLock;
- android::Condition mQueueChanged;
- android::List<OmxMessage> mQueue;
- android::sp<CallbackDispatcherThread> mThread;
- bool mDone;
-};
-
-class OmxFrameDecoder : public FrameDecoder
-{
-
-public:
- OmxFrameDecoder(DecoderType type = DecoderType_MJPEG);
- virtual ~OmxFrameDecoder();
-
- OMX_ERRORTYPE eventHandler(const OMX_EVENTTYPE event, const OMX_U32 data1, const OMX_U32 data2,
- const OMX_PTR pEventData);
- OMX_ERRORTYPE fillBufferDoneHandler(OMX_BUFFERHEADERTYPE* pBuffHead);
- OMX_ERRORTYPE emptyBufferDoneHandler(OMX_BUFFERHEADERTYPE* pBuffHead);
-
- static OMX_ERRORTYPE eventCallback(const OMX_HANDLETYPE component,
- const OMX_PTR appData, const OMX_EVENTTYPE event, const OMX_U32 data1, const OMX_U32 data2,
- const OMX_PTR pEventData);
- static OMX_ERRORTYPE emptyBufferDoneCallback(OMX_HANDLETYPE hComponent, OMX_PTR appData, OMX_BUFFERHEADERTYPE* pBuffHead);
- static OMX_ERRORTYPE fillBufferDoneCallback(OMX_HANDLETYPE hComponent, OMX_PTR appData, OMX_BUFFERHEADERTYPE* pBuffHead);
-
- virtual bool getPaddedDimensions(size_t &width, size_t &height);
-
-protected:
- virtual void doConfigure (const DecoderParameters& config);
- virtual void doProcessInputBuffer();
- virtual status_t doStart();
- virtual void doStop();
- virtual void doFlush();
- virtual void doRelease();
-
-private:
- status_t setComponentRole();
- status_t enableGrallockHandles();
- status_t allocateBuffersOutput();
- void freeBuffersOnOutput();
- void freeBuffersOnInput();
- status_t doPortReconfigure();
- void dumpPortSettings(PortType port);
- status_t getAndConfigureDecoder();
- status_t configureJpegPorts(int width, int height);
- status_t switchToIdle();
- status_t allocateBuffersInput();
- status_t disablePortSync(int port);
- status_t enablePortSync(int port);
- void queueOutputBuffers();
- status_t setVideoOutputFormat(OMX_U32 width, OMX_U32 height);
-
-
- status_t omxInit();
- status_t omxGetHandle(OMX_HANDLETYPE *handle, OMX_PTR pAppData, OMX_CALLBACKTYPE & callbacks);
- OmxDecoderState getOmxState() { return mCurrentState; }
- status_t commitState(OmxDecoderState state) { mPreviousState = mCurrentState; mCurrentState = state; return NO_ERROR; }
- status_t setVideoPortFormatType(
- OMX_U32 portIndex,
- OMX_VIDEO_CODINGTYPE compressionFormat,
- OMX_COLOR_FORMATTYPE colorFormat);
- status_t omxGetParameter(OMX_INDEXTYPE index, OMX_PTR ptr);
- status_t omxSetParameter(OMX_INDEXTYPE index, OMX_PTR ptr);
- status_t omxSendCommand(OMX_COMMANDTYPE cmd, OMX_S32 param);
- status_t omxGetConfig(OMX_INDEXTYPE index, OMX_PTR ptr);
- status_t omxSetConfig(OMX_INDEXTYPE index, OMX_PTR ptr);
- status_t omxFillThisBuffer(OMX_BUFFERHEADERTYPE *pOutBufHdr);
- status_t omxEmptyThisBuffer(android::sp<MediaBuffer>& inBuffer, OMX_BUFFERHEADERTYPE *pInBufHdr);
- void omxDumpPortSettings(OMX_PARAM_PORTDEFINITIONTYPE& def);
- void omxDumpBufferHeader (OMX_BUFFERHEADERTYPE* bh);
- status_t omxSwitchToExecutingSync();
-
- bool mOmxInialized;
-
- OMX_HANDLETYPE mHandleComp;
- OmxDecoderState mCurrentState;
- OmxDecoderState mPreviousState;
-
- // Condition and Mutex used during OpenMAX state transitions & command completion
- android::Condition mStateCondition;
- android::Mutex mHwLock;
-
- android::Vector<OMX_BUFFERHEADERTYPE*> mOutBufferHeaders;
- android::Vector<OMX_BUFFERHEADERTYPE*> mInBufferHeaders;
-
- CallbackDispatcher mDispatcher;
-
- bool mStopping;
- DecoderType mDecoderType;
-
- // If true we will search for DHT in JPEG buffer
- bool mIsNeedCheckDHT;
- // If true we always append DHT to JPEG buffer
- bool mAlwaysAppendDHT;
-};
-
-} //namespace Camera
-} //namespace Ti
-#endif /* OMXFRAMEDECODER_H_ */