summaryrefslogtreecommitdiffstats
path: root/src/VBox/Devices/Audio/HDAStreamMap.h
blob: f0e6e62e05388188da97d75072f80edecc663984 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/* $Id: HDAStreamMap.h $ */
/** @file
 * HDAStreamMap.h - Stream map functions for HD Audio.
 */

/*
 * Copyright (C) 2017-2019 Oracle Corporation
 *
 * This file is part of VirtualBox Open Source Edition (OSE), as
 * available from http://www.virtualbox.org. This file is free software;
 * you can redistribute it and/or modify it under the terms of the GNU
 * General Public License (GPL) as published by the Free Software
 * Foundation, in version 2 as it comes in the "COPYING" file of the
 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
 */

#ifndef VBOX_INCLUDED_SRC_Audio_HDAStreamMap_h
#define VBOX_INCLUDED_SRC_Audio_HDAStreamMap_h
#ifndef RT_WITHOUT_PRAGMA_ONCE
# pragma once
#endif

/**
 * Structure for keeping an audio stream data mapping.
 */
typedef struct HDASTREAMMAP
{
    /** The stream's layout. */
    PDMAUDIOSTREAMLAYOUT               enmLayout;
    uint8_t                            cbFrameSize;
    /** Number of mappings in paMappings. */
    uint8_t                            cMappings;
    uint8_t                            aPadding[2];
    /** Array of stream mappings.
     *  Note: The mappings *must* be layed out in an increasing order, e.g.
     *        how the data appears in the given data block. */
    R3PTRTYPE(PPDMAUDIOSTREAMMAP)      paMappings;
#if HC_ARCH_BITS == 32
    RTR3PTR                            Padding1;
#endif
#ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND
    /** Circular buffer holding for holding audio data for this mapping. */
    R3PTRTYPE(PRTCIRCBUF)              pCircBuf;
#endif
} HDASTREAMMAP;
AssertCompileSizeAlignment(HDASTREAMMAP, 8);
typedef HDASTREAMMAP *PHDASTREAMMAP;

/** @name Stream mapping functions.
 * @{
 */
#ifdef IN_RING3
int  hdaR3StreamMapInit(PHDASTREAMMAP pMapping, PPDMAUDIOPCMPROPS pProps);
void hdaR3StreamMapDestroy(PHDASTREAMMAP pMapping);
void hdaR3StreamMapReset(PHDASTREAMMAP pMapping);
#endif /* IN_RING3 */
/** @} */

#endif /* !VBOX_INCLUDED_SRC_Audio_HDAStreamMap_h */