| // Copyright (c) 2010 The WebM project authors. All Rights Reserved. |
| // |
| // Use of this source code is governed by a BSD-style license |
| // that can be found in the LICENSE file in the root of the source |
| // tree. An additional intellectual property rights grant can be found |
| // in the file PATENTS. All contributing project authors may |
| // be found in the AUTHORS file in the root of the source tree. |
| |
| |
| #ifndef _WEBM_COMMON_H_ |
| #define _WEBM_COMMON_H_ 1 |
| //Here are some common data structs and functions to support them |
| #if defined(__APPLE_CC__) |
| #include <QuickTime/QuickTime.h> |
| #else |
| #include <QuickTimeComponents.h> |
| |
| #if defined(TARGET_OS_WIN32) |
| #define _WINIOCTL_ |
| #error windows |
| #include <windows.h> |
| #endif /* TARGET_OS_WIN32 */ |
| |
| #endif /* __APPLE_CC__ */ |
| |
| typedef struct |
| { |
| void *data; |
| UInt32 size; |
| UInt32 offset; |
| }WebMBuffer; |
| |
| enum{ |
| KEY_FRAME = 0x01, |
| VIDEO_FRAME = 0x02, |
| AUDIO_FRAME = 0x04, |
| ALT_REF_FRAME = 0x08 |
| }; |
| |
| typedef struct |
| { |
| void *data; |
| UInt32 size; |
| UInt32 offset; //pointer to the end of output buffers data. |
| UInt64 timeMs; //time in milliseconds |
| UInt16 frameType; //corresponds to above frame types |
| UInt32 indx; |
| } WebMBufferedFrame; |
| |
| |
| //these frames should be queued chronologically |
| typedef struct |
| { |
| WebMBufferedFrame** queue; |
| int maxSize; //the maximum allocated memory |
| int size; |
| } WebMQueuedFrames; |
| |
| |
| typedef struct |
| { |
| MovieExportGetPropertyUPP propertyProc; |
| MovieExportGetDataUPP dataProc; |
| void *refCon; |
| MovieExportGetDataParams params; |
| Boolean eos; |
| TimeValue64 time; //This time must be based on the source Time scale |
| TimeScale timeScale; |
| long trackID; |
| } StreamSource; |
| |
| |
| |
| void initFrameQueue(WebMQueuedFrames *queue); |
| WebMBufferedFrame* getFrame(WebMQueuedFrames *queue); |
| void popFrame(WebMQueuedFrames *queue); |
| // returns -1 on memory error |
| int addFrameToQueue(WebMQueuedFrames *queue, void * data,UInt32 size, UInt64 timeMs, UInt16 frameType, UInt32 indx); |
| int frameQueueSize(WebMQueuedFrames *queue); |
| int freeFrameQueue(WebMQueuedFrames *queue); |
| |
| void initMovieGetParams(StreamSource *get); |
| void dbg_printDataParams(StreamSource *get); |
| ComponentResult initStreamSource(StreamSource *source, TimeScale scale, |
| long trackID, MovieExportGetPropertyUPP propertyProc, |
| MovieExportGetDataUPP getDataProc, void *refCon); |
| double getTimeAsSeconds(StreamSource *source); |
| |
| #endif |