blob: 49592794d59cbfcb51d853b567a743fdb85f4135 [file] [log] [blame]
// 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_EXPORT_STRUCTS_h_
#define _WEBM_EXPORT_STRUCTS_h_ 1
#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__ */
#include "EbmlDataHWriter.h"
#include "WebMCommon.h"
typedef struct
{
ComponentInstance vorbisComponentInstance;
AudioStreamBasicDescription asbd;
WebMBuffer buf;
} AudioStream, *AudioStreamPtr;
typedef struct
{
ICMDecompressionSessionRef decompressionSession;
ICMCompressionSessionRef compressionSession;
Boolean bTwoPass;
UInt32 lastTimeMs;
} VideoStream, *VideoStreamPtr;
typedef struct
{
OSType trackType;
StreamSource source;
WebMQueuedFrames frameQueue;
UInt64 framesIn;
UInt64 framesOut;
Boolean complete;
union
{
VideoStream vid;
AudioStream aud;
} ;
} GenericStream, *GenericStreamPtr;
typedef struct
{
UInt64 loc;
unsigned long timeVal;
unsigned int track;
unsigned int blockNumber;
} WebMCuePoint;
typedef struct
{
ComponentInstance self;
ComponentInstance quickTimeMovieExporter;
int streamCount;
GenericStream **streams; //should be either audio or video
unsigned long cueCount;
Handle cueHandle;
MovieProgressUPP progressProc;
long progressRefCon;
Boolean progressOpen;
Boolean canceled;
Boolean startNewCluster;
UInt64 newClusterStartTime;
double framerate;
UInt32 webmTimeCodeScale;
/* settings */
Boolean bExportVideo;
Boolean bExportAudio;
Boolean bAltRefEnabled;
AudioStreamBasicDescription audioBSD;
//Ebml writing
unsigned long clusterTime;
unsigned long clusterKeyFrameTime;
EbmlLoc clusterStart;
unsigned int blocksInCluster; //this increments any time a block added
SInt64 clusterOffset;
/////////////////
QTAtomContainer audioSettingsAtom; //hold on to any audio settings the user changes
QTAtomContainer videoSettingsAtom;
Handle videoSettingsCustom; //this contains vp8 custom settings.
unsigned int currentPass;
/* settings dialog vars */
Boolean bMovieHasAudio;
Boolean bMovieHasVideo;
Movie setdlg_movie;
Track setdlg_track;
} WebMExportGlobals, *WebMExportGlobalsPtr;
#endif /* __exporter_types_h__ */