2025-04-23 00:09:35 -04:00

374 lines
7.1 KiB
C

/**************************************************************************
* *
* XedFile.h -- This module defines the APIs for Xbox 360 Studio Files *
* *
* Copyright (c) Microsoft Corp. All rights reserved. *
* *
**************************************************************************/
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
#define XEDAPI WINAPI
typedef enum _NUI_IMAGE_TYPE NUI_IMAGE_TYPE;
typedef struct _NUI_SKELETON_FRAME NUI_SKELETON_FRAME;
typedef struct _NUI_IDENTITY_MESSAGE NUI_IDENTITY_MESSAGE;
#ifndef NUI_INITIALIZE_FLAG_USES_COLOR
#define NUI_INITIALIZE_FLAG_USES_COLOR 0x00000002
#endif
#ifndef NUI_INITIALIZE_FLAG_USES_HIGH_QUALITY_COLOR
#define NUI_INITIALIZE_FLAG_USES_HIGH_QUALITY_COLOR 0x00000040
#endif
typedef struct _XSTUDIO_TITLE_INDEX_DATA XSTUDIO_TITLE_INDEX_DATA;
typedef struct XED_CONTEXT XED_CONTEXT;
#define XED_EVENTINDEX_INVALID ((UINT)-1)
#define XED_FRAMENUMBER_INVALID ((UINT)-1)
#define XED_TIMESTAMP_INVALID ((UINT64)-1)
#define XED_FLAG_CREATE_NEW CREATE_NEW
#define XED_FLAG_CREATE_ALWAYS CREATE_ALWAYS
HRESULT
XEDAPI
XedOpenFile(
_In_z_ const char * sFilePath,
DWORD flags,
_Deref_out_opt_ XED_CONTEXT ** ppContext
);
HRESULT
XEDAPI
XedCreateFile(
_In_z_ const char * sFilePath,
_In_opt_ const XED_CONTEXT * pTemplate,
DWORD flags,
_Deref_out_opt_ XED_CONTEXT ** ppContext
);
HRESULT
XEDAPI
XedCloseFile(
XED_CONTEXT ** ppContext
);
HRESULT
XedSetNuiDepthImageType(
XED_CONTEXT * pContext,
NUI_IMAGE_TYPE newImageType,
NUI_IMAGE_TYPE * pPreviousImageType
);
HRESULT
XEDAPI
XedSetNuiColorBufferType(
_In_ XED_CONTEXT * pContext,
NUI_IMAGE_TYPE newImageType,
_Out_opt_ NUI_IMAGE_TYPE * pPreviousImageType
);
HRESULT
XEDAPI
XedSetFileNuiColorQuality(
_In_ XED_CONTEXT * pContext,
DWORD newColorQuality,
_Out_opt_ DWORD * pPreviousColorQuality
);
UINT
XEDAPI
XedGetNuiDepthEventCount(
_In_ XED_CONTEXT * pContext
);
UINT
XEDAPI
XedGetNuiColorEventCount(
_In_ XED_CONTEXT * pContext
);
UINT
XEDAPI
XedGetNuiSkeletonEventCount(
_In_ XED_CONTEXT * pContext
);
UINT
XEDAPI
XedGetNuiDepthEventIndexFromFrameNumber(
_In_ XED_CONTEXT * pContext,
UINT frameNumber
);
UINT
XEDAPI
XedGetNuiColorEventIndexFromFrameNumber(
_In_ XED_CONTEXT * pContext,
UINT frameNumber
);
UINT
XEDAPI
XedGetNuiSkeletonEventIndexFromFrameNumber(
_In_ XED_CONTEXT * pContext,
UINT frameNumber
);
UINT
XEDAPI
XedGetNuiDepthEventIndexFromMicroseconds(
_In_ XED_CONTEXT * pContext,
UINT64 frameMicroseconds
);
UINT
XEDAPI
XedGetNuiColorEventIndexFromMicroseconds(
_In_ XED_CONTEXT * pContext,
UINT64 frameMicroseconds
);
UINT
XEDAPI
XedGetNuiSkeletonEventIndexFromMicroseconds(
_In_ XED_CONTEXT * pContext,
UINT64 frameMicroseconds
);
HRESULT
XEDAPI
XedReadNuiDepthFrame(
_In_ XED_CONTEXT * pContext,
UINT eventIndex,
_Out_opt_ UINT * pFrameNumber,
_Out_opt_ UINT64 * pFrameMicroseconds,
_Out_opt_bytecap_(bufferSize) WORD * pBuffer,
UINT bufferSize, // in bytes
BOOL registerWithColor
);
HRESULT
XEDAPI
XedReadNuiColorFrame(
_In_ XED_CONTEXT * pContext,
UINT eventIndex,
_Out_opt_ UINT * pFrameNumber,
_Out_opt_ UINT64 * pFrameMicroseconds,
_Out_opt_bytecap_(bufferSize) DWORD * pBuffer,
UINT bufferSize, // in bytes
BOOL registerWithDepth
);
HRESULT
XEDAPI
XedReadNuiSkeletonFrame(
_In_ XED_CONTEXT * pContext,
UINT eventIndex,
_Out_opt_ UINT * pFrameNumber,
_Out_opt_ UINT64 * pFrameMicroseconds,
_Out_opt_bytecap_(skeletonFrameSize) NUI_SKELETON_FRAME * pSkeletonFrame,
UINT skeletonFrameSize
);
HRESULT
XEDAPI
XedWriteNuiDepthFrame(
_In_ XED_CONTEXT * pContext,
UINT frameNumber,
UINT64 frameMicroseconds,
_In_bytecount_(bufferSize) const WORD * pBuffer,
UINT bufferSize // in bytes
);
HRESULT
XEDAPI
XedWriteNuiColorFrame(
_In_ XED_CONTEXT * pContext,
UINT frameNumber,
UINT64 frameMicroseconds,
_In_bytecount_(bufferSize) const DWORD * pBuffer,
UINT bufferSize // in bytes
);
HRESULT
XEDAPI
XedWriteNuiSkeletonFrame(
_In_ XED_CONTEXT * pContext,
UINT frameNumber,
UINT64 frameMicroseconds,
_In_bytecount_(skeletonFrameSize) const NUI_SKELETON_FRAME * pSkeletonFrame,
UINT skeletonFrameSize
);
HRESULT
XEDAPI
XedCopyNuiDepthFrame(
_In_ XED_CONTEXT * pFromContext,
UINT eventIndex,
_In_ XED_CONTEXT * pToContext,
UINT frameNumber,
UINT64 frameMicroseconds
);
HRESULT
XEDAPI
XedCopyNuiColorFrame(
_In_ XED_CONTEXT * pFromContext,
UINT eventIndex,
_In_ XED_CONTEXT * pToContext,
UINT frameNumber,
UINT64 frameMicroseconds
);
HRESULT
XEDAPI
XedCopyNuiSkeletonFrame(
_In_ XED_CONTEXT * pFromContext,
UINT eventIndex,
_In_ XED_CONTEXT * pToContext,
UINT frameNumber,
UINT64 frameMicroseconds
);
UINT
XEDAPI
XedGetTitleDataEventCount(
_In_ XED_CONTEXT * pContext
);
UINT
XEDAPI
XedGetTitleDataEventIndexFromMicroseconds(
_In_ XED_CONTEXT * pContext,
UINT64 eventMicroseconds
);
HRESULT
XEDAPI
XedReadTitleData(
_In_ XED_CONTEXT * pContext,
UINT eventIndex,
_Out_opt_ UINT64 * pEventMicroseconds,
_Out_opt_ XSTUDIO_TITLE_INDEX_DATA * pTitleIndexData,
_Out_opt_bytecap_(titleDataBufferSize) void * pTitleDataBuffer,
UINT titleDataBufferSize,
_Out_ UINT * pRequiredTitleDataBufferSize
);
HRESULT
XEDAPI
XedWriteTitleData(
_In_ XED_CONTEXT * pContext,
UINT64 eventMicroseconds,
_In_opt_ const XSTUDIO_TITLE_INDEX_DATA * pTitleIndexData,
_In_bytecount_(titleDataBufferSize) const void * pTitleDataBuffer,
UINT titleDataBufferSize
);
HRESULT
XEDAPI
XedCopyTitleData(
_In_ XED_CONTEXT * pFromContext,
UINT eventIndex,
_In_ XED_CONTEXT * pToContext,
UINT64 eventMicroseconds
);
UINT
XEDAPI
XedGetEventCount(
_In_ XED_CONTEXT * pContext,
XSTUDIO_STREAM_ID streamId
);
UINT
XEDAPI
XedGetEventIndexFromMicroseconds(
_In_ XED_CONTEXT * pContext,
XSTUDIO_STREAM_ID streamId,
UINT64 eventMicroseconds
);
HRESULT
XEDAPI
XedReadNuiIdentityMessage(
_In_ XED_CONTEXT * pContext,
UINT eventIndex,
_Out_opt_ UINT64* pFrameMicroseconds,
_Out_opt_bytecap_(identityMessageSize) NUI_IDENTITY_MESSAGE * pIdentityMessage,
UINT identityMessageSize
);
HRESULT
XEDAPI
XedWriteNuiIdentityMessage(
_In_ XED_CONTEXT * pContext,
UINT64 frameMicroseconds,
_In_bytecount_(identityMessageSize) const NUI_IDENTITY_MESSAGE * pIdentityMessage,
UINT identityMessageSize
);
HRESULT
XEDAPI
XedCopyNuiIdentityMessage(
_In_ XED_CONTEXT * pSrcContext,
UINT srcEventIndex,
_In_ XED_CONTEXT * pDstContext,
DWORD dwDstTrackingID,
UINT64 dstEventMicroseconds );
#ifdef __cplusplus
} // extern "C"
#endif