174f3dff60f96d89b320f9a322307118676db1dbvboxsync/* $Id$ */
174f3dff60f96d89b320f9a322307118676db1dbvboxsync/** @file
174f3dff60f96d89b320f9a322307118676db1dbvboxsync * VirtualBox driver interface to video recording backend.
174f3dff60f96d89b320f9a322307118676db1dbvboxsync */
174f3dff60f96d89b320f9a322307118676db1dbvboxsync
174f3dff60f96d89b320f9a322307118676db1dbvboxsync/*
174f3dff60f96d89b320f9a322307118676db1dbvboxsync * Copyright (C) 2014 Oracle Corporation
174f3dff60f96d89b320f9a322307118676db1dbvboxsync *
174f3dff60f96d89b320f9a322307118676db1dbvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
174f3dff60f96d89b320f9a322307118676db1dbvboxsync * available from http://www.virtualbox.org. This file is free software;
174f3dff60f96d89b320f9a322307118676db1dbvboxsync * you can redistribute it and/or modify it under the terms of the GNU
174f3dff60f96d89b320f9a322307118676db1dbvboxsync * General Public License (GPL) as published by the Free Software
174f3dff60f96d89b320f9a322307118676db1dbvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
174f3dff60f96d89b320f9a322307118676db1dbvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
174f3dff60f96d89b320f9a322307118676db1dbvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
174f3dff60f96d89b320f9a322307118676db1dbvboxsync */
174f3dff60f96d89b320f9a322307118676db1dbvboxsync
174f3dff60f96d89b320f9a322307118676db1dbvboxsync#ifndef ____H_DRVAUDIOVIDEOREC
174f3dff60f96d89b320f9a322307118676db1dbvboxsync#define ____H_DRVAUDIOVIDEOREC
174f3dff60f96d89b320f9a322307118676db1dbvboxsync
174f3dff60f96d89b320f9a322307118676db1dbvboxsync#include <VBox/com/ptr.h>
174f3dff60f96d89b320f9a322307118676db1dbvboxsync#include <VBox/vmm/pdmdrv.h>
174f3dff60f96d89b320f9a322307118676db1dbvboxsync#include <VBox/vmm/pdmifs.h>
174f3dff60f96d89b320f9a322307118676db1dbvboxsync
174f3dff60f96d89b320f9a322307118676db1dbvboxsyncclass Console;
174f3dff60f96d89b320f9a322307118676db1dbvboxsync
174f3dff60f96d89b320f9a322307118676db1dbvboxsyncclass AudioVideoRec
174f3dff60f96d89b320f9a322307118676db1dbvboxsync{
174f3dff60f96d89b320f9a322307118676db1dbvboxsync
174f3dff60f96d89b320f9a322307118676db1dbvboxsyncpublic:
174f3dff60f96d89b320f9a322307118676db1dbvboxsync
174f3dff60f96d89b320f9a322307118676db1dbvboxsync AudioVideoRec(Console *pConsole);
174f3dff60f96d89b320f9a322307118676db1dbvboxsync virtual ~AudioVideoRec(void);
174f3dff60f96d89b320f9a322307118676db1dbvboxsync
174f3dff60f96d89b320f9a322307118676db1dbvboxsyncpublic:
174f3dff60f96d89b320f9a322307118676db1dbvboxsync
174f3dff60f96d89b320f9a322307118676db1dbvboxsync static const PDMDRVREG DrvReg;
174f3dff60f96d89b320f9a322307118676db1dbvboxsync
174f3dff60f96d89b320f9a322307118676db1dbvboxsync Console *getParent(void) { return mParent; }
174f3dff60f96d89b320f9a322307118676db1dbvboxsync
174f3dff60f96d89b320f9a322307118676db1dbvboxsyncpublic:
174f3dff60f96d89b320f9a322307118676db1dbvboxsync
174f3dff60f96d89b320f9a322307118676db1dbvboxsync int handleVideoRecSvrCmdAudioInputIntercept(bool fIntercept);
174f3dff60f96d89b320f9a322307118676db1dbvboxsync int handleVideoRecSvrCmdAudioInputEventBegin(void *pvContext, int iSampleHz, int cChannels, int cBits, bool fUnsigned);
174f3dff60f96d89b320f9a322307118676db1dbvboxsync int handleVideoRecSvrCmdAudioInputEventData(void *pvContext, const void *pvData, uint32_t cbData);
174f3dff60f96d89b320f9a322307118676db1dbvboxsync int handleVideoRecSvrCmdAudioInputEventEnd(void *pvContext);
174f3dff60f96d89b320f9a322307118676db1dbvboxsync
174f3dff60f96d89b320f9a322307118676db1dbvboxsyncpublic:
174f3dff60f96d89b320f9a322307118676db1dbvboxsync
174f3dff60f96d89b320f9a322307118676db1dbvboxsync static DECLCALLBACK(int) drvConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfg, uint32_t fFlags);
174f3dff60f96d89b320f9a322307118676db1dbvboxsync static DECLCALLBACK(void) drvDestruct(PPDMDRVINS pDrvIns);
174f3dff60f96d89b320f9a322307118676db1dbvboxsync
174f3dff60f96d89b320f9a322307118676db1dbvboxsyncprivate:
174f3dff60f96d89b320f9a322307118676db1dbvboxsync
174f3dff60f96d89b320f9a322307118676db1dbvboxsync /** Pointer to the associated video recording audio driver. */
174f3dff60f96d89b320f9a322307118676db1dbvboxsync struct DRVAUDIOVIDEOREC *mpDrv;
174f3dff60f96d89b320f9a322307118676db1dbvboxsync /** Pointer to parent. */
174f3dff60f96d89b320f9a322307118676db1dbvboxsync Console * const mParent;
174f3dff60f96d89b320f9a322307118676db1dbvboxsync};
174f3dff60f96d89b320f9a322307118676db1dbvboxsync
174f3dff60f96d89b320f9a322307118676db1dbvboxsync#endif /* !____H_DRVAUDIOVIDEOREC */
174f3dff60f96d89b320f9a322307118676db1dbvboxsync