summaryrefslogtreecommitdiff
path: root/mm-core/inc/QOMX_FileFormatExtensions.h
blob: c88bec2926f5302a1b886997dfe4ee86a82af8f3 (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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
/*--------------------------------------------------------------------------
Copyright (c) 2011 The Linux Foundation. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.
    * Neither the name of The Linux Foundation nor
      the names of its contributors may be used to endorse or promote
      products derived from this software without specific prior written
      permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--------------------------------------------------------------------------*/

#ifndef __QOMX_FILE_FORMAT_EXTENSIONS_H__
#define __QOMX_FILE_FORMAT_EXTENSIONS_H__

/*============================================================================
*//** @file QOMX_FileFormatExtensions.h
  This header contains constants and type definitions that specify the
  extensions added to the OpenMAX Vendor specific APIs.
*//*========================================================================*/

/*============================================================================
                              Edit History

when       who     what, where, why
--------   ---     -------------------------------------------------------

============================================================================*/

//////////////////////////////////////////////////////////////////////////////
//                             Include Files
//////////////////////////////////////////////////////////////////////////////
#include "OMX_Core.h"


/* :OMX.QCOM.index.param.container.info*/
#define QOMX_QcomIndexParamContainerInfo 0x7F000009

/**<OMX.Qualcomm.index.video.param.encrypttypeconfigparameters*/
#define QOMX_FilemuxIndexEncryptionTypeConfigParameters 0x7F00000A

#define QOMX_INDEX_CONTAINER_INFO_STRING    "QOMX.Qualcomm.index.param.containerinfo"
#define OMX_QCOM_INDEX_FILE_FORMAT          "OMX.QCOM.index.config.FileFormat"
#define QOMX_INDEX_CONFIG_ENCRYPT_TYPE      "QOMX.Qualcomm.index.config.EncryptType"

/**-----------------------------------------------------------------------------
            OMX.QCOM.index.param.container.info
--------------------------------------------------------------------------------
*/

typedef enum QOMX_CONTAINER_FORMATTYPE {
    QOMX_FORMAT_RAW,
    QOMX_FORMAT_MP4,
    QOMX_FORMAT_3GP,
    QOMX_FORMAT_3G2,
    QOMX_FORMAT_AMC,
    QOMX_FORMAT_SKM,
    QOMX_FORMAT_K3G,
    QOMX_FORMAT_VOB,
    QOMX_FORMAT_AVI,
    QOMX_FORMAT_ASF,
    QOMX_FORMAT_RM ,
    QOMX_FORMAT_MPEG_ES,
    QOMX_FORMAT_DIVX,
    QOMX_FORMATMPEG_TS,
    QOMX_FORMAT_QT,
    QOMX_FORMAT_M4A,
    QOMX_FORMAT_MP3,
    QOMX_FORMAT_WAVE,
    QOMX_FORMAT_XMF,
    QOMX_FORMAT_AMR,
    QOMX_FORMAT_AAC,
    QOMX_FORMAT_EVRC,
    QOMX_FORMAT_QCP,
    QOMX_FORMAT_SMF,
    QOMX_FORMAT_OGG,
    QOMX_FORMAT_BMP,
    QOMX_FORMAT_JPG,
    QOMX_FORMAT_JPG2000
}QOMX_CONTAINER_FORMATTYPE;

typedef struct QOMX_CONTAINER_INFOTYPE {
    OMX_U32 nSize;
    OMX_VERSIONTYPE nVersion;
    QOMX_CONTAINER_FORMATTYPE eFmtType;
} QOMX_CONTAINER_INFOTYPE;

typedef enum QOMX_FILEFORMATTYPE {
    QOMX_FileFormatNone, /**< no file format naming convention is followed. */
    QOMX_FileFormatDCF, /**< DCF file naming convention. */
    QOMX_FileFormatMax = 0x7FFFFFFF
} QOMX_FILEFORMATTYPE;

/** QOMX_CONFIG_FILEFORMATTYPE is used to determine how the file writer will interpret
the provided content URI and whether it will increment the index of the file name. */
typedef struct QOMX_CONFIG_FILEFORMATTYPE {
    OMX_U32 nSize; /**< size of the structure in bytes */
    OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
    OMX_U32 nPortIndex; /**< port that this structure applies to */
    QOMX_FILEFORMATTYPE eFileFormat; /** file format type */
} QOMX_CONFIG_FILEFORMATTYPE;

/**The QOMX_RECORDINGSTATISTICSINTERVALTYPE structure is used to enable
IL client to indicate the interval of the statistics notification to file mux
component. Time interval will indicate the frequency(in ms) when client needs
the statistics data*/
typedef struct QOMX_RECORDINGSTATISTICSINTERVALTYPE {
    OMX_U32 nSize; /**< size of the structure in bytes */
    OMX_VERSIONTYPE nVersion;/**< OMX specification version information */
    OMX_TICKS  interval;/**< specifies the time(milliseconds) between updates */
   }QOMX_RECORDINGSTATISTICSINTERVALTYPE;

/**QOMX_RECORDINGSTATISTICSTYPE indicates the current recording
time and space statistics of this session, which can be used by client to
identify current status of recorded data in milliseconds and bytes */
typedef struct QOMX_RECORDINGSTATISTICSTYPE {
    OMX_U32 nSize;/**< size of the structure in bytes */
    OMX_VERSIONTYPE nVersion;/**< OMX specification version information */
    OMX_TICKS  nRecordedTime; /**  duration that we already recorded*/
    OMX_TICKS  nTimeCanRecord;/** the time we can record at the same bitrate*/
    OMX_U64   nSpaceConsumed;/** space that consumed in bytes*/
    OMX_U64  nSpaceLeft;/** space left in bytes*/
} QOMX_RECORDINGSTATISTICSTYPE;

/**QOMX_ENCRYPT_TYPE indicates the type of encryption */
typedef enum QOMX_ENCRYPT_TYPE {
    QOMX_ENCRYPT_TYPE_HDCP,
    QOMX_ENCRYPT_TYPE_INVALID
}QOMX_ENCRYPT_TYPE;

/**QOMX_ENCRYPTIONTYPE indicates the encrypt type */
typedef struct QOMX_ENCRYPTIONTYPE {
    OMX_U32            nSize;  /**< size of the structure in bytes */
    OMX_VERSIONTYPE    nVersion; /**< OMX specification version information */
    OMX_BOOL           nStreamEncrypted;  /** stream is encrypted or not */
    QOMX_ENCRYPT_TYPE  nType;  /** type of Encryption */
    OMX_U32            nEncryptVersion; /** Encrypt version */
} QOMX_ENCRYPTIONTYPE;
#endif /*__QOMX_FILE_FORMAT_EXTENSIONS_H__*/