1/*
2Copyright (c) 2012, Broadcom Europe Ltd
3All rights reserved.
4
5Redistribution and use in source and binary forms, with or without
6modification, are permitted provided that the following conditions are met:
7 * Redistributions of source code must retain the above copyright
8 notice, this list of conditions and the following disclaimer.
9 * Redistributions in binary form must reproduce the above copyright
10 notice, this list of conditions and the following disclaimer in the
11 documentation and/or other materials provided with the distribution.
12 * Neither the name of the copyright holder nor the
13 names of its contributors may be used to endorse or promote products
14 derived from this software without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*/
27
28// OpenMAX IL - Broadcom specific types
29
30#ifndef OMX_Broadcom_h
31#define OMX_Broadcom_h
32
33#include "OMX_Component.h"
34
35// for use in buffer headers - marks the contained data
36// as being a codec header
37#define OMX_BUFFERFLAG_TIME_UNKNOWN 0x00000100
38
39//for use in buffer headers - marks the buffer as being the
40//snapshot preview image from a still capture.
41//Mainly to be used with the DisplayFunction callback from camera.
42#define OMX_BUFFERFLAG_CAPTURE_PREVIEW 0x00000200
43
44/* Mark the end of a NAL unit produced by a video encoder.
45 */
46#define OMX_BUFFERFLAG_ENDOFNAL 0x00000400
47
48/* Marks pBuffer in OMX_BUFFERHEADERTYPE as containing a fragment list instead of the actual buffer
49 */
50#define OMX_BUFFERFLAG_FRAGMENTLIST 0x00000800
51
52/* Marks the start of a new sequence of data following any kind of seek operation.
53 */
54#define OMX_BUFFERFLAG_DISCONTINUITY 0x00001000
55
56/** Codec side information Flag:
57* OMX_BUFFERFLAG_CODECSIDEINFO is an optional flag that is set by an
58* output port when all bytes in the buffer form part or all of a set of
59* codec specific side information. For example, distortion information
60* estimated by H.264 encoder can be sent using this flag to signal
61* the decoder quality
62*/
63#define OMX_BUFFERFLAG_CODECSIDEINFO 0x00002000
64
65// for use in buffer headers - indicated the timestamp is a DTS rather than PTS
66#define OMX_BUFFERFLAG_TIME_IS_DTS 0x00004000
67
68// for use in buffer headers - signals that a video picture is interlaced
69#define OMX_BUFFERFLAG_INTERLACED 0x00010000
70
71// Signals that the top field of the current interlaced frame should be displayed first
72#define OMX_BUFFERFLAG_TOP_FIELD_FIRST 0x00020000
73
74// User flags that can be set by the application and will be passed by most
75// components as an alternative to buffer marks.
76#define OMX_BUFFERFLAG_USR0 0x10000000
77#define OMX_BUFFERFLAG_USR1 0x20000000
78#define OMX_BUFFERFLAG_USR2 0x40000000
79#define OMX_BUFFERFLAG_USR3 0x80000000
80#define OMX_BUFFERFLAG_USR_FLAGS 0xF0000000
81
82/**
83 * Macros to convert to <code>OMX_TICKS</code> from a signed 64 bit value and
84 * vice-versa. These macros don't actually do anything unless <code>OMX_TICKS</code>
85 * is defined as a two-part structure (instead of a native signed 64-bit type).
86 **/
87#ifndef OMX_SKIP64BIT
88 #define omx_ticks_from_s64(s) (s)
89 #define omx_ticks_to_s64(t) (t)
90#else
91 static inline OMX_TICKS omx_ticks_from_s64(signed long long s) { OMX_TICKS t; t.nLowPart = (OMX_U32)s; t.nHighPart = (OMX_U32)(s>>32); return t; }
92 #define omx_ticks_to_s64(t) ((t).nLowPart | ((uint64_t)((t).nHighPart) << 32))
93#endif /* OMX_SKIP64BIT */
94
95/* Buffer fragment descriptor */
96typedef struct OMX_BUFFERFRAGMENTTYPE {
97 OMX_PTR pBuffer; /**< Pointer to actual block of memory that is acting as the fragment buffer */
98 OMX_U32 nLen; /**< number of bytes in the buffer */
99} OMX_BUFFERFRAGMENTTYPE;
100
101/* OMX_IndexParamBrcmEnableIJGTableScaling: JPEG Quality Table Setting. */
102typedef struct OMX_PARAM_IJGSCALINGTYPE {
103 OMX_U32 nSize;
104 OMX_VERSIONTYPE nVersion;
105 OMX_U32 nPortIndex;
106 OMX_BOOL bEnabled;
107} OMX_PARAM_IJGSCALINGTYPE;
108/*
109The boolean \code{bEnabled} value determines whether the component uses
110the standard IJG quality tables when encoding images.
111*/
112
113
114/* OMX_IndexConfigTimeInvalidStartTime: Invalid Start Times */
115/*
116This allows clock clients to supply a start time notification to the
117clock whilst indicating that this time is invalid.
118*/
119
120/* OMX_IndexParamBrcmMaxFrameSkips: Frame timestamp jumps */
121/*
122This number represents the number of times a jump in frame timestamps
123has been observed that is greater than expected.
124*/
125
126/* OMX_IndexConfigAsynchronousFailureURI: Asynchronous Failure Filename */
127/*
128This allows the client to query for the filename that cause an asynchronous
129output error.
130*/
131
132/* OMX_IndexParamAsynchronousOutput: Asynchronous Output */
133/*
134The allows the client to specify to a component that is writing files
135that this writing may happen asynchronously, including opening and closing
136of files.
137*/
138
139/* OMX_IndexConfigClockAdjustment: Clock Adjustment */
140/*
141This allows the client to read from the clock the total time
142adjustment made to the clock whilst running by the reference clock.
143If the reference clock sends a time that causes the media time to jump
144this difference is added to the total, which can be reported via this
145index. When the stream restarts by setting the clock state to
146\code{OMX_TIME_ClockStateRunning} or
147\code{OMX_TIME_ClockStateWaitingForStartTime} this adjustment total is
148set to zero.
149*/
150
151/* OMX_IndexParamBrcmDataUnit: Data Unit */
152/*
153The data unit is an indication to components connected to this
154component of the type of data delivery available.
155\code{OMX_DataUnitCodedPicture} indicates that we are able to give
156framing information, using the \code{OMX_BUFFERFLAG_ENDOFFRAME} flag to
157indicate that the data contained finishes a complete
158frame. \code{OMX_DataUnitArbitraryStreamSection} indicates that no
159end-of-frame markers will be present, and the decoder should perform
160the steps necessary to decode the stream. The other enum values are
161not used.
162*/
163
164/* OMX_IndexConfigPresentationOffset: Presentation Offset */
165/*
166The value of \code{nTimestamp} is added to the offset requested for
167each new input frame. Takes effect for all new input frames, and has
168no effect on the offset used for currently-queued frames. A positive
169value will make the requested port earlier relative to other streams,
170a negative value will make the requested port later relative to other
171streams.
172*/
173
174/* OMX_IndexConfigSingleStep: Single Step */
175/*
176When setting this config on a paused clock, where the \code{nU32}
177value is non-zero and \code{nPortIndex} is OMX_ALL, the media clock
178will advance through the next \code{nU32} next requested media
179times. A paused clock is in running state but has a time scale of
1800. This will trigger the display of some video frames, so allowing
181single-stepping functionality. This config can be set multiple times,
182and will buffer up stepping requests until we have media requests to
183fulfil, or the clock is stopped or un-paused.
184
185This config can also be used on some video output ports and, if
186\code{nU32} is non-zero, requests that the output port forwards the
187next \code{nU32} frames appending an EOS marker on the last frame, and
188then ceases to forward data on this port. If \code{nU32} is zero, any
189previous request to forward a limited number of frames is cancelled
190and the default behaviour of this port will resume.
191*/
192
193/* OMX_IndexParamCameraCamplusId: Camera Subsystem Identification */
194/*
195This parameter allows the configuration of the identifier to be used
196to initialise the Broadcom Camplus subsystem that sits beneath the
197camera component. If only one instance of the camera component is
198used, the default value can be used. If more than one instance is
199required, they must each have their own unique values for this
200parameter. It is also used to tie the component to the image pool
201created with \code{OMX_Set upCamPools}.
202*/
203
204/* OMX_IndexConfigAudioRenderingLatency: Audio Rendering Latency */
205/*
206This config allows the client to query the current latency of audio
207rendering. The latency is returned as the number of samples that
208an audio rendering component has received but have not been played.
209*/
210
211/* OMX_IndexConfigBrcmPoolMemAllocSize: Pool memory usage values */
212/*
213This config allows the client to query how much memory is being used by
214the component for any image pools.
215*/
216
217/* OMX_IndexConfigDisplayRegion: Display Region */
218typedef enum OMX_DISPLAYTRANSFORMTYPE{
219 OMX_DISPLAY_ROT0 = 0,
220 OMX_DISPLAY_MIRROR_ROT0 = 1,
221 OMX_DISPLAY_MIRROR_ROT180 = 2,
222 OMX_DISPLAY_ROT180 = 3,
223 OMX_DISPLAY_MIRROR_ROT90 = 4,
224 OMX_DISPLAY_ROT270 = 5,
225 OMX_DISPLAY_ROT90 = 6,
226 OMX_DISPLAY_MIRROR_ROT270 = 7,
227 OMX_DISPLAY_DUMMY = 0x7FFFFFFF
228} OMX_DISPLAYTRANSFORMTYPE;
229
230typedef struct OMX_DISPLAYRECTTYPE {
231 OMX_S16 x_offset;
232 OMX_S16 y_offset;
233 OMX_S16 width;
234 OMX_S16 height;
235} OMX_DISPLAYRECTTYPE;
236
237typedef enum OMX_DISPLAYMODETYPE {
238 OMX_DISPLAY_MODE_FILL = 0,
239 OMX_DISPLAY_MODE_LETTERBOX = 1,
240 // these allow a left eye source->dest to be specified and the right eye mapping will be inferred by symmetry
241 OMX_DISPLAY_MODE_STEREO_LEFT_TO_LEFT = 2,
242 OMX_DISPLAY_MODE_STEREO_TOP_TO_TOP = 3,
243 OMX_DISPLAY_MODE_STEREO_LEFT_TO_TOP = 4,
244 OMX_DISPLAY_MODE_STEREO_TOP_TO_LEFT = 5,
245 OMX_DISPLAY_MODE_DUMMY = 0x7FFFFFFF
246} OMX_DISPLAYMODETYPE;
247
248typedef enum OMX_DISPLAYSETTYPE {
249 OMX_DISPLAY_SET_NONE = 0,
250 OMX_DISPLAY_SET_NUM = 1,
251 OMX_DISPLAY_SET_FULLSCREEN = 2,
252 OMX_DISPLAY_SET_TRANSFORM = 4,
253 OMX_DISPLAY_SET_DEST_RECT = 8,
254 OMX_DISPLAY_SET_SRC_RECT = 0x10,
255 OMX_DISPLAY_SET_MODE = 0x20,
256 OMX_DISPLAY_SET_PIXEL = 0x40,
257 OMX_DISPLAY_SET_NOASPECT = 0x80,
258 OMX_DISPLAY_SET_LAYER = 0x100,
259 OMX_DISPLAY_SET_COPYPROTECT = 0x200,
260 OMX_DISPLAY_SET_ALPHA = 0x400,
261 OMX_DISPLAY_SET_DUMMY = 0x7FFFFFFF
262} OMX_DISPLAYSETTYPE;
263
264typedef enum OMX_DISPLAYASPECTFLAGSTYPE {
265 OMX_DISPLAY_ALPHA_FLAGS_NONE = 0,
266 // All layers below and including this one will be ignored (used for screen
267 // blanking in full screen rendering)
268 OMX_DISPLAY_ALPHA_FLAGS_DISCARD_LOWER_LAYERS = 1<<29,
269 // Alpha values are already premultiplied
270 OMX_DISPLAY_ALPHA_FLAGS_PREMULT = 1<<30,
271 // Mix the per pixel alpha (if present) and the per plane alpha.
272 OMX_DISPLAY_ALPHA_FLAGS_MIX = 1<<31,
273} OMX_DISPLAYASPECTFLAGSTYPE;
274
275typedef struct OMX_CONFIG_DISPLAYREGIONTYPE {
276 OMX_U32 nSize;
277 OMX_VERSIONTYPE nVersion;
278 OMX_U32 nPortIndex;
279 OMX_DISPLAYSETTYPE set;
280 OMX_U32 num;
281 OMX_BOOL fullscreen;
282 OMX_DISPLAYTRANSFORMTYPE transform;
283 OMX_DISPLAYRECTTYPE dest_rect;
284 OMX_DISPLAYRECTTYPE src_rect;
285 OMX_BOOL noaspect;
286 OMX_DISPLAYMODETYPE mode;
287 OMX_U32 pixel_x;
288 OMX_U32 pixel_y;
289 OMX_S32 layer;
290 OMX_BOOL copyprotect_required;
291 OMX_U32 alpha;
292 OMX_U32 wfc_context_width;
293 OMX_U32 wfc_context_height;
294} OMX_CONFIG_DISPLAYREGIONTYPE;
295/*
296This config sets the output display device, as well as the region used
297on the output display, any display transformation, and some flags to
298indicate how to scale the image.
299
300The structure uses a bitfield, \code{set}, to indicate which fields are set
301and should be used. All other fields will maintain their current
302value.
303
304\code{num} describes the display output device, with 0 typically being
305a directly connected LCD display.
306
307\code{fullscreen} indicates that we are using the full device screen
308area, rather than a window of the display. If fullscreen is false,
309then dest_rect is used to specify a region of the display to use.
310
311\code{transform} indicates any rotation or flipping used to map frames
312onto the natural display orientation.
313
314The \code{src_rect} indicates which area of the frame to display. If
315all values are zero, the whole frame will be used.
316
317The \code{noaspect} flag, if set, indicates that any display scaling
318should disregard the aspect ratio of the frame region being displayed.
319
320\code{mode} indicates how the image should be scaled to fit the
321display. \code{OMX_DISPLAY_MODE_FILL} indicates that the image should
322fill the screen by potentially cropping the frames. Setting
323\code{mode} to \code{OMX_DISPLAY_MODE_LETTERBOX} indicates that all
324the source region should be displayed and black bars added if
325necessary.
326
327The \code{pixel_x} and \code{pixel_y} values, if non-zero, are used to
328describe the size of a source pixel. If values are zero, then pixels
329default to being square.
330
331Set the \code{layer} that the image will appear on with the
332\code{layer} field.
333*/
334
335
336
337/* OMX_IndexParamSource: Source Image Configuration */
338typedef enum OMX_SOURCETYPE {
339 OMX_SOURCE_WHITE = 0, // all white images
340 OMX_SOURCE_BLACK = 1, // all black images
341 OMX_SOURCE_DIAGONAL = 2, // greyscale diagonal stripes
342 OMX_SOURCE_NOISE = 3, // random pixel values
343 OMX_SOURCE_RANDOM = 4, // a shaded random pattern of colours
344 OMX_SOURCE_COLOUR = 5, // a solid colour determined by nParam
345 OMX_SOURCE_BLOCKS = 6, // random coloured blocks of 16x16 size
346 OMX_SOURCE_SWIRLY, // a swirly pattern used for encode testing
347 OMX_SOURCE_DUMMY = 0x7FFFFFFF
348} OMX_SOURCETYPE;
349
350typedef struct OMX_PARAM_SOURCETYPE {
351 OMX_U32 nSize;
352 OMX_VERSIONTYPE nVersion;
353 OMX_U32 nPortIndex;
354 OMX_SOURCETYPE eType;
355 OMX_U32 nParam;
356 OMX_U32 nFrameCount;
357 OMX_U32 xFrameRate;
358} OMX_PARAM_SOURCETYPE;
359/*
360The source type determines the kind of image that is produced. Not all
361combinations of source type and image type are supported. The
362\code{OMX_SOURCE_SWIRLY} setting can only be used with YUV420 packed
363planar image formats. When producing RGB565 image format, the
364\code{OMX_SOURCE_DIAGONAL} and \code{OMX_SOURCE_RANDOM} modes are
365treated as \code{OMX_SOURCE_NOISE}.
366
367The \code{nParam} field is used to specify the colour for the source
368colour mode, and the offset of the diagonal pattern for diagonal mode.
369For the blocks mode, \code{nParam} is used as the seed for the random
370colour generator.
371
372The \code{nFrameCount} parameter determines how many frames to send.
373If it is zero, then frames are sent continuously. For any other value,
374it counts down until it has sent that many frames, and then stops,
375sending out an EOS. The \code{xFrameRate} setting is used to determine
376the timestamp for each frame produced, or can be set to zero if
377timestamps should all remain at zero.
378*/
379
380/* OMX_IndexParamSourceSeed: Source Random Seed */
381typedef struct OMX_PARAM_SOURCESEEDTYPE {
382 OMX_U32 nSize;
383 OMX_VERSIONTYPE nVersion;
384 OMX_U32 nPortIndex;
385 OMX_U16 nData[16];
386} OMX_PARAM_SOURCESEEDTYPE;
387/*
388This structure sets the current state of the random number generator
389used for \code{OMX_SOURCE_RANDOM} source type, allowing repeatable
390random image creation.
391*/
392
393/* OMX_IndexParamResize: Resize Control */
394typedef enum OMX_RESIZEMODETYPE {
395 OMX_RESIZE_NONE,
396 OMX_RESIZE_CROP,
397 OMX_RESIZE_BOX,
398 OMX_RESIZE_BYTES,
399 OMX_RESIZE_DUMMY = 0x7FFFFFFF
400} OMX_RESIZEMODETYPE;
401
402typedef struct OMX_PARAM_RESIZETYPE {
403 OMX_U32 nSize;
404 OMX_VERSIONTYPE nVersion;
405 OMX_U32 nPortIndex;
406 OMX_RESIZEMODETYPE eMode;
407 OMX_U32 nMaxWidth;
408 OMX_U32 nMaxHeight;
409 OMX_U32 nMaxBytes;
410 OMX_BOOL bPreserveAspectRatio;
411 OMX_BOOL bAllowUpscaling;
412} OMX_PARAM_RESIZETYPE;
413/*
414The mode determines the kind of resize. \code{OMX_RESIZE_BOX} allow
415the \code{nMaxWidth} and \code{nMaxHeight} to set a bounding box into
416which the output must fit. \code{OMX_RESIZE_BYTES} allows
417\code{nMaxBytes} to set the maximum number of bytes into which the
418full output frame must fit. Two flags aid the setting of the output
419size. \code{bPreseveAspectRatio} sets whether the resize should
420preserve the aspect ratio of the incoming
421image. \code{bAllowUpscaling} sets whether the resize is allowed to
422increase the size of the output image compared to the size of the
423input image.
424*/
425
426typedef struct OMX_PARAM_TESTINTERFACETYPE {
427 OMX_U32 nSize;
428 OMX_VERSIONTYPE nVersion;
429 OMX_BOOL bTest;
430 OMX_BOOL bSetExtra;
431 OMX_U32 nExtra;
432 OMX_BOOL bSetError;
433 OMX_BOOL stateError[2];
434} OMX_PARAM_TESTINTERFACETYPE;
435
436/* OMX_IndexConfigVisualisation: Visualisation Mode */
437typedef struct OMX_CONFIG_VISUALISATIONTYPE {
438 OMX_U32 nSize;
439 OMX_VERSIONTYPE nVersion;
440 OMX_U32 nPortIndex;
441 OMX_U8 name[16];
442 OMX_U8 property[64];
443} OMX_CONFIG_VISUALISATIONTYPE;
444
445/*
446\code{name} is a string of characters specifying the type of
447visualization. The component appends \code{"_vis.vll"} to the name
448provided, and attempts to load a visualisation library contained in
449this VLL. \code{property} contains configuration parameters and
450values, which is interpreted by the visualisation library. Typically
451all visualisations will accept a property string containing
452\code{'mode=<number>'}, where \code{<number>} may be a random 32 bit
453integer in decimal format. If provided, this may select a random mode
454from that visualisation library.
455*/
456
457/*
458This parameter is used when creating proprietary communication with
459the display component, and provides the display function for passing
460images to be displayed, together with a function used to flush all
461pending image updates and release all images.
462*/
463
464/* OMX_IndexConfigBrcmAudioDestination: Audio Destination */
465typedef struct OMX_CONFIG_BRCMAUDIODESTINATIONTYPE {
466 OMX_U32 nSize;
467 OMX_VERSIONTYPE nVersion;
468 OMX_U8 sName[16];
469} OMX_CONFIG_BRCMAUDIODESTINATIONTYPE;
470/*
471This config sets the platform-specific audio destination or output
472device for audio sink components (e.g. audio_render).
473
474\code{sName} describes the audio destination, with \code{"local"}
475typically being directly connected to headphones.
476*/
477
478/* OMX_IndexConfigBrcmAudioSource: Audio Source */
479typedef struct OMX_CONFIG_BRCMAUDIOSOURCETYPE {
480 OMX_U32 nSize;
481 OMX_VERSIONTYPE nVersion;
482 OMX_U8 sName[16];
483} OMX_CONFIG_BRCMAUDIOSOURCETYPE;
484/*
485This config sets the platform-specific audio source or input device
486for audio source components (e.g. audio_capture).
487
488\code{sName} describes the audio source, with \code{"local"}
489typically being directly connected to microphone.
490*/
491
492/* OMX_IndexConfigBrcmAudioDownmixCoefficients: Audio Downmix Coefficients */
493typedef struct OMX_CONFIG_BRCMAUDIODOWNMIXCOEFFICIENTS {
494 OMX_U32 nSize;
495 OMX_VERSIONTYPE nVersion;
496 OMX_U32 nPortIndex;
497 OMX_U32 coeff[16];
498} OMX_CONFIG_BRCMAUDIODOWNMIXCOEFFICIENTS;
499/*
500This config sets the platform-specific audio downmixing coefficients for the
501audio mixer component. The coefficients are 16.16 fixed point.
502The even coefficients contribute to the left channel.
503The odd coefficients contribute to the right channel.
504L' = coeff[0] * sample[N] + coeff[2] * sample[N+1] + coeff[4] * sample[N+2] + coeff[6] * sample[N+3]
505 + coeff[8] * sample[N+4] + coeff[10] * sample[N+5] + coeff[12] * sample[N+6] + coeff[14] * sample[N+7]
506R' = coeff[1] * sample[N] + coeff[3] * sample[N+1] + coeff[5] * sample[N+2] + coeff[7] * sample[N+3]
507 + coeff[9] * sample[N+4] + coeff[11] * sample[N+5] + coeff[13] * sample[N+6] + coeff[15] * sample[N+7]
508
509\code{coeff} describes the downmixing coefficients
510*/
511
512/* OMX_IndexConfigBrcmAudioDownmixCoefficients8x8: Audio Downmix Coefficient matrix */
513typedef struct OMX_CONFIG_BRCMAUDIODOWNMIXCOEFFICIENTS8x8 {
514 OMX_U32 nSize;
515 OMX_VERSIONTYPE nVersion;
516 OMX_U32 nPortIndex;
517 OMX_U32 coeff[64];
518} OMX_CONFIG_BRCMAUDIODOWNMIXCOEFFICIENTS8x8;
519/*
520This config sets the platform-specific audio downmixing coefficients for the
521audio mixer component. The coefficients are 16.16 fixed point.
522The coefficients are a 8*8 mixing matrix from 8 input channels to 8 outputs channels
523
524\code{coeff} describes the downmixing coefficients
525*/
526
527/* OMX_IndexConfigBrcmAudioMaxSample: Maximum sample seen */
528typedef struct OMX_CONFIG_BRCMAUDIOMAXSAMPLE {
529 OMX_U32 nSize;
530 OMX_VERSIONTYPE nVersion;
531 OMX_U32 nPortIndex;
532 OMX_U32 nMaxSample;
533 OMX_TICKS nTimeStamp;
534} OMX_CONFIG_BRCMAUDIOMAXSAMPLE;
535/*
536This gets the largest sample produced (after downmixing with OMX_CONFIG_BRCMAUDIODOWNMIXCOEFFICIENTS8x8)
537since this config was last read. The nTimestamp is the earliest timestamp processed.
538This can be used for DRC schemes
539
540\code{coeff} maximum sample seen in current block
541*/
542
543/* OMX_IndexConfigPlayMode: Play Mode */
544typedef enum OMX_PLAYMODETYPE {
545 OMX_PLAYMODE_NORMAL,
546 OMX_PLAYMODE_FF,
547 OMX_PLAYMODE_REW,
548 OMX_PLAYMODE_DUMMY = 0x7FFFFFFF
549} OMX_PLAYMODETYPE;
550
551typedef struct OMX_CONFIG_PLAYMODETYPE {
552 OMX_U32 nSize;
553 OMX_VERSIONTYPE nVersion;
554 OMX_PLAYMODETYPE eMode;
555} OMX_CONFIG_PLAYMODETYPE;
556/*
557The playmode affects which frames are extracted from the media file
558and passed on the output ports. \code{OMX_PLAYMODE_NORMAL} will
559extract all frames, \code{OMX_PLAYMODE_FF} extracts only IDR frames
560when video is present, or only occasional packets of audio if no video
561is present. \code{OMX_PLAYMODE_REW} is similar to
562\code{OMX_PLAYMODE_FF} but extracts packets in reverse time
563order.
564*/
565
566typedef enum OMX_DELIVERYFORMATTYPE {
567 OMX_DELIVERYFORMAT_STREAM, // no framing information is known
568 OMX_DELIVERYFORMAT_SINGLE_PACKET, // packetised, at most one frame per buffer
569 OMX_DELIVERYFORMAT_DUMMY = 0x7FFFFFFF
570} OMX_DELIVERYFORMATTYPE;
571
572typedef struct OMX_PARAM_DELIVERYFORMATTYPE {
573 OMX_U32 nSize;
574 OMX_VERSIONTYPE nVersion;
575 OMX_U32 nPortIndex;
576 OMX_DELIVERYFORMATTYPE eFormat;
577} OMX_PARAM_DELIVERYFORMATTYPE;
578
579/* OMX_IndexParamCodecConfig: Codec Configuration */
580
581typedef struct OMX_PARAM_CODECCONFIGTYPE {
582 OMX_U32 nSize;
583 OMX_VERSIONTYPE nVersion;
584 OMX_U32 nPortIndex;
585 OMX_U32 bCodecConfigIsComplete;
586 OMX_U8 nData[1];
587} OMX_PARAM_CODECCONFIGTYPE;
588
589/*
590This parameter contains opaque data in a format specified by Broadcom
591and allows out-of-band information such as cropping rectangles, aspect
592ratio information, codec-specific header bytes, and other essential
593information to be passed between connected components.
594
595\code{bCodecConfigIsCompete} specifies if the codec config is fully
596contained in here and there is no need to wait for OMX_BUFFERFLAG_CODECCONFIG
597buffers
598*/
599
600typedef struct OMX_PARAM_STILLSFUNCTIONTYPE {
601 OMX_U32 nSize;
602 OMX_VERSIONTYPE nVersion;
603 OMX_BOOL bBuffer;
604 OMX_PTR (*pOpenFunc)(void);
605 OMX_PTR (*pCloseFunc)(void);
606 OMX_PTR (*pReadFunc)(void);
607 OMX_PTR (*pSeekFunc)(void);
608 OMX_PTR (*pWriteFunc)(void);
609} OMX_PARAM_STILLSFUNCTIONTYPE;
610
611typedef void* OMX_BUFFERADDRESSHANDLETYPE;
612
613typedef struct OMX_PARAM_BUFFERADDRESSTYPE {
614 OMX_U32 nSize;
615 OMX_VERSIONTYPE nVersion;
616 OMX_U32 nPortIndex;
617 OMX_U32 nAllocLen;
618 OMX_BUFFERADDRESSHANDLETYPE handle;
619} OMX_PARAM_BUFFERADDRESSTYPE;
620
621typedef struct OMX_PARAM_TUNNELSETUPTYPE {
622 OMX_U32 nSize;
623 OMX_VERSIONTYPE nVersion;
624 OMX_U32 nPortIndex;
625 OMX_TUNNELSETUPTYPE sSetup;
626} OMX_PARAM_TUNNELSETUPTYPE;
627
628/* OMX_IndexParamBrcmPortEGL: Used for querying whether a port is an EGL port or not. */
629typedef struct OMX_PARAM_BRCMPORTEGLTYPE {
630 OMX_U32 nSize;
631 OMX_VERSIONTYPE nVersion;
632 OMX_U32 nPortIndex;
633 OMX_BOOL bPortIsEGL;
634} OMX_PARAM_BRCMPORTEGLTYPE;
635/*
636*/
637
638#define OMX_CONFIG_IMAGEFILTERPARAMS_MAXPARAMS 6
639/* OMX_IndexConfigCommonImageFilterParameters: Parameterized Image Filter */
640typedef struct OMX_CONFIG_IMAGEFILTERPARAMSTYPE {
641 OMX_U32 nSize;
642 OMX_VERSIONTYPE nVersion;
643 OMX_U32 nPortIndex;
644 OMX_IMAGEFILTERTYPE eImageFilter;
645 OMX_U32 nNumParams;
646 OMX_U32 nParams[OMX_CONFIG_IMAGEFILTERPARAMS_MAXPARAMS];
647} OMX_CONFIG_IMAGEFILTERPARAMSTYPE;
648/*
649This structure contains optional parameters for some image
650filters. The following table lists all image filters that support
651parameters.
652
653<table border="1" cellspacing="0" cellpadding="2">
654<tr><td>Filter<td>Parameters<td>Notes
655
656<tr><td>\code{OMX_ImageFilterSolarize}
657<td>\code{[x0 y0 y1 y2]}
658<td>Linear mapping of \code{[0,x0]} to \code{[0,y0>]}
659and \code{[x0,255]} to \code{[y1,y2]}.
660Default is \code{"128 128 128 0"}.
661
662<tr><td>\code{OMX_ImageFilterSharpen}
663<td>\code{[sz [str [th]]}
664<td>\code{sz} size of filter, either 1 or 2.
665\code{str} strength of filter.
666\code{th} threshold of filter.
667Default is \code{"1 40 20"}.
668
669<tr><td>\code{OMX_ImageFilterFilm}
670<td>\code{[[str] [u v]]}
671<td>\code{str} strength of effect.
672\code{u} sets u to constant value.
673\code{v} sets v to constant value.
674Default is \code{"24"}.
675
676<tr><td>\code{OMX_ImageFilterBlur}
677<td>\code{[sz]}
678<td>\code{sz} size of filter, either 1 or 2.
679Default is \code{"2"}.
680
681<tr><td>\code{OMX_ImageFilterSaturation}
682<td>\code{[str]}
683<td>\code{str} strength of effect, in 8.8 fixed point format. u/v value
684differences from 128 are multiplied by \code{str}.
685Default is \code{"272"}.
686</table>
687*/
688
689
690/* OMX_IndexConfigTransitionControl: Transition Control */
691typedef struct OMX_CONFIG_TRANSITIONCONTROLTYPE {
692 OMX_U32 nSize;
693 OMX_VERSIONTYPE nVersion;
694 OMX_U32 nPortIndex;
695 OMX_U32 nPosStart;
696 OMX_U32 nPosEnd;
697 OMX_S32 nPosIncrement;
698 OMX_TICKS nFrameIncrement;
699 OMX_BOOL bSwapInputs;
700 OMX_U8 name[16];
701 OMX_U8 property[64];
702} OMX_CONFIG_TRANSITIONCONTROLTYPE;
703/*
704This structure represents the internal configuration of the
705transition. Transitions are generated by a loadable plug-in described
706by the \code{name} field. The component appends \code{"_tran.vll"} to
707the name provided, and attempts to load a transition library contained
708in this VLL. The exact type of transition is configured in a
709plug-in-dependent manner with the \code{property} field. All plug-ins
710should accept a \code{property} field equal to
711\code{"flags=<number>"}, where \code{<number>} can be a random 32 bit
712number. If \code{bSwapInputs} is false, then the start image is on
713port 210, the stop image on port 211. These are reversed if
714\code{bSwapInputs} is true.
715
716Transition frames are generated from the plug-in by referencing a
717frame position in [0,65536], where position 0 is the start image,
718position 65536 is the stop image. The first frame position generated
719is \code{nPosStart}. The last frame position generated is
720\code{nPosEnd}. Each frame will increment the position by
721\code{nPosIncrement}. The timestamp attached to each frame will
722increment by \code{nFrameIncrement}.
723*/
724
725
726/*
727This parameter is used to provide a callback function pointer for
728release events. It is used for internal clients on VideoCore.
729*/
730
731
732/* OMX_IndexConfigAudioMonoTrackControl: Dual Mono Control */
733typedef enum OMX_AUDIOMONOTRACKOPERATIONSTYPE {
734 OMX_AUDIOMONOTRACKOPERATIONS_NOP,
735 OMX_AUDIOMONOTRACKOPERATIONS_L_TO_R,
736 OMX_AUDIOMONOTRACKOPERATIONS_R_TO_L,
737 OMX_AUDIOMONOTRACKOPERATIONS_DUMMY = 0x7FFFFFFF
738} OMX_AUDIOMONOTRACKOPERATIONSTYPE ;
739
740typedef struct OMX_CONFIG_AUDIOMONOTRACKCONTROLTYPE {
741 OMX_U32 nSize;
742 OMX_VERSIONTYPE nVersion;
743 OMX_U32 nPortIndex;
744 OMX_AUDIOMONOTRACKOPERATIONSTYPE eMode;
745} OMX_CONFIG_AUDIOMONOTRACKCONTROLTYPE;
746/*
747This config controls the options to support dual mono audio
748streams. The output can be unchanged, or the left channel copied over
749the right channel, or the right channel copied over the left
750channel. This config can be applied at any time with stereo
75116-bit-per-sample data. Since audio output is typically buffered, any
752change will not be audible until that buffering has been played out.
753*/
754
755/* OMX_IndexParamCameraImagePool: Camera Image Pools */
756typedef enum OMX_CAMERAIMAGEPOOLINPUTMODETYPE {
757 OMX_CAMERAIMAGEPOOLINPUTMODE_ONEPOOL, /*All input images are allocated from one pool
758 Works for simple stills capture use cases
759 Can not be used with parallel stills capture
760 and video encode, as the pool will be sized for
761 capture or viewfinder, not both simultaneously.
762 The pool wouldn't divide sensibly in this mode
763 anyway.
764 */
765 OMX_CAMERAIMAGEPOOLINPUTMODE_TWOPOOLS, /*All stills & video input images are allocated
766 from two separate pools.
767 This ensures that parallel capture can work, but
768 would consume more memory if used on a simple
769 stills capture use case.
770 */
771} OMX_CAMERAIMAGEPOOLINPUTMODETYPE;
772
773typedef struct OMX_PARAM_CAMERAIMAGEPOOLTYPE {
774 OMX_U32 nSize;
775 OMX_VERSIONTYPE nVersion;
776 OMX_U32 nNumHiResVideoFrames;
777 OMX_U32 nHiResVideoWidth;
778 OMX_U32 nHiResVideoHeight;
779 OMX_COLOR_FORMATTYPE eHiResVideoType;
780 OMX_U32 nNumHiResStillsFrames;
781 OMX_U32 nHiResStillsWidth;
782 OMX_U32 nHiResStillsHeight;
783 OMX_COLOR_FORMATTYPE eHiResStillsType;
784 OMX_U32 nNumLoResFrames;
785 OMX_U32 nLoResWidth;
786 OMX_U32 nLoResHeight;
787 OMX_COLOR_FORMATTYPE eLoResType;
788 OMX_U32 nNumSnapshotFrames;
789 OMX_COLOR_FORMATTYPE eSnapshotType;
790 OMX_CAMERAIMAGEPOOLINPUTMODETYPE eInputPoolMode;
791 OMX_U32 nNumInputVideoFrames;
792 OMX_U32 nInputVideoWidth;
793 OMX_U32 nInputVideoHeight;
794 OMX_COLOR_FORMATTYPE eInputVideoType;
795 OMX_U32 nNumInputStillsFrames;
796 OMX_U32 nInputStillsWidth;
797 OMX_U32 nInputStillsHeight;
798 OMX_COLOR_FORMATTYPE eInputStillsType;
799} OMX_PARAM_CAMERAIMAGEPOOLTYPE;
800/*
801\sloppy This parameter specifies the size, type, and number, of images to
802allow in the images pools required by Camplus. Supported types are
803\code{OMX_COLOR_FormatYUV420PackedPlanar},
804\code{OMX_COLOR_FormatYUV422PackedPlanar},
805\code{OMX_COLOR_FormatRawBayer8bit},
806\code{OMX_COLOR_FormatRawBayer10bit},
807\code{OMX_COLOR_FormatRawBayer8bitcompressed}, and 0 (reserved for the
808Broadcom-specific format required by the video encoder). The input
809pool width, height, and type can be set as 0 to make the component
810query Camplus for the sensor mode that would correspond to the largest
811of the viewfinder port definition, the capture port definition, or the
812high resolution image pool.
813*/
814
815/* OMX_IndexParamImagePoolSize: Specifying Image Pool Properties */
816typedef struct OMX_PARAM_IMAGEPOOLSIZETYPE {
817 OMX_U32 nSize;
818 OMX_VERSIONTYPE nVersion;
819 OMX_U32 width;
820 OMX_U32 height;
821 OMX_U32 num_pages;
822} OMX_PARAM_IMAGEPOOLSIZETYPE;
823/*
824This parameter is used to control the size of pool that the component
825will allocate in the absence of setting an external pool. The default
826can be reset by setting this parameter with all three fields set to
827zero.
828*/
829
830
831/* OMX_IndexParamImagePoolExternal: Client Allocated Image Pools */
832struct opaque_vc_pool_s;
833typedef struct opaque_vc_pool_s OMX_BRCM_POOL_T;
834
835typedef struct OMX_PARAM_IMAGEPOOLEXTERNALTYPE {
836 OMX_U32 nSize;
837 OMX_VERSIONTYPE nVersion;
838 OMX_BRCM_POOL_T *image_pool;
839 OMX_BRCM_POOL_T *image_pool2;
840 OMX_BRCM_POOL_T *image_pool3;
841 OMX_BRCM_POOL_T *image_pool4;
842 OMX_BRCM_POOL_T *image_pool5;
843} OMX_PARAM_IMAGEPOOLEXTERNALTYPE;
844/*
845This config allows the client to pass in handles to pre-allocated
846image pools for use within the component.
847*/
848
849
850struct _IL_FIFO_T;
851typedef struct OMX_PARAM_RUTILFIFOINFOTYPE {
852 OMX_U32 nSize;
853 OMX_VERSIONTYPE nVersion;
854 OMX_U32 nPortIndex;
855 struct _IL_FIFO_T *pILFifo;
856} OMX_PARAM_RUTILFIFOINFOTYPE;
857
858/* OMX_IndexParamILFifoConfig: Allows configuration of the FIFO settings. */
859typedef struct OMX_PARAM_ILFIFOCONFIG {
860 OMX_U32 nSize;
861 OMX_VERSIONTYPE nVersion;
862 OMX_U32 nPortIndex;
863 OMX_U32 nDataSize; /**< The size of the FIFO's data area */
864 OMX_U32 nHeaderCount; /**< The number of headers allocated */
865} OMX_PARAM_ILFIFOCONFIG;
866/**
867 * Allows configuring the size of the ILFIFO used in a component.
868 */
869
870/* OMX_IndexConfigCameraSensorModes: Camera Sensor Mode */
871typedef struct OMX_CONFIG_CAMERASENSORMODETYPE {
872 OMX_U32 nSize;
873 OMX_VERSIONTYPE nVersion;
874 OMX_U32 nPortIndex;
875 OMX_U32 nModeIndex;
876 OMX_U32 nNumModes;
877 OMX_U32 nWidth;
878 OMX_U32 nHeight;
879 OMX_U32 nPaddingRight;
880 OMX_U32 nPaddingDown;
881 OMX_COLOR_FORMATTYPE eColorFormat;
882 OMX_U32 nFrameRateMax;
883 OMX_U32 nFrameRateMin;
884} OMX_CONFIG_CAMERASENSORMODETYPE;
885/*
886This parameter is used by clients to determine the sensor mode, and
887hence the memory usage, of the camera module. This is primarily used
888for determining the size of the input image pool.
889
890It can be used in two ways dependent on \code{nPortIndex}. If
891\code{nPortIndex} is \code{OMX_ALL}, it returns the sensor mode
892corresponding to \code{nModeIndex}, and the number of modes in
893\code{nNumModes}. If \code{nModeIndex} is greater than or equal to
894\code{nNumModes} only \code{nNumModes} is returned. If
895\code{nPortIndex} is equal to a camera video output port index, it
896returns the sensor mode that would be selected for the values
897currently in \code{OMX_IndexParamPortDefinition} for that port.
898
899The \code{nPaddingRight} and \code{nPaddingDown} values determine the
900extra padding the sensor adds to the image. These values must be added
901to \code{nWidth} and \code{nHeight} respectively if the client is
902specifying the input image pool size.
903*/
904
905typedef struct OMX_BRCMBUFFERSTATSTYPE {
906 OMX_U32 nOrdinal;
907 OMX_TICKS nTimeStamp;
908 OMX_U32 nFilledLen;
909 OMX_U32 nFlags;
910 union
911 {
912 OMX_U32 nU32;
913 struct
914 {
915 OMX_U32 nYpart;
916 OMX_U32 nUVpart;
917 } image;
918 } crc;
919} OMX_BRCMBUFFERSTATSTYPE;
920
921/*
922Ports that gather statistics for debugging and diagnostics
923might also collect information about buffer header fields
924and data.
925
926Note that:
927
928The \code{nOrdinal} field increases monotonically whenever
929a new buffer is received or emitted and shall not be reset
930upon a port flush.
931
932The \code{nFilledLen} might indicate the size of a data area
933larger than the data area that actually contributed to the
934checksums (e.g. when image data is provided with cropping
935information).
936*/
937
938/* OMX_IndexConfigBrcmPortBufferStats: Query port buffer stats history */
939typedef struct OMX_CONFIG_BRCMPORTBUFFERSTATSTYPE {
940 OMX_U32 nSize;
941 OMX_VERSIONTYPE nVersion;
942 OMX_U32 nPortIndex;
943 OMX_U32 nCount;
944 OMX_BRCMBUFFERSTATSTYPE sData[1];
945} OMX_CONFIG_BRCMPORTBUFFERSTATSTYPE;
946/*
947Ports that gather statistics for debugging and diagnostics
948might also collect information about buffer header fields
949and data.
950
951The \code{sStatsData} field is a variable length array and
952the number of items is denoted by \code{nStatsCount}.
953*/
954
955/* OMX_IndexConfigBrcmPortStats: Query port statistics */
956typedef struct OMX_CONFIG_BRCMPORTSTATSTYPE {
957 OMX_U32 nSize;
958 OMX_VERSIONTYPE nVersion;
959 OMX_U32 nPortIndex;
960 OMX_U32 nImageCount;
961 OMX_U32 nBufferCount;
962 OMX_U32 nFrameCount;
963 OMX_U32 nFrameSkips;
964 OMX_U32 nDiscards;
965 OMX_U32 nEOS;
966 OMX_U32 nMaxFrameSize;
967
968 OMX_TICKS nByteCount;
969 OMX_TICKS nMaxTimeDelta;
970 OMX_U32 nCorruptMBs; /**< Number of corrupt macroblocks in the stream */
971} OMX_CONFIG_BRCMPORTSTATSTYPE;
972/*
973Some ports gather various statistics that can be used by clients for
974debugging purposes. This structure is the set of all statistics that
975are gathered.
976
977The \code{nFrameSkips} field indicates the number of frames that did
978not have an expected PTS value based on the port frame rate.
979
980The \code{nByteCount} field is a 64 bit value, that will either use a
98164 bit type or two 32 bit types, similarly to \code{OMX_TICKS}.
982*/
983
984/* OMX_IndexConfigBrcmClockMissCount: Missed clock request accounting */
985/*
986For each port on the clock component, requests for media times may be
987made. These are typically done one per video frame to allow for
988scheduling the display of that frame at the correct time. If a
989request is made after the time has occurred, then that frame will be
990displayed late, and the clock component keeps a per-port record of the
991number of times this occurs. This record can be read using this
992index.
993*/
994
995typedef struct OMX_CONFIG_BRCMCAMERASTATSTYPE {
996 OMX_U32 nSize;
997 OMX_VERSIONTYPE nVersion;
998 OMX_U32 nOutFrameCount;
999 OMX_U32 nDroppedFrameCount;
1000} OMX_CONFIG_BRCMCAMERASTATSTYPE;
1001
1002// for backward compatibility
1003typedef struct OMX_CONFIG_BRCMCAMERASTATSTYPE OMX_CONFIG_BRCMCAMERASTATS;
1004
1005
1006#define OMX_BRCM_MAXIOPERFBANDS 10
1007typedef struct {
1008 OMX_U32 count[OMX_BRCM_MAXIOPERFBANDS];
1009 OMX_U32 num[OMX_BRCM_MAXIOPERFBANDS];
1010} OMX_BRCM_PERFSTATS;
1011
1012/* OMX_IndexConfigBrcmIOPerfStats: Query I/O performance statistics */
1013typedef struct OMX_CONFIG_BRCMIOPERFSTATSTYPE {
1014 OMX_U32 nSize;
1015 OMX_VERSIONTYPE nVersion;
1016 OMX_BOOL bEnabled; /**< Enable/disable I/O performance statistics */
1017 OMX_BRCM_PERFSTATS write; /**< count:bytes num:microseconds */
1018 OMX_BRCM_PERFSTATS flush; /**< count:frequency num:microseconds waiting to flush data */
1019 OMX_BRCM_PERFSTATS wait; /**< count:frequency num:microseconds waiting in calling function */
1020} OMX_CONFIG_BRCMIOPERFSTATSTYPE;
1021/*
1022A sink component can gather various statistics about I/O (eg. file media) performance that can be used by
1023clients for debugging purposes. The \code{bEnabled} field is used to turn the gathering of statistics
1024on/off.
1025*/
1026
1027typedef struct OMX_CONFIG_SHARPNESSTYPE {
1028 OMX_U32 nSize;
1029 OMX_VERSIONTYPE nVersion;
1030 OMX_U32 nPortIndex;
1031 OMX_S32 nSharpness;
1032} OMX_CONFIG_SHARPNESSTYPE;
1033
1034/* OMX_IndexConfigCommonFlickerCancellation: Flicker cancellation */
1035typedef enum OMX_COMMONFLICKERCANCELTYPE {
1036 OMX_COMMONFLICKERCANCEL_OFF,
1037 OMX_COMMONFLICKERCANCEL_AUTO,
1038 OMX_COMMONFLICKERCANCEL_50,
1039 OMX_COMMONFLICKERCANCEL_60,
1040 OMX_COMMONFLICKERCANCEL_DUMMY = 0x7FFFFFFF
1041} OMX_COMMONFLICKERCANCELTYPE;
1042
1043typedef struct OMX_CONFIG_FLICKERCANCELTYPE {
1044 OMX_U32 nSize;
1045 OMX_VERSIONTYPE nVersion;
1046 OMX_U32 nPortIndex;
1047 OMX_COMMONFLICKERCANCELTYPE eFlickerCancel;
1048} OMX_CONFIG_FLICKERCANCELTYPE;
1049/*
1050Query / set the flicker cancellation frequency. Values are defined for Off,
105150Hz, 60Hz, or auto. The method for auto detecting the flicker frequency is
1052not defined, and currently results in the feature being turned off.
1053*/
1054
1055/* OMX_IndexConfigCommonRedEyeRemoval: Red eye removal/reduction */
1056typedef enum OMX_REDEYEREMOVALTYPE {
1057 OMX_RedEyeRemovalNone, /**< No red eye removal */
1058 OMX_RedEyeRemovalOn, /**< Red eye removal on */
1059 OMX_RedEyeRemovalAuto, /**< Red eye removal will be done automatically when detected */
1060 OMX_RedEyeRemovalKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
1061 OMX_RedEyeRemovalVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
1062 OMX_RedEyeRemovalSimple, /**< Use simple red eye reduction mechanism if supported by algorithm */
1063 OMX_RedEyeRemovalMax = 0x7FFFFFFF
1064} OMX_REDEYEREMOVALTYPE;
1065
1066typedef struct OMX_CONFIG_REDEYEREMOVALTYPE {
1067 OMX_U32 nSize;
1068 OMX_VERSIONTYPE nVersion;
1069 OMX_U32 nPortIndex;
1070 OMX_REDEYEREMOVALTYPE eMode;
1071} OMX_CONFIG_REDEYEREMOVALTYPE;
1072/*
1073 Configures the red eye reduction algorithm in the camera processing
1074 pipeline. The stage is only enabled if the flash mode is not FlashOff.
1075 The OMX_RedEyeRemovalSimple mode requests that the algorithm uses a
1076 reduced complexity algorithm to reduce the processing time.
1077*/
1078
1079
1080typedef enum OMX_FACEDETECTIONCONTROLTYPE {
1081 OMX_FaceDetectionControlNone, /**< Disables face detection */
1082 OMX_FaceDetectionControlOn, /**< Enables face detection */
1083 OMX_FaceDetectionControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
1084 OMX_FaceDetectionControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
1085 OMX_FaceDetectionControlMax = 0x7FFFFFFF
1086} OMX_FACEDETECTIONCONTROLTYPE;
1087
1088typedef struct OMX_CONFIG_FACEDETECTIONCONTROLTYPE {
1089 OMX_U32 nSize;
1090 OMX_VERSIONTYPE nVersion;
1091 OMX_U32 nPortIndex;
1092 OMX_FACEDETECTIONCONTROLTYPE eMode;
1093 OMX_U32 nFrames; /**< number of frames to apply this setting for,
1094 0 for unlimited */
1095 OMX_U32 nMaxRegions; /**< maximum number of regions to detect, 0 for unlimited */
1096 OMX_U32 nQuality; /**< hint for algorithmic complexity, range is 0-100.
1097 0 for simplest algorithm, 100 for best quality */
1098} OMX_CONFIG_FACEDETECTIONCONTROLTYPE;
1099
1100typedef enum OMX_FACEREGIONFLAGSTYPE {
1101 OMX_FaceRegionFlagsNone = 0,
1102 OMX_FaceRegionFlagsBlink = 1,
1103 OMX_FaceRegionFlagsSmile = 2,
1104 OMX_FaceRegionFlagsKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
1105 OMX_FaceRegionFlagsVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
1106 OMX_FaceRegionFlagsMax = 0x7FFFFFFF
1107} OMX_FACEREGIONFLAGSTYPE;
1108
1109typedef struct OMX_FACEREGIONTYPE {
1110 OMX_S16 nLeft; /**< X Coordinate of the top left corner of the rectangle */
1111 OMX_S16 nTop; /**< Y Coordinate of the top left corner of the rectangle */
1112 OMX_U16 nWidth; /**< Width of the rectangle */
1113 OMX_U16 nHeight; /**< Height of the rectangle */
1114 OMX_FACEREGIONFLAGSTYPE nFlags; /**< Flags for the region */
1115#ifndef OMX_SKIP64BIT
1116 OMX_U64 nFaceRecognitionId; /**< ID returned by face recognition for this face */
1117#else
1118 struct
1119 {
1120 OMX_U32 nLowPart; /**< low bits of the signed 64 bit value */
1121 OMX_U32 nHighPart; /**< high bits of the signed 64 bit value */
1122 } nFaceRecognitionId;
1123#endif
1124} OMX_FACEREGIONTYPE;
1125
1126typedef struct OMX_CONFIG_FACEDETECTIONREGIONTYPE {
1127 OMX_U32 nSize;
1128 OMX_VERSIONTYPE nVersion;
1129 OMX_U32 nPortIndex; /**< index of port with face detection enabled */
1130 OMX_U32 nIndex; /**< first requested region number, allowing retrieval of many regions
1131 over several requests */
1132 OMX_U32 nDetectedRegions; /**< total number of detected regions */
1133 OMX_S32 nValidRegions; /**< number of valid regions in sRegion array
1134 When getting, the client sets this to the number of regions available.
1135 The component writes region data and updates this field with how many
1136 regions have been written to. */
1137 OMX_U32 nImageWidth; /**< Width of the image, hence reference for the face coordinates */
1138 OMX_U32 nImageHeight; /**< Height of the image, hence reference for the face coordinates */
1139 OMX_FACEREGIONTYPE sRegion[1]; /**< variable length array of face regions */
1140} OMX_CONFIG_FACEDETECTIONREGIONTYPE;
1141
1142typedef enum OMX_INTERLACETYPE {
1143 OMX_InterlaceProgressive, /**< The data is not interlaced, it is progressive scan */
1144 OMX_InterlaceFieldSingleUpperFirst, /**< The data is interlaced, fields sent
1145 separately in temporal order, with upper field first */
1146 OMX_InterlaceFieldSingleLowerFirst, /**< The data is interlaced, fields sent
1147 separately in temporal order, with lower field first */
1148 OMX_InterlaceFieldsInterleavedUpperFirst, /**< The data is interlaced, two fields sent together line
1149 interleaved, with the upper field temporally earlier */
1150 OMX_InterlaceFieldsInterleavedLowerFirst, /**< The data is interlaced, two fields sent together line
1151 interleaved, with the lower field temporally earlier */
1152 OMX_InterlaceMixed, /**< The stream may contain a mixture of progressive
1153 and interlaced frames */
1154 OMX_InterlaceKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
1155 OMX_InterlaceVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
1156 OMX_InterlaceMax = 0x7FFFFFFF
1157} OMX_INTERLACETYPE;
1158
1159typedef struct OMX_CONFIG_INTERLACETYPE {
1160 OMX_U32 nSize;
1161 OMX_VERSIONTYPE nVersion;
1162 OMX_U32 nPortIndex; /**< index of port emitting or accepting the content */
1163 OMX_INTERLACETYPE eMode; /**< The interlace type of the content */
1164 OMX_BOOL bRepeatFirstField; /**< Whether to repeat the first field */
1165} OMX_CONFIG_INTERLACETYPE;
1166
1167/* OMX_IndexParamIspTuner: Custom ISP tuner */
1168typedef struct OMX_PARAM_CAMERAISPTUNERTYPE {
1169 OMX_U32 nSize;
1170 OMX_VERSIONTYPE nVersion;
1171 OMX_U8 tuner_name[64];
1172} OMX_PARAM_CAMERAISPTUNERTYPE;
1173/*
1174This parameter allows a custom ISP tuner to be loaded instead of
1175the default one specified for the camera module. Setting an empty
1176string uses the default value.
1177*/
1178
1179/* OMX_IndexConfigCameraInputFrame: Pointer to the raw input image */
1180typedef struct OMX_CONFIG_IMAGEPTRTYPE {
1181 OMX_U32 nSize;
1182 OMX_VERSIONTYPE nVersion;
1183 OMX_PTR pImage;
1184} OMX_CONFIG_IMAGEPTRTYPE;
1185/*
1186This parameter parameter allows the return of a pointer to a
1187VideoCore image resource.
1188*/
1189
1190/* OMX_IndexConfigAFAssistLight: Autofocus assist light mode selection */
1191typedef enum OMX_AFASSISTTYPE {
1192 OMX_AFAssistAuto,
1193 OMX_AFAssistOn,
1194 OMX_AFAssistOff,
1195 OMX_AFAssistTorch,
1196 OMX_AFAssistKhronosExtensions = 0x6F000000,
1197 OMX_AFAssistVendorStartUnused = 0x7F000000,
1198 OMX_AFAssistMax = 0x7FFFFFFF
1199} OMX_AFASSISTTYPE;
1200
1201typedef struct OMX_CONFIG_AFASSISTTYPE {
1202 OMX_U32 nSize;
1203 OMX_VERSIONTYPE nVersion;
1204 OMX_U32 nPortIndex;
1205 OMX_AFASSISTTYPE eMode;
1206} OMX_CONFIG_AFASSISTTYPE;
1207/*
1208Set the mode to adopt for the autofocus assist light.
1209\code{OMX_AFAssistTorch} will turn the AF assist light on permanently, allowing
1210it to be used as a torch.
1211*/
1212
1213/* OMX_IndexConfigInputCropPercentage: Specify input crop as a percentage */
1214typedef struct OMX_CONFIG_INPUTCROPTYPE {
1215 OMX_U32 nSize;
1216 OMX_VERSIONTYPE nVersion;
1217 OMX_U32 nPortIndex;
1218 OMX_U32 xLeft; /**< Fraction of the width for the top left corner of the rectangle */
1219 OMX_U32 xTop; /**< Fraction of the height for the top left corner of the rectangle */
1220 OMX_U32 xWidth; /**< Fraction of the image width desired */
1221 OMX_U32 xHeight; /**< Fraction of the image height desired */
1222} OMX_CONFIG_INPUTCROPTYPE;
1223/*
1224This parameter allows the input cropping to be specified as a
1225percentage of the current width/height. Required for the camera
1226component where the output resolution varies dependent on the port.
1227All percentage values are as 16p16 fixed point numbers (0x10000 =
1228100\%)
1229*/
1230
1231/* OMX_IndexParamCodecRequirements: Advanced codec requirements */
1232typedef struct OMX_PARAM_CODECREQUIREMENTSTYPE {
1233 OMX_U32 nSize;
1234 OMX_VERSIONTYPE nVersion;
1235 OMX_U32 nCallbackID;
1236 OMX_BOOL bTryHWCodec;
1237} OMX_PARAM_CODECREQUIREMENTSTYPE;
1238/*
1239This parameter allows internal users of RIL components controlling
1240video codecs to request that the component loads the component and
1241queries for requirements. The component will perform a callback with
1242the given nCallbackID value passing a pointer to the requirements
1243structure as the data field.
1244*/
1245
1246/* OMX_IndexConfigBrcmEGLImageMemHandle: Mapping from an EGLImage to a VideoCore mem handle */
1247typedef struct OMX_CONFIG_BRCMEGLIMAGEMEMHANDLETYPE {
1248 OMX_U32 nSize;
1249 OMX_VERSIONTYPE nVersion;
1250 OMX_U32 nPortIndex;
1251 OMX_PTR eglImage;
1252 OMX_PTR memHandle;
1253} OMX_CONFIG_BRCMEGLIMAGEMEMHANDLETYPE;
1254/*
1255This config allows the EGL server to notify a RIL component that an
1256EGLImage is available for rendering into and to provide a mapping from
1257an EGLImage to a mem handle.
1258*/
1259
1260/* OMX_IndexConfigPrivacyIndicator: Privacy indicator control */
1261typedef enum OMX_PRIVACYINDICATORTYPE {
1262 OMX_PrivacyIndicatorOff,
1263 OMX_PrivacyIndicatorOn,
1264 OMX_PrivacyIndicatorForceOn,
1265 OMX_PrivacyIndicatorKhronosExtensions = 0x6F000000,
1266 OMX_PrivacyIndicatorVendorStartUnused = 0x7F000000,
1267 OMX_PrivacyIndicatorMax = 0x7FFFFFFF
1268} OMX_PRIVACYINDICATORTYPE;
1269
1270typedef struct OMX_CONFIG_PRIVACYINDICATORTYPE {
1271 OMX_U32 nSize;
1272 OMX_VERSIONTYPE nVersion;
1273 OMX_PRIVACYINDICATORTYPE ePrivacyIndicatorMode;
1274} OMX_CONFIG_PRIVACYINDICATORTYPE;
1275/*
1276This config allows control over the privacy indicator light. This
1277light indicates when a capture is in progress.
1278
1279\code{OMX_PrivacyIndicatorOff} indicator is disabled.
1280
1281\code{OMX_PrivacyIndicatorOn} indicator will be
1282turned on whenever an image is being captured as determined by the
1283capturing bit. Minimum on duration of approx 200ms.
1284
1285\code{OMX_PrivacyIndicatorForceOn} results in turning the indicator on
1286immediately, whether an image is being captured or not. The mode will
1287automatically revert to \code{OMX_PrivacyIndicatorOff} once the
1288indicator has been turned on, so \code{OMX_PrivacyIndicatorForceOn}
1289must be requested at least every 200ms if the indicator is to remain
1290on.
1291*/
1292
1293
1294/* OMX_IndexParamCameraFlashType: Select flash type */
1295typedef enum OMX_CAMERAFLASHTYPE {
1296 OMX_CameraFlashDefault,
1297 OMX_CameraFlashXenon,
1298 OMX_CameraFlashLED,
1299 OMX_CameraFlashNone,
1300 OMX_CameraFlashKhronosExtensions = 0x6F000000,
1301 OMX_CameraFlashVendorStartUnused = 0x7F000000,
1302 OMX_CameraFlashMax = 0x7FFFFFFF
1303} OMX_CAMERAFLASHTYPE;
1304
1305typedef struct OMX_PARAM_CAMERAFLASHTYPE {
1306 OMX_U32 nSize;
1307 OMX_VERSIONTYPE nVersion;
1308 OMX_U32 nPortIndex;
1309 OMX_CAMERAFLASHTYPE eFlashType;
1310 OMX_BOOL bRedEyeUsesTorchMode;
1311} OMX_PARAM_CAMERAFLASHTYPE;
1312/*
1313This parameter allows the selection of xenon or LED flash devices
1314to be used with the currently selected camera. If that device is not
1315available, then the component will revert back to whatever flash
1316device is available for that camera.
1317\code{bRedEyeUsesTorchMode} allows the blinking for red eye reduction to
1318be switched between using the indicator mode, and the torch mode for the
1319flash driver.
1320*/
1321
1322/* OMX_IndexConfigCameraFlashConfig: Flash cycle configuration */
1323typedef enum OMX_CAMERAFLASHCONFIGSYNCTYPE {
1324 OMX_CameraFlashConfigSyncFrontSlow,
1325 OMX_CameraFlashConfigSyncRearSlow,
1326 OMX_CameraFlashConfigSyncFrontFast,
1327 OMX_CameraFlashConfigSyncKhronosExtensions = 0x6F000000,
1328 OMX_CameraFlashConfigSyncVendorStartUnused = 0x7F000000,
1329 OMX_CameraFlashConfigSyncMax = 0x7FFFFFFF
1330} OMX_CAMERAFLASHCONFIGSYNCTYPE;
1331
1332typedef struct OMX_CONFIG_CAMERAFLASHCONFIGTYPE {
1333 OMX_U32 nSize;
1334 OMX_VERSIONTYPE nVersion;
1335 OMX_U32 nPortIndex;
1336 OMX_BOOL bUsePreFlash;
1337 OMX_BOOL bUseFocusDistanceInfo;
1338 OMX_CAMERAFLASHCONFIGSYNCTYPE eFlashSync;
1339 OMX_BOOL bIgnoreChargeState;
1340} OMX_CONFIG_CAMERAFLASHCONFIGTYPE;
1341/*
1342This parameter allows the configuration of various parameters relating to
1343the flash cycle. Some of the options are only applicable to xenon flash.
1344
1345\code{bUsePreFlash} uses a low intensity pre-flash to determine flash intensity. This setting
1346is recommended for almost all flash situations.
1347
1348\code{bUseFocusDistanceInfo} uses the distance of the subject, as measured by the AF algorithm
1349to set the intensity of the flash.
1350
1351\code{eFlashSync} configures which edge of the shutter is used to synchronise the flash, and
1352the duration of the exposure.
1353
1354\code{eIgnoreChargeState} will make the flash fire, even if it is not fully charged.
1355*/
1356
1357/* OMX_IndexConfigBrcmAudioTrackGaplessPlayback: Encoder/decoder delay and padding information for gapless playback. */
1358typedef struct OMX_CONFIG_BRCMAUDIOTRACKGAPLESSPLAYBACKTYPE {
1359 OMX_U32 nSize;
1360 OMX_VERSIONTYPE nVersion;
1361 OMX_U32 nPortIndex;
1362 OMX_U32 nDelay; /**< number of samples delay added by the codec */
1363 OMX_U32 nPadding; /**< number of silent samples added to the end */
1364} OMX_CONFIG_BRCMAUDIOTRACKGAPLESSPLAYBACKTYPE;
1365/*
1366This config allows communication between components to facilitate gapless playback.
1367*/
1368
1369
1370/* OMX_IndexConfigBrcmAudioTrackChangeControl: Configure gapless/crossfaded audio track change. */
1371typedef struct OMX_CONFIG_BRCMAUDIOTRACKCHANGECONTROLTYPE {
1372 OMX_U32 nSize;
1373 OMX_VERSIONTYPE nVersion;
1374 OMX_U32 nSrcPortIndex;
1375 OMX_U32 nDstPortIndex;
1376 OMX_U32 nXFade;
1377} OMX_CONFIG_BRCMAUDIOTRACKCHANGECONTROLTYPE;
1378/*
1379This config allows the client to specify the gapless or crossfade
1380parameters to be used on a track change. If \code{nXFade} is 0, then
1381a normal or gapless track change will result, otherwise a crossfade of
1382\code{nXFade} ms is used.
1383*/
1384
1385/* OMX_IndexParamBrcmPixelValueRange: Describing the pixel value range */
1386typedef enum OMX_BRCMPIXELVALUERANGETYPE
1387{
1388 OMX_PixelValueRangeUnspecified = 0,
1389 OMX_PixelValueRangeITU_R_BT601,
1390 OMX_PixelValueRangeFull8Bit,
1391 OMX_PixelValueRangeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
1392 OMX_PixelValueRangeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
1393 OMX_PixelValueRangeMax = 0x7FFFFFFF
1394} OMX_BRCMPIXELVALUERANGETYPE;
1395
1396typedef struct OMX_PARAM_BRCMPIXELVALUERANGETYPE
1397{
1398 OMX_U32 nSize;
1399 OMX_VERSIONTYPE nVersion;
1400 OMX_U32 nPortIndex;
1401 OMX_BRCMPIXELVALUERANGETYPE ePixelValueRange;
1402} OMX_PARAM_BRCMPIXELVALUERANGETYPE;
1403/*
1404This structure allows a description of the range that pixel values may
1405have. This is typically useful since some standards use the full 8
1406bit range, whereas others introduce pedastals which reduce the range
1407at the top and bottom end.
1408*/
1409
1410/* OMX_IndexParamCameraDisableAlgorithm: Disabling camera processing stages. */
1411typedef enum OMX_CAMERADISABLEALGORITHMTYPE {
1412 OMX_CameraDisableAlgorithmFacetracking,
1413 OMX_CameraDisableAlgorithmRedEyeReduction,
1414 OMX_CameraDisableAlgorithmVideoStabilisation,
1415 OMX_CameraDisableAlgorithmWriteRaw,
1416 OMX_CameraDisableAlgorithmVideoDenoise,
1417 OMX_CameraDisableAlgorithmStillsDenoise,
1418 OMX_CameraDisableAlgorithmAntiShake,
1419 OMX_CameraDisableAlgorithmImageEffects,
1420 OMX_CameraDisableAlgorithmDarkSubtract,
1421 OMX_CameraDisableAlgorithmDynamicRangeExpansion,
1422 OMX_CameraDisableAlgorithmFaceRecognition,
1423 OMX_CameraDisableAlgorithmFaceBeautification,
1424 OMX_CameraDisableAlgorithmSceneDetection,
1425 OMX_CameraDisableAlgorithmHighDynamicRange,
1426 OMX_CameraDisableAlgorithmKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
1427 OMX_CameraDisableAlgorithmVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
1428 OMX_CameraDisableAlgorithmMax = 0x7FFFFFFF
1429} OMX_CAMERADISABLEALGORITHMTYPE;
1430
1431typedef struct OMX_PARAM_CAMERADISABLEALGORITHMTYPE
1432{
1433 OMX_U32 nSize;
1434 OMX_VERSIONTYPE nVersion;
1435 OMX_CAMERADISABLEALGORITHMTYPE eAlgorithm;
1436 OMX_BOOL bDisabled;
1437} OMX_PARAM_CAMERADISABLEALGORITHMTYPE;
1438/*
1439Allows plugin algorithms to be disabled to save memory
1440within the camera component
1441*/
1442
1443/* OMX_IndexConfigBrcmAudioEffectControl: Audio Effect Control */
1444typedef struct OMX_CONFIG_BRCMAUDIOEFFECTCONTROLTYPE {
1445 OMX_U32 nSize;
1446 OMX_VERSIONTYPE nVersion;
1447 OMX_U32 nPortIndex;
1448 OMX_BOOL bEnable;
1449 OMX_U8 name[16];
1450 OMX_U8 property[256];
1451} OMX_CONFIG_BRCMAUDIOEFFECTCONTROLTYPE;
1452/*
1453This structure represents the internal configuration of an audio effect.
1454The audio effect is provided by a loadable plug-in described
1455in the \code{name} field and is configured in a plug-in-dependent
1456manner with the \code{property} field. The \code{bEnable} field is used to
1457turn the effect on/off.
1458*/
1459
1460/* OMX_IndexConfigBrcmMinimumProcessingLatency: Processing Latency Bound */
1461typedef struct OMX_CONFIG_BRCMMINIMUMPROCESSINGLATENCY {
1462 OMX_U32 nSize;
1463 OMX_VERSIONTYPE nVersion;
1464 OMX_TICKS nOffset;
1465} OMX_CONFIG_BRCMMINIMUMPROCESSINGLATENCY;
1466/*
1467Query/set the difference between the actual media time and when the
1468component receives request fulfillments for media time requests. This
1469can be used with e.g. splitter/mixer components to control when the
1470component stops waiting for input or output packets from active
1471streams and continues with processing (to maintain a constant
1472processing rate).
1473*/
1474
1475/** Enable or disable Supplemental Enhancment Information (SEI) messages to be inserted in
1476 * the H.264 bitstream.
1477 */
1478typedef struct OMX_PARAM_BRCMVIDEOAVCSEIENABLETYPE {
1479 OMX_U32 nSize;
1480 OMX_VERSIONTYPE nVersion;
1481 OMX_U32 nPortIndex;
1482 OMX_BOOL bEnable;
1483} OMX_PARAM_BRCMVIDEOAVCSEIENABLETYPE;
1484
1485/* OMX_IndexParamBrcmAllowMemChange: Allowing changing memory allocation on state transition */
1486typedef struct OMX_PARAM_BRCMALLOWMEMCHANGETYPE {
1487 OMX_U32 nSize;
1488 OMX_VERSIONTYPE nVersion;
1489 OMX_BOOL bEnable;
1490} OMX_PARAM_BRCMALLOWMEMCHANGETYPE;
1491/*
1492Let the component change the amount of memory it has allocated when
1493going from LOADED to IDLE. By default this is enabled, but if it is
1494disabled the component will fail to transition to IDLE if the
1495component requires more memory than has already been allocated. This
1496might occur if (for example) the component was configured, taken to
1497IDLE, then taken back to LOADED, the profile increased and the
1498component taken back to IDLE.
1499*/
1500
1501typedef enum OMX_CONFIG_CAMERAUSECASE {
1502 OMX_CameraUseCaseAuto,
1503 OMX_CameraUseCaseVideo,
1504 OMX_CameraUseCaseStills,
1505 OMX_CameraUseCaseKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
1506 OMX_CameraUseCaseVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
1507 OMX_CameraUseCaseMax = 0x7FFFFFFF
1508} OMX_CONFIG_CAMERAUSECASE;
1509
1510typedef struct OMX_CONFIG_CAMERAUSECASETYPE {
1511 OMX_U32 nSize;
1512 OMX_VERSIONTYPE nVersion;
1513 OMX_CONFIG_CAMERAUSECASE eUseCase;
1514} OMX_CONFIG_CAMERAUSECASETYPE;
1515
1516/* OMX_IndexParamBrcmDisableProprietaryTunnels: Disabling proprietary tunnelling */
1517typedef struct OMX_PARAM_BRCMDISABLEPROPRIETARYTUNNELSTYPE {
1518 OMX_U32 nSize;
1519 OMX_VERSIONTYPE nVersion;
1520 OMX_U32 nPortIndex;
1521 OMX_BOOL bUseBuffers;
1522} OMX_PARAM_BRCMDISABLEPROPRIETARYTUNNELSTYPE;
1523/*
1524Tell a source component to refuse to support proprietary tunnelling. Buffers will be used instead.
1525*/
1526
1527
1528//
1529// Control for memory allocation and component-internal buffering
1530//
1531
1532/* OMX_IndexParamBrcmRetainMemory: Controlling memory use on state transition */
1533typedef struct OMX_PARAM_BRCMRETAINMEMORYTYPE
1534{
1535 OMX_U32 nSize;
1536 OMX_VERSIONTYPE nVersion;
1537 OMX_BOOL bEnable;
1538} OMX_PARAM_BRCMRETAINMEMORYTYPE;
1539/*
1540Ask a component to retain its memory when going from IDLE to LOADED, if possible.
1541This has the benefit that you are then guaranteed that the transition to IDLE cannot
1542fail due to lack of memory, but has the disadvantage that you cannot leave the component
1543lying around in LOADED, unused, since it is using significant amounts of memory.
1544*/
1545
1546/** Tell write media how large the output buffer should be. This is a hint, and
1547 * may be ignored. A good size is bandwidth*<SDcard-delay>, which works out at
1548 * around 1Mbyte for up to 16Mbit/s. Sizes may (and probably will) be rounded down
1549 * to the nearest power of 2.
1550 */
1551typedef struct OMX_PARAM_BRCMOUTPUTBUFFERSIZETYPE {
1552 OMX_U32 nSize;
1553 OMX_VERSIONTYPE nVersion;
1554 OMX_U32 nBufferSize;
1555} OMX_PARAM_BRCMOUTPUTBUFFERSIZETYPE;
1556
1557/* OMX_IndexConfigCameraInfo: Camera device driver information */
1558#define OMX_CONFIG_CAMERAINFOTYPE_NAME_LEN 16
1559typedef struct OMX_CONFIG_LENSCALIBRATIONVALUETYPE
1560{
1561 OMX_U16 nShutterDelayTime;
1562 OMX_U16 nNdTransparency;
1563 OMX_U16 nPwmPulseNearEnd; /**< Num pulses to move lens 1um at near end */
1564 OMX_U16 nPwmPulseFarEnd; /**< Num pulses to move lens 1um at far end */
1565 OMX_U16 nVoltagePIOutNearEnd[3];
1566 OMX_U16 nVoltagePIOut10cm[3];
1567 OMX_U16 nVoltagePIOutInfinity[3];
1568 OMX_U16 nVoltagePIOutFarEnd[3];
1569 OMX_U32 nAdcConversionNearEnd;
1570 OMX_U32 nAdcConversionFarEnd;
1571} OMX_CONFIG_LENSCALIBRATIONVALUETYPE;
1572/*
1573Ask the camera component for the driver info on the current camera device
1574*/
1575
1576#define OMX_CONFIG_CAMERAINFOTYPE_NAME_LEN 16
1577#define OMX_CONFIG_CAMERAINFOTYPE_SERIALNUM_LEN 20
1578#define OMX_CONFIG_CAMERAINFOTYPE_EPROMVER_LEN 8
1579typedef struct OMX_CONFIG_CAMERAINFOTYPE
1580{
1581 OMX_U32 nSize;
1582 OMX_VERSIONTYPE nVersion;
1583 OMX_U8 cameraname[OMX_CONFIG_CAMERAINFOTYPE_NAME_LEN];
1584 OMX_U8 lensname[OMX_CONFIG_CAMERAINFOTYPE_NAME_LEN];
1585 OMX_U16 nModelId;
1586 OMX_U8 nManufacturerId;
1587 OMX_U8 nRevNum;
1588 OMX_U8 sSerialNumber[OMX_CONFIG_CAMERAINFOTYPE_SERIALNUM_LEN];
1589 OMX_U8 sEpromVersion[OMX_CONFIG_CAMERAINFOTYPE_EPROMVER_LEN];
1590 OMX_CONFIG_LENSCALIBRATIONVALUETYPE sLensCalibration;
1591 OMX_U32 xFNumber;
1592 OMX_U32 xFocalLength;
1593} OMX_CONFIG_CAMERAINFOTYPE;
1594
1595
1596typedef enum OMX_CONFIG_CAMERAFEATURESSHUTTER {
1597 OMX_CameraFeaturesShutterUnknown,
1598 OMX_CameraFeaturesShutterNotPresent,
1599 OMX_CameraFeaturesShutterPresent,
1600 OMX_CameraFeaturesShutterKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
1601 OMX_CameraFeaturesShutterVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
1602 OMX_CameraFeaturesShutterMax = 0x7FFFFFFF
1603} OMX_CONFIG_CAMERAFEATURESSHUTTER;
1604
1605typedef struct OMX_CONFIG_CAMERAFEATURESTYPE
1606{
1607 OMX_U32 nSize;
1608 OMX_VERSIONTYPE nVersion;
1609 OMX_CONFIG_CAMERAFEATURESSHUTTER eHasMechanicalShutter;
1610 OMX_BOOL bHasLens;
1611} OMX_CONFIG_CAMERAFEATURESTYPE;
1612
1613
1614//Should be added to the spec as part of IL416c
1615/* OMX_IndexConfigRequestCallback: Enable config change notifications. */
1616typedef struct OMX_CONFIG_REQUESTCALLBACKTYPE
1617{
1618 OMX_U32 nSize;
1619 OMX_VERSIONTYPE nVersion;
1620 OMX_U32 nPortIndex;
1621 OMX_INDEXTYPE nIndex;
1622 OMX_BOOL bEnable;
1623} OMX_CONFIG_REQUESTCALLBACKTYPE;
1624/*
1625This config implements IL416c to allow clients to request notification
1626of when a config or parameter is changed. When the parameter specified
1627in \code{nIndex} for port \code{nPortIndex} changes, an
1628\code{OMX_EventParamOrConfigChanged} event is generated for the client.
1629*/
1630
1631/* OMX_IndexConfigCommonFocusRegionXY: Define focus regions */
1632typedef enum OMX_FOCUSREGIONTYPE {
1633 OMX_FocusRegionNormal,
1634 OMX_FocusRegionFace,
1635 OMX_FocusRegionMax
1636} OMX_FOCUSREGIONTYPE;
1637
1638typedef struct OMX_FOCUSREGIONXY {
1639 OMX_U32 xLeft;
1640 OMX_U32 xTop;
1641 OMX_U32 xWidth;
1642 OMX_U32 xHeight;
1643 OMX_U32 nWeight;
1644 OMX_U32 nMask;
1645 OMX_FOCUSREGIONTYPE eType;
1646} OMX_FOCUSREGIONXY;
1647
1648typedef struct OMX_CONFIG_FOCUSREGIONXYTYPE
1649{
1650 OMX_U32 nSize;
1651 OMX_VERSIONTYPE nVersion;
1652 OMX_U32 nPortIndex;
1653 OMX_U32 nIndex;
1654 OMX_U32 nTotalRegions;
1655 OMX_S32 nValidRegions;
1656 OMX_BOOL bLockToFaces;
1657 OMX_U32 xFaceTolerance;
1658 OMX_FOCUSREGIONXY sRegion[1];
1659} OMX_CONFIG_FOCUSREGIONXYTYPE;
1660/*
1661Query / set the focus regions to use as a set of x/y/width/height boxes relative
1662to the overall image.
1663
1664\code{nIndex} - first region number being set/read, allowing retrieval/setting
1665of many regions over several requests.
1666
1667\code{nTotalRegions} - total number of regions currently defined.
1668
1669\code{nValidRegions} - number of valid regions in the \code{sRegion} array.
1670When getting, the client sets this to the number of regions available.
1671The component writes region data and updates this field with how many
1672regions have been written to.
1673When setting, this is the number of regions defined with this structure
1674
1675\code{bLockToFaces} - compare the region(s) given to the latest face tracking results.
1676If a face is found within xFaceTolerance of the defined region, then amend the
1677region to correspond to the face.
1678
1679\code{xFaceTolerance} - 0p16 value to define the max difference between the region centre
1680and face tracking result centre to take the FT results
1681
1682\code{sRegions} - variable length array of focus regions.
1683*/
1684
1685typedef struct OMX_CONFIG_U8TYPE {
1686 OMX_U32 nSize; /**< Size of this structure, in Bytes */
1687 OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
1688 OMX_U32 nPortIndex; /**< port that this structure applies to */
1689 OMX_U8 nU8; /**< U8 value */
1690} OMX_PARAM_U8TYPE;
1691
1692typedef struct OMX_CONFIG_CAMERASETTINGSTYPE {
1693 OMX_U32 nSize;
1694 OMX_VERSIONTYPE nVersion;
1695 OMX_U32 nPortIndex; /**< port that this structure applies to */
1696 OMX_U32 nExposure;
1697 OMX_U32 nAnalogGain;
1698 OMX_U32 nDigitalGain;
1699 OMX_U32 nLux;
1700 OMX_U32 nRedGain;
1701 OMX_U32 nBlueGain;
1702 OMX_U32 nFocusPosition;
1703} OMX_CONFIG_CAMERASETTINGSTYPE;
1704
1705/* OMX_IndexConfigDrawBoxLineParams: Face box style parameters. */
1706typedef struct OMX_YUVCOLOUR {
1707 OMX_U8 nY;
1708 OMX_U8 nU;
1709 OMX_U8 nV;
1710} OMX_YUVCOLOUR;
1711
1712typedef struct OMX_CONFIG_DRAWBOXLINEPARAMS {
1713 OMX_U32 nSize; /**< Size of this structure, in Bytes */
1714 OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
1715 OMX_U32 nPortIndex; /**< Port to which this config applies */
1716 OMX_U32 xCornerSize; /**< Size of the corners as a fraction of the complete side */
1717 OMX_U32 nPrimaryFaceLineWidth; /**< Width of the box line for the primary face in pixels */
1718 OMX_U32 nOtherFaceLineWidth; /**< Width of the box line for other faces in pixels */
1719 OMX_U32 nFocusRegionLineWidth; /**< Width of the box line for focus regions in pixels */
1720 OMX_YUVCOLOUR sPrimaryFaceColour; /**< YUV colour for the primary face */
1721 OMX_YUVCOLOUR sPrimaryFaceSmileColour; /**< YUV colour for the primary face if smiling */
1722 OMX_YUVCOLOUR sPrimaryFaceBlinkColour; /**< YUV colour for the primary face if blinking */
1723 OMX_YUVCOLOUR sOtherFaceColour; /**< YUV colour for the all other faces */
1724 OMX_YUVCOLOUR sOtherFaceSmileColour; /**< YUV colour for the all other faces if smiling */
1725 OMX_YUVCOLOUR sOtherFaceBlinkColour; /**< YUV colour for the all other faces if blinking */
1726 OMX_BOOL bShowFocusRegionsWhenIdle; /**< Are focus regions displayed when just in viewfinder/AF idle */
1727 OMX_YUVCOLOUR sFocusRegionColour; /**< YUV colour for focus regions */
1728 OMX_BOOL bShowAfState; /**< Change to the colours specified below if AF cycle has run */
1729 OMX_BOOL bShowOnlyPrimaryAfState; /**< Only show the primary face when displaying the AF status */
1730 OMX_BOOL bCombineNonFaceRegions; /**< Combine all regions not defined as faces into one single box covering them all */
1731 OMX_YUVCOLOUR sAfLockPrimaryFaceColour; /**< YUV colour for the primary face */
1732 OMX_YUVCOLOUR sAfLockOtherFaceColour; /**< YUV colour for the all other faces */
1733 OMX_YUVCOLOUR sAfLockFocusRegionColour; /**< YUV colour for focus regions */
1734 OMX_YUVCOLOUR sAfFailPrimaryFaceColour; /**< YUV colour for the primary face */
1735 OMX_YUVCOLOUR sAfFailOtherFaceColour; /**< YUV colour for the all other faces */
1736 OMX_YUVCOLOUR sAfFailFocusRegionColour; /**< YUV colour for focus regions */
1737 } OMX_CONFIG_DRAWBOXLINEPARAMS;
1738/*
1739Query / set the parameters for the box to be drawn around faces/focus regions.
1740*/
1741
1742 #define OMX_PARAM_CAMERARMITYPE_RMINAME_LEN 16
1743 //OMX_IndexParamCameraRmiControl
1744 typedef struct OMX_PARAM_CAMERARMITYPE {
1745 OMX_U32 nSize;
1746 OMX_VERSIONTYPE nVersion;
1747 OMX_BOOL bEnabled;
1748 OMX_U8 sRmiName[OMX_PARAM_CAMERARMITYPE_RMINAME_LEN];
1749 OMX_U32 nInputBufferHeight;
1750 OMX_U32 nRmiBufferSize;
1751 OMX_BRCM_POOL_T *pImagePool;
1752 } OMX_PARAM_CAMERARMITYPE;
1753
1754/* OMX_IndexConfigBrcmSyncOutput: Forcing a write sync */
1755typedef struct OMX_CONFIG_BRCMSYNCOUTPUTTYPE {
1756 OMX_U32 nSize; /**< Size of this structure, in Bytes */
1757 OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
1758} OMX_CONFIG_BRCMSYNCOUTPUTTYPE;
1759/*
1760Setting this config forces a sync of data to the filesystem.
1761*/
1762
1763/* OMX_IndexConfigDrmView: View information for DRM rental files */
1764typedef struct OMX_CONFIG_DRMVIEWTYPE {
1765 OMX_U32 nSize; /**< Size of this structure, in Bytes */
1766 OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
1767 OMX_U32 nCurrentView; /**< Current view count */
1768 OMX_U32 nMaxView; /**< Max. no. of view allowed */
1769} OMX_CONFIG_DRMVIEWTYPE;
1770/*
1771This structure contains information about the number of available
1772views in the selected DRM rental file, which typically have a given
1773maximum view count. It allows the user to explicitly agree to playing
1774the file, which will increment the number of current views the file
1775has had.
1776*/
1777
1778typedef struct OMX_PARAM_BRCMU64TYPE {
1779 OMX_U32 nSize; /**< Size of this structure, in Bytes */
1780 OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
1781 OMX_U32 nPortIndex; /**< port that this structure applies to */
1782 OMX_U32 nLowPart; /**< low bits of the unsigned 64 bit value */
1783 OMX_U32 nHighPart; /**< high bits of the unsigned 64 bit value */
1784} OMX_PARAM_BRCMU64TYPE;
1785
1786/* OMX_IndexParamBrcmDisableEXIF: Disable generation of EXIF data */
1787/*
1788This parameter is used by clients to control the generation of exif
1789data in JPEG images.
1790*/
1791
1792/* OMX_IndexParamBrcmThumbnail: Control generation of thumbnail */
1793typedef struct OMX_PARAM_BRCMTHUMBNAILTYPE {
1794 OMX_U32 nSize; /**< Size of this structure, in Bytes */
1795 OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
1796 OMX_BOOL bEnable; /**< Enable generation of thumbnails during still capture */
1797 OMX_BOOL bUsePreview; /**< Use the preview image (as is) as thumbnail */
1798 OMX_U32 nWidth; /**< Desired width of the thumbnail */
1799 OMX_U32 nHeight; /**< Desired height of the thumbnail */
1800} OMX_PARAM_BRCMTHUMBNAILTYPE;
1801/*
1802This parameter is used by clients to control how thumbnails are
1803generated when creating still images.
1804
1805Thumbnail generation will be turned on or off depending on the
1806\code{bEnable} field.
1807
1808The \code{bUsePreview} field will let the component know whether it
1809should use the low resolution preview image (if the component has one
1810available) as is for the thumbnail. When this is set to true, it should
1811make the generation of thumbnails faster (if a preview image is available)
1812and should use less memory as well.
1813
1814The \code{nWidth} and \code{nHeight} fields allow the client to
1815specify the dimensions of the thumbnail. If both \code{nWidth} and
1816\code{nHeight} are 0, we will calculate a sensible size for the
1817thumbnail.
1818*/
1819
1820typedef struct OMX_PARAM_BRCMASPECTRATIOTYPE {
1821 OMX_U32 nSize;
1822 OMX_VERSIONTYPE nVersion;
1823 OMX_U32 nPortIndex;
1824 OMX_U32 nWidth;
1825 OMX_U32 nHeight;
1826} OMX_PARAM_BRCMASPECTRATIOTYPE;
1827
1828/* OMX_IndexParamBrcmVideoDecodeErrorConcealment: Control error concealment for video decode */
1829typedef struct OMX_PARAM_BRCMVIDEODECODEERRORCONCEALMENTTYPE {
1830 OMX_U32 nSize;
1831 OMX_VERSIONTYPE nVersion;
1832 OMX_BOOL bStartWithValidFrame; /**< Decoder will only start emitting frames from a non-corrupted frame */
1833} OMX_PARAM_BRCMVIDEODECODEERRORCONCEALMENTTYPE;
1834/*
1835 This parameter is used by clients to control the type of error concealment
1836 that will be done by the video decoder.
1837 */
1838
1839#define OMX_CONFIG_FLASHINFOTYPE_NAME_LEN 16
1840typedef struct OMX_CONFIG_FLASHINFOTYPE
1841{
1842 OMX_U32 nSize;
1843 OMX_VERSIONTYPE nVersion;
1844 OMX_U8 sFlashName[OMX_CONFIG_FLASHINFOTYPE_NAME_LEN];
1845 OMX_CAMERAFLASHTYPE eFlashType;
1846 OMX_U8 nDeviceId;
1847 OMX_U8 nDeviceVersion;
1848} OMX_CONFIG_FLASHINFOTYPE;
1849
1850/* OMX_IndexParamBrcmInterpolateMissingTimestamps: Configure component to interpolate missing timestamps */
1851/*
1852Configures a component so that it tries to timestamp all the buffers it outputs.
1853If the timestamp information is missing from the original buffer, the
1854component will try its best to interpolate a value for the missing timestamp.
1855 */
1856
1857/* OMX_IndexParamBrcmSetCodecPerformanceMonitoring: Configure component to output performance statistics */
1858/*
1859Configures a codec component so that it outputs performance statistics to
1860the given DECODE_PROGRESS_REPORT_T structure (passed as a pointer).
1861This structure can then be read by the client to find out where the codec is
1862at in its processing.
1863 */
1864
1865/* OMX_IndexConfigDynamicRangeExpansion: Configure image dynamic range expansion processing */
1866typedef enum OMX_DYNAMICRANGEEXPANSIONMODETYPE {
1867 OMX_DynRangeExpOff,
1868 OMX_DynRangeExpLow,
1869 OMX_DynRangeExpMedium,
1870 OMX_DynRangeExpHigh,
1871 OMX_DynRangeExpKhronosExtensions = 0x6F000000,
1872 OMX_DynRangeExpVendorStartUnused = 0x7F000000,
1873 OMX_DynRangeExpMax = 0x7FFFFFFF
1874} OMX_DYNAMICRANGEEXPANSIONMODETYPE;
1875
1876typedef struct OMX_CONFIG_DYNAMICRANGEEXPANSIONTYPE
1877{
1878 OMX_U32 nSize;
1879 OMX_VERSIONTYPE nVersion;
1880 OMX_DYNAMICRANGEEXPANSIONMODETYPE eMode;
1881} OMX_CONFIG_DYNAMICRANGEEXPANSIONTYPE;
1882/*
1883Configures the intensity of an image dynamic range expansion processing stage
1884*/
1885
1886/* OMX_IndexParamBrcmTransposeBufferCount: Configure the number of pre-allocated transpose buffers */
1887/*
1888This config allows the client to explicitly set the number of destination buffers pre-allocated for
1889ports that support 90/270 degree rotation (e.g. in video_render). The buffers will be pre-allocated during
1890a state transition from LOADED to IDLE (the transition will fail if there is not enough memory available
1891for the buffers).
1892.
1893*/
1894
1895
1896/* OMX_IndexParamBrcmThreadAffinity: Control the CPU affinity of component thread(s) */
1897typedef enum OMX_BRCMTHREADAFFINITYTYPE {
1898 OMX_BrcmThreadAffinityCPU0,
1899 OMX_BrcmThreadAffinityCPU1,
1900 OMX_BrcmThreadAffinityMax = 0x7FFFFFFF
1901} OMX_BRCMTHREADAFFINITYTYPE;
1902
1903typedef struct OMX_PARAM_BRCMTHREADAFFINITYTYPE {
1904 OMX_U32 nSize;
1905 OMX_VERSIONTYPE nVersion;
1906 OMX_BRCMTHREADAFFINITYTYPE eAffinity; /**< Thread CPU affinity */
1907} OMX_PARAM_BRCMTHREADAFFINITYTYPE;
1908/*
1909 This parameter is used by clients to hint the CPU that a component thread should run on.
1910 */
1911
1912 /* OMX_IndexConfigCommonSceneDetected: Reports the scene type detected by a scene detection algorithm. */
1913typedef enum OMX_SCENEDETECTTYPE {
1914 OMX_SceneDetectUnknown,
1915 OMX_SceneDetectLandscape,
1916 OMX_SceneDetectPortrait,
1917 OMX_SceneDetectMacro,
1918 OMX_SceneDetectNight,
1919 OMX_SceneDetectPortraitNight,
1920 OMX_SceneDetectBacklit,
1921 OMX_SceneDetectPortraitBacklit,
1922 OMX_SceneDetectSunset,
1923 OMX_SceneDetectBeach,
1924 OMX_SceneDetectSnow,
1925 OMX_SceneDetectFireworks,
1926 OMX_SceneDetectMax = 0x7FFFFFFF
1927} OMX_SCENEDETECTTYPE;
1928
1929/* OMX_IndexConfigCommonSceneDetected: Reports the scene type detected by a scene detection algorithm. */
1930typedef struct OMX_CONFIG_SCENEDETECTTYPE {
1931 OMX_U32 nSize;
1932 OMX_VERSIONTYPE nVersion;
1933 OMX_SCENEDETECTTYPE eScene; /**< Scene type detected */
1934} OMX_CONFIG_SCENEDETECTTYPE;
1935/*
1936 This config is used to report to clients the scene type that has been detected.
1937 */
1938
1939/* OMX_IndexParamNalStreamFormat: Control the NAL unit packaging. This is a Khronos extension. */
1940typedef enum OMX_INDEXEXTTYPE {
1941 /* Video parameters and configurations */
1942 OMX_IndexExtVideoStartUnused = OMX_IndexKhronosExtensions + 0x00600000,
1943 OMX_IndexParamNalStreamFormatSupported, /**< reference: OMX_NALSTREAMFORMATTYPE */
1944 OMX_IndexParamNalStreamFormat, /**< reference: OMX_NALSTREAMFORMATTYPE */
1945 OMX_IndexParamNalStreamFormatSelect, /**< reference: OMX_NALSTREAMFORMATTYPE */
1946
1947 OMX_IndexExtMax = 0x7FFFFFFF
1948} OMX_INDEXEXTTYPE;
1949
1950/* OMX_IndexParamNalStreamFormat: Control the NAL unit packaging. This is a Khronos extension. */
1951typedef enum OMX_NALUFORMATSTYPE {
1952 OMX_NaluFormatStartCodes = 1,
1953 OMX_NaluFormatOneNaluPerBuffer = 2,
1954 OMX_NaluFormatOneByteInterleaveLength = 4,
1955 OMX_NaluFormatTwoByteInterleaveLength = 8,
1956 OMX_NaluFormatFourByteInterleaveLength = 16,
1957 OMX_NaluFormatCodingMax = 0x7FFFFFFF
1958} OMX_NALUFORMATSTYPE;
1959
1960/* OMX_IndexParamNalStreamFormat: Control the NAL unit packaging. This is a Khronos extension. */
1961typedef struct OMX_NALSTREAMFORMATTYPE{
1962 OMX_U32 nSize;
1963 OMX_VERSIONTYPE nVersion;
1964 OMX_U32 nPortIndex;
1965 OMX_NALUFORMATSTYPE eNaluFormat;
1966} OMX_NALSTREAMFORMATTYPE;
1967/*
1968 This parameter is used to control the NAL unit packaging of an H264 video port.
1969 */
1970
1971/* OMX_IndexParamVideoMvc: MVC codec parameters */
1972typedef struct OMX_VIDEO_PARAM_AVCTYPE OMX_VIDEO_PARAM_MVCTYPE;
1973/*
1974This parameter is currently identical to the AVC parameter type.
1975*/
1976
1977 /* OMX_IndexConfigBrcmDrawStaticBox: Define static box to be drawn */
1978typedef enum OMX_STATICBOXTYPE {
1979 OMX_StaticBoxNormal,
1980 OMX_StaticBoxPrimaryFaceAfIdle,
1981 OMX_StaticBoxNonPrimaryFaceAfIdle,
1982 OMX_StaticBoxFocusRegionAfIdle,
1983 OMX_StaticBoxPrimaryFaceAfSuccess,
1984 OMX_StaticBoxNonPrimaryFaceAfSuccess,
1985 OMX_StaticBoxFocusRegionAfSuccess,
1986 OMX_StaticBoxPrimaryFaceAfFail,
1987 OMX_StaticBoxNonPrimaryFaceAfFail,
1988 OMX_StaticBoxFocusRegionAfFail,
1989 OMX_StaticBoxMax
1990} OMX_STATICBOXTYPE;
1991
1992typedef struct OMX_STATICBOX {
1993 OMX_U32 xLeft;
1994 OMX_U32 xTop;
1995 OMX_U32 xWidth;
1996 OMX_U32 xHeight;
1997 OMX_STATICBOXTYPE eType;
1998} OMX_STATICBOX;
1999
2000typedef struct OMX_CONFIG_STATICBOXTYPE
2001{
2002 OMX_U32 nSize;
2003 OMX_VERSIONTYPE nVersion;
2004 OMX_U32 nPortIndex;
2005 OMX_U32 nIndex;
2006 OMX_U32 nTotalBoxes;
2007 OMX_S32 nValidBoxes;
2008 OMX_BOOL bDrawOtherBoxes;
2009 OMX_STATICBOX sBoxes[1];
2010} OMX_CONFIG_STATICBOXTYPE;
2011/*
2012Query / set the parameters for a box to always be drawn on viewfinder images
2013The x/y/width/height values for the boxes are relative to the overall image.
2014
2015\code{nIndex} - first box number being set/read, allowing retrieval/setting
2016of many boxes over several requests.
2017
2018\code{nValidBoxes} - total number of boxes currently defined.
2019
2020\code{nValidBoxes} - number of valid boxes in the \code{sBoxes} array.
2021When getting, the client sets this to the number of boxes available.
2022The component writes box data and updates this field with how many
2023boxes have been written to.
2024When setting, this is the number of boxes defined with this structure
2025
2026\code{sBoxes} - variable length array of static boxes.
2027*/
2028
2029/* OMX_IndexConfigPortCapturing: Per-port capturing state */
2030typedef struct OMX_CONFIG_PORTBOOLEANTYPE{
2031 OMX_U32 nSize;
2032 OMX_VERSIONTYPE nVersion;
2033 OMX_U32 nPortIndex;
2034 OMX_BOOL bEnabled;
2035} OMX_CONFIG_PORTBOOLEANTYPE;
2036/*
2037This is proposed in IL533f for controlling
2038which ports of a multi-port camera component are capturing frames.
2039*/
2040
2041/* OMX_IndexConfigCaptureMode: Capturing mode type */
2042typedef enum OMX_CAMERACAPTUREMODETYPE {
2043 OMX_CameraCaptureModeWaitForCaptureEnd,
2044 OMX_CameraCaptureModeWaitForCaptureEndAndUsePreviousInputImage,
2045 OMX_CameraCaptureModeResumeViewfinderImmediately,
2046 OMX_CameraCaptureModeMax,
2047} OMX_CAMERACAPTUREMODETYPE;
2048
2049typedef struct OMX_PARAM_CAMERACAPTUREMODETYPE{
2050 OMX_U32 nSize;
2051 OMX_VERSIONTYPE nVersion;
2052 OMX_U32 nPortIndex;
2053 OMX_CAMERACAPTUREMODETYPE eMode;
2054} OMX_PARAM_CAMERACAPTUREMODETYPE;
2055/*
2056This controls the mode of operation for
2057still image capture in the camera component.
2058*/
2059
2060/* OMX_IndexParamBrcmDrmEncryption: Set DRM encryption scheme */
2061typedef enum OMX_BRCMDRMENCRYPTIONTYPE
2062{
2063 OMX_DrmEncryptionNone = 0,
2064 OMX_DrmEncryptionHdcp2,
2065 OMX_DrmEncryptionKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
2066 OMX_DrmEncryptionVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
2067 OMX_DrmEncryptionRangeMax = 0x7FFFFFFF
2068} OMX_BRCMDRMENCRYPTIONTYPE;
2069
2070typedef struct OMX_PARAM_BRCMDRMENCRYPTIONTYPE
2071{
2072 OMX_U32 nSize;
2073 OMX_VERSIONTYPE nVersion;
2074 OMX_U32 nPortIndex;
2075 OMX_BRCMDRMENCRYPTIONTYPE eEncryption;
2076 OMX_U32 nConfigDataLen;
2077 OMX_U8 configData[1];
2078} OMX_PARAM_BRCMDRMENCRYPTIONTYPE;
2079/*
2080Query/set the DRM encryption scheme used by a port writing out data.
2081*/
2082
2083
2084/* OMX_IndexConfigBufferStall: Advertise buffer stall state */
2085typedef struct OMX_CONFIG_BUFFERSTALLTYPE
2086{
2087 OMX_U32 nSize;
2088 OMX_VERSIONTYPE nVersion;
2089 OMX_U32 nPortIndex;
2090 OMX_BOOL bStalled; /**< Whether we are stalled */
2091 OMX_U32 nDelay; /**< Delay in real time (us) from last buffer to current time */
2092} OMX_CONFIG_BUFFERSTALLTYPE;
2093/*
2094Query/set the buffer stall threashold. When set the \code{nDelay}
2095parameter specifies a time to class whether buffer output is stalled.
2096When get, the \code{nDelay} parameter indicates the current buffer
2097delay, and the {bStalled} parameter indicates whether this time is
2098over a previously set threashold. When
2099\code{OMX_IndexConfigRequestCallback} is used with this index, a
2100notification is given when \code{bStalled} changes.
2101*/
2102
2103/* OMX_IndexConfigLatencyTarget: Maintain target latency by adjusting clock speed */
2104typedef struct OMX_CONFIG_LATENCYTARGETTYPE
2105{
2106 OMX_U32 nSize;
2107 OMX_VERSIONTYPE nVersion;
2108 OMX_U32 nPortIndex;
2109 OMX_BOOL bEnabled; /**< whether this mode is enabled */
2110 OMX_U32 nFilter; /**< number of latency samples to filter on, good value: 1 */
2111 OMX_U32 nTarget; /**< target latency, us */
2112 OMX_U32 nShift; /**< shift for storing latency values, good value: 7 */
2113 OMX_S32 nSpeedFactor; /**< multiplier for speed changes, in 24.8 format, good value: 256-512 */
2114 OMX_S32 nInterFactor; /**< divider for comparing latency versus gradiant, good value: 300 */
2115 OMX_S32 nAdjCap; /**< limit for speed change before nSpeedFactor is applied, good value: 100 */
2116} OMX_CONFIG_LATENCYTARGETTYPE;
2117/*
2118Query/set parameters used when adjusting clock speed to match the
2119measured latency to a specified value.
2120*/
2121
2122/* OMX_IndexConfigBrcmUseProprietaryCallback: Force use of proprietary callback */
2123typedef struct OMX_CONFIG_BRCMUSEPROPRIETARYCALLBACKTYPE
2124{
2125 OMX_U32 nSize;
2126 OMX_VERSIONTYPE nVersion;
2127 OMX_U32 nPortIndex;
2128 OMX_BOOL bEnable;
2129} OMX_CONFIG_BRCMUSEPROPRIETARYCALLBACKTYPE;
2130/*
2131Disable/enable the use of proprietary callbacks rather than OpenMAX IL buffer handling.
2132*/
2133
2134/* OMX_IndexParamCommonUseStcTimestamps: Select timestamp mode */
2135typedef enum OMX_TIMESTAMPMODETYPE
2136{
2137 OMX_TimestampModeZero = 0, /**< Use a timestamp of 0 */
2138 OMX_TimestampModeRawStc, /**< Use the raw STC as the timestamp */
2139 OMX_TimestampModeResetStc, /**< Store the STC when video capture port goes active, and subtract that from STC for the timestamp */
2140 OMX_TimestampModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
2141 OMX_TimestampModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
2142 OMX_TimestampModeMax = 0x7FFFFFFF
2143} OMX_TIMESTAMPMODETYPE;
2144
2145typedef struct OMX_PARAM_TIMESTAMPMODETYPE
2146{
2147 OMX_U32 nSize;
2148 OMX_VERSIONTYPE nVersion;
2149 OMX_TIMESTAMPMODETYPE eTimestampMode;
2150} OMX_PARAM_TIMESTAMPMODETYPE;
2151/*
2152 Specifies what to use as timestamps in the absence of a clock component.
2153*/
2154
2155/* EGL image buffer for passing to video port.
2156 * Used when port color format is OMX_COLOR_FormatBRCMEGL.
2157 */
2158typedef struct OMX_BRCMVEGLIMAGETYPE
2159{
2160 /* Passed between ARM + VC; use fixed width types. */
2161 OMX_U32 nWidth;
2162 OMX_U32 nHeight;
2163 OMX_U32 nStride;
2164 OMX_U32 nUmemHandle;
2165 OMX_U32 nUmemOffset;
2166 OMX_U32 nFlipped; /* Non-zero -> vertically flipped image */
2167} OMX_BRCMVEGLIMAGETYPE;
2168
2169/* Provides field of view
2170 */
2171typedef struct OMX_CONFIG_BRCMFOVTYPE
2172{
2173 OMX_U32 nSize;
2174 OMX_VERSIONTYPE nVersion;
2175 OMX_U32 nPortIndex;
2176 OMX_U32 xFieldOfViewHorizontal; /**< Horizontal field of view in degrees. 16p16 value */
2177 OMX_U32 xFieldOfViewVertical; /**< Vertical field of view in degrees. 16p16 value */
2178} OMX_CONFIG_BRCMFOVTYPE;
2179
2180/* OMX_IndexConfigBrcmDecoderPassThrough: Enabling Audio Passthrough */
2181/*
2182This allows an audio decoder to disable decoding the stream and pass through correctly framed
2183data to enable playback of compressed audio to supported output devices.
2184*/
2185
2186/* OMX_IndexConfigBrcmClockReferenceSource: Select Clock Reference Source */
2187/*
2188This control allows communicating directly to an audio renderer component whether it should
2189act as a clock reference source or act as a slave.
2190*/
2191
2192/* OMX_IndexConfigEncLevelExtension: AVC Override encode capabilities */
2193typedef struct OMX_VIDEO_CONFIG_LEVEL_EXTEND {
2194 OMX_U32 nSize;
2195 OMX_VERSIONTYPE nVersion;
2196 OMX_U32 nPortIndex;
2197 OMX_U32 nCustomMaxMBPS; /**< Specifies maximum macro-blocks per second */
2198 OMX_U32 nCustomMaxFS; /**< Specifies maximum frame size (macro-blocks per frame) */
2199 OMX_U32 nCustomMaxBRandCPB; /**< Specifies maximum bitrate in units of 1000 bits/s and Codec Picture Buffer (CPB derived from bitrate) */
2200} OMX_VIDEO_CONFIG_LEVEL_EXTEND;
2201/*
2202This allows finer control of the H264 encode internal parameters.
2203*/
2204
2205/* OMX_IndexParamBrcmEEDEEnable: Enable/Disable end to end distortion estimator */
2206typedef struct OMX_VIDEO_EEDE_ENABLE {
2207 OMX_U32 nSize;
2208 OMX_VERSIONTYPE nVersion;
2209 OMX_U32 nPortIndex;
2210 OMX_U32 enable;
2211} OMX_VIDEO_EEDE_ENABLE;
2212/*
2213This enables or disables the use of end to end distortion estimation.
2214*/
2215
2216/* OMX_IndexParamBrcmEEDELossRate: Loss rate configuration for end to end distortion */
2217typedef struct OMX_VIDEO_EEDE_LOSSRATE {
2218 OMX_U32 nSize;
2219 OMX_VERSIONTYPE nVersion;
2220 OMX_U32 nPortIndex;
2221 OMX_U32 loss_rate; /**< loss rate, 5 means 5% */
2222} OMX_VIDEO_EEDE_LOSSRATE;
2223/*
2224Set the packet loss rate used by the end to end distortion estimator.
2225*/
2226
2227/* OMX_IndexParamColorSpace: Colour space information */
2228typedef enum OMX_COLORSPACETYPE
2229{
2230 OMX_COLORSPACE_UNKNOWN,
2231 OMX_COLORSPACE_JPEG_JFIF,
2232 OMX_COLORSPACE_ITU_R_BT601,
2233 OMX_COLORSPACE_ITU_R_BT709,
2234 OMX_COLORSPACE_FCC,
2235 OMX_COLORSPACE_SMPTE240M,
2236 OMX_COLORSPACE_BT470_2_M,
2237 OMX_COLORSPACE_BT470_2_BG,
2238 OMX_COLORSPACE_JFIF_Y16_255,
2239 OMX_COLORSPACE_REC_2020,
2240 OMX_COLORSPACE_MAX = 0x7FFFFFFF
2241} OMX_COLORSPACETYPE;
2242
2243typedef struct OMX_PARAM_COLORSPACETYPE
2244{
2245 OMX_U32 nSize;
2246 OMX_VERSIONTYPE nVersion;
2247 OMX_U32 nPortIndex;
2248 OMX_COLORSPACETYPE eColorSpace;
2249} OMX_PARAM_COLORSPACETYPE;
2250/*
2251Sets the colourspace with which pixel buffers should be generated / interpreted.
2252*/
2253
2254typedef enum OMX_CAPTURESTATETYPE
2255{
2256 OMX_NotCapturing,
2257 OMX_CaptureStarted,
2258 OMX_CaptureComplete,
2259 OMX_CaptureMax = 0x7FFFFFFF
2260} OMX_CAPTURESTATETYPE;
2261
2262typedef struct OMX_PARAM_CAPTURESTATETYPE
2263{
2264 OMX_U32 nSize;
2265 OMX_VERSIONTYPE nVersion;
2266 OMX_U32 nPortIndex;
2267 OMX_CAPTURESTATETYPE eCaptureState;
2268} OMX_PARAM_CAPTURESTATETYPE;
2269
2270/*
2271Provides information on the colour space that's in use during image/video processing.
2272*/
2273
2274/* OMX_IndexConfigMinimiseFragmentation: Minimising Fragmentation */
2275/*
2276This control can be supported to enable the client to request that the component works
2277to minimise fragmentation of output buffers.
2278*/
2279
2280/* OMX_IndexConfigBrcmBufferFlagFilter: Filter buffers based on flags */
2281/*
2282This control can be set to request that buffers are conditionally forwarded on
2283output ports based on matching flags set on that buffer.
2284*/
2285
2286/* OMX_IndexParamPortMaxFrameSize: Specifying maximum frame size */
2287/*
2288This control can be used to control the maximum frame size allowed on an output port.
2289*/
2290
2291/* OMX_IndexConfigBrcmCameraRnDPreprocess: Enable use of development ISP software stage */
2292/*
2293This control can be used to enable a developmental software stage to be inserted into
2294the preprocessor stage of the ISP.
2295*/
2296
2297/* OMX_IndexConfigBrcmCameraRnDPostprocess: Enable use of development ISP software stage */
2298/*
2299This control can be used to enable a developmental software stage to be inserted into
2300the postprocessor stage of the ISP.
2301*/
2302
2303/* OMX_IndexParamDisableVllPool: Controlling use of memory for loadable modules */
2304/*
2305This control can be used to control whether loadable modules used a dedicated memory
2306pool or use heap allocated memory.
2307*/
2308
2309/* OMX_IndexParamBrcmVideoPrecodeForQP: Pre-code 1st frame for QP.*/
2310/*
2311This control selects a pre-encode of the first frame to set up a better initial QP value.
2312*/
2313
2314/* OMX_IndexParamBrcmVideoTimestampFifo: Video timestamp FIFO mode. */
2315/*
2316When enabled, the timestamp fifo mode will change the way
2317incoming timestamps are associated with output images so the incoming timestamps
2318get used without re-ordering on output images.
2319*/
2320
2321/* OMX_IndexParamCameraCustomSensorConfig: Custom camera sensor configuration. */
2322/*
2323This parameter is passed down to the camera sensor driver to be interpreted as a
2324request for a different configuration to normal. How the configuration varies is
2325sensor specific.
2326*/
2327
2328/* OMX_IndexParamCameraDeviceNumber: Camera device selection .*/
2329/*
2330Controls which camera driver, or camera peripheral, to use.
2331*/
2332
2333/* OMX_IndexParamBrcmMaxNumCallbacks: Codec callback limit. */
2334/*
2335The codec can queue up a significant number of frames internally if the sink is
2336not consuming the output fast enough. This control limits the number of frames
2337that can be queued up.
2338*/
2339
2340typedef struct OMX_PARAM_BRCMCONFIGFILETYPE {
2341 OMX_U32 nSize; /**< size of the structure in bytes, including
2342 actual URI name */
2343 OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
2344 OMX_U32 fileSize; /**< Size of complete file data */
2345} OMX_PARAM_BRCMCONFIGFILETYPE;
2346
2347typedef struct OMX_PARAM_BRCMCONFIGFILECHUNKTYPE {
2348 OMX_U32 nSize; /**< size of the structure in bytes, including
2349 actual chunk data */
2350 OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
2351 OMX_U32 size; /**< Number of bytes being transferred in this chunk */
2352 OMX_U32 offset; /**< Offset of this chunk in the file */
2353 OMX_U8 data[1]; /**< Chunk data */
2354} OMX_PARAM_BRCMCONFIGFILECHUNKTYPE;
2355
2356typedef struct OMX_PARAM_BRCMFRAMERATERANGETYPE {
2357 OMX_U32 nSize; /**< size of the structure in bytes, including
2358 actual chunk data */
2359 OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
2360 OMX_U32 nPortIndex;
2361 OMX_U32 xFramerateLow; /**< Low end of framerate range. Q16 format */
2362 OMX_U32 xFramerateHigh; /**< High end of framerate range. Q16 format */
2363} OMX_PARAM_BRCMFRAMERATERANGETYPE;
2364
2365typedef struct OMX_PARAM_S32TYPE {
2366 OMX_U32 nSize; /**< Size of this structure, in Bytes */
2367 OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
2368 OMX_U32 nPortIndex; /**< port that this structure applies to */
2369 OMX_S32 nS32; /**< S32 value */
2370} OMX_PARAM_S32TYPE;
2371
2372typedef struct OMX_PARAM_BRCMVIDEODRMPROTECTBUFFERTYPE
2373{
2374 OMX_U32 nSize;
2375 OMX_VERSIONTYPE nVersion;
2376
2377 OMX_U32 size_wanted; /**< Input. Zero size means internal video decoder buffer,
2378 mem_handle and phys_addr not returned in this case */
2379 OMX_U32 protect; /**< Input. 1 = protect, 0 = unprotect */
2380
2381 OMX_U32 mem_handle; /**< Output. Handle for protected buffer */
2382 OMX_PTR phys_addr; /**< Output. Physical memory address of protected buffer */
2383} OMX_PARAM_BRCMVIDEODRMPROTECTBUFFERTYPE;
2384
2385typedef struct OMX_CONFIG_ZEROSHUTTERLAGTYPE
2386{
2387 OMX_U32 nSize;
2388 OMX_VERSIONTYPE nVersion;
2389
2390 OMX_U32 bZeroShutterMode; /**< Select ZSL mode from the camera. */
2391 OMX_U32 bConcurrentCapture; /**< Perform concurrent captures for full ZSL. */
2392
2393} OMX_CONFIG_ZEROSHUTTERLAGTYPE;
2394
2395/* OMX_IndexParamBrcmVideoDecodeConfigVD3: VDec3 configuration. */
2396typedef struct OMX_PARAM_BRCMVIDEODECODECONFIGVD3TYPE {
2397 OMX_U32 nSize; /**< size of the structure in bytes, including
2398 configuration data */
2399 OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
2400 OMX_U8 config[1]; /**< Configuration data (a VD3_CONFIGURE_T) */
2401} OMX_PARAM_BRCMVIDEODECODECONFIGVD3TYPE;
2402/*
2403Codec specific configuration block to set up internal state in a non-standard manner.
2404*/
2405
2406/* OMX_IndexConfigCustomAwbGains: Manual AWB Gains. */
2407typedef struct OMX_CONFIG_CUSTOMAWBGAINSTYPE {
2408 OMX_U32 nSize; /**< size of the structure in bytes, including
2409 configuration data */
2410 OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
2411 OMX_U32 xGainR; /**< Red gain - 16p16 */
2412 OMX_U32 xGainB; /**< Blue gain - 16p16 */
2413} OMX_CONFIG_CUSTOMAWBGAINSTYPE;
2414
2415/* OMX_IndexConfigCustomAwbGains: Manual AWB Gains. */
2416
2417/* OMX_IndexConfigBrcmRenderStats: Render port statistics */
2418typedef struct OMX_CONFIG_BRCMRENDERSTATSTYPE {
2419 OMX_U32 nSize;
2420 OMX_VERSIONTYPE nVersion;
2421 OMX_U32 nPortIndex;
2422 OMX_BOOL nValid;
2423 OMX_U32 nMatch;
2424 OMX_U32 nPeriod;
2425 OMX_U32 nPhase;
2426 OMX_U32 nPixelClockNominal;
2427 OMX_U32 nPixelClock;
2428 OMX_U32 nHvsStatus;
2429 OMX_U32 dummy0[2];
2430} OMX_CONFIG_BRCMRENDERSTATSTYPE;
2431/*
2432This provides statistics from the renderer to allow more accurate synchronisation
2433between the scheduler and display VSYNC.
2434*/
2435
2436typedef enum OMX_BRCMANNOTATEJUSTIFYTYPE {
2437 OMX_ANNOTATE_CENTRE = 0,
2438 OMX_ANNOTATE_LEFT = 1,
2439 OMX_ANNOTATE_RIGHT = 2,
2440 OMX_ANNOTATE_MAX = 0x7FFFFFFF,
2441} OMX_BRCMANNOTATEJUSTIFYTYPE;
2442
2443#define OMX_BRCM_MAXANNOTATETEXTLEN 256
2444typedef struct OMX_CONFIG_BRCMANNOTATETYPE {
2445 OMX_U32 nSize;
2446 OMX_VERSIONTYPE nVersion;
2447 OMX_BOOL bEnable;
2448 OMX_BOOL bShowShutter;
2449 OMX_BOOL bShowAnalogGain;
2450 OMX_BOOL bShowLens;
2451 OMX_BOOL bShowCaf;
2452 OMX_BOOL bShowMotion;
2453 OMX_BOOL bShowFrameNum;
2454 OMX_BOOL bEnableBackground;
2455 OMX_BOOL bCustomBackgroundColour;
2456 OMX_U8 nBackgroundY;
2457 OMX_U8 nBackgroundU;
2458 OMX_U8 nBackgroundV;
2459 OMX_U8 dummy1;
2460 OMX_BOOL bCustomTextColour;
2461 OMX_U8 nTextY;
2462 OMX_U8 nTextU;
2463 OMX_U8 nTextV;
2464 OMX_U8 nTextSize; /**< Text size: 6-150 pixels */
2465 OMX_U8 sText[OMX_BRCM_MAXANNOTATETEXTLEN];
2466 OMX_BRCMANNOTATEJUSTIFYTYPE eJustify;
2467 OMX_U32 nXOffset;
2468 OMX_U32 nYOffset;
2469} OMX_CONFIG_BRCMANNOTATETYPE;
2470
2471/* OMX_IndexParamBrcmStereoscopicMode: Stereoscopic camera support */
2472typedef enum OMX_BRCMSTEREOSCOPICMODETYPE {
2473 OMX_STEREOSCOPIC_NONE = 0,
2474 OMX_STEREOSCOPIC_SIDEBYSIDE = 1,
2475 OMX_STEREOSCOPIC_TOPBOTTOM = 2,
2476 OMX_STEREOSCOPIC_MAX = 0x7FFFFFFF,
2477} OMX_BRCMSTEREOSCOPICMODETYPE;
2478
2479typedef struct OMX_CONFIG_BRCMSTEREOSCOPICMODETYPE {
2480 OMX_U32 nSize;
2481 OMX_VERSIONTYPE nVersion;
2482
2483 OMX_U32 nPortIndex; /**< port that this structure applies to */
2484 OMX_BRCMSTEREOSCOPICMODETYPE eMode; /**< Packing mode */
2485 OMX_BOOL bDecimate; /**< Half/half mode
2486 (pixel aspect ratio = 1:2 or 2:1 if set. 1:1 if not set) */
2487 OMX_BOOL bSwapEyes; /**< False = left eye first. True = right eye first. */
2488} OMX_CONFIG_BRCMSTEREOSCOPICMODETYPE;
2489/*
2490This control sets up how stereoscopic images should be generated.
2491*/
2492
2493/* OMX_IndexParamCameraInterface: Camera interface type. */
2494typedef enum OMX_CAMERAINTERFACETYPE {
2495 OMX_CAMERAINTERFACE_CSI = 0,
2496 OMX_CAMERAINTERFACE_CCP2 = 1,
2497 OMX_CAMERAINTERFACE_CPI = 2,
2498 OMX_CAMERAINTERFACE_MAX = 0x7FFFFFFF,
2499} OMX_CAMERAINTERFACETYPE;
2500
2501typedef struct OMX_PARAM_CAMERAINTERFACETYPE {
2502 OMX_U32 nSize;
2503 OMX_VERSIONTYPE nVersion;
2504
2505 OMX_U32 nPortIndex; /**< port that this structure applies to */
2506 OMX_CAMERAINTERFACETYPE eMode; /**< Interface mode */
2507} OMX_PARAM_CAMERAINTERFACETYPE;
2508/*
2509This configures the physical camera interface type.
2510*/
2511
2512typedef enum OMX_CAMERACLOCKINGMODETYPE {
2513 OMX_CAMERACLOCKINGMODE_STROBE = 0,
2514 OMX_CAMERACLOCKINGMODE_CLOCK = 1,
2515 OMX_CAMERACLOCKINGMODE_MAX = 0x7FFFFFFF,
2516} OMX_CAMERACLOCKINGMODETYPE;
2517
2518typedef struct OMX_PARAM_CAMERACLOCKINGMODETYPE {
2519 OMX_U32 nSize;
2520 OMX_VERSIONTYPE nVersion;
2521
2522 OMX_U32 nPortIndex; /**< port that this structure applies to */
2523 OMX_CAMERACLOCKINGMODETYPE eMode; /**< Clocking mode */
2524} OMX_PARAM_CAMERACLOCKINGMODETYPE;
2525
2526/* OMX_IndexParamCameraRxConfig: Camera receiver configuration */
2527typedef enum OMX_CAMERARXDECODETYPE {
2528 OMX_CAMERARXDECODE_NONE = 0,
2529 OMX_CAMERARXDECODE_DPCM8TO10 = 1,
2530 OMX_CAMERARXDECODE_DPCM7TO10 = 2,
2531 OMX_CAMERARXDECODE_DPCM6TO10 = 3,
2532 OMX_CAMERARXDECODE_DPCM8TO12 = 4,
2533 OMX_CAMERARXDECODE_DPCM7TO12 = 5,
2534 OMX_CAMERARXDECODE_DPCM6TO12 = 6,
2535 OMX_CAMERARXDECODE_DPCM10TO14 = 7,
2536 OMX_CAMERARXDECODE_DPCM8TO14 = 8,
2537 OMX_CAMERARXDECODE_DPCM12TO16 = 9,
2538 OMX_CAMERARXDECODE_DPCM10TO16 = 10,
2539 OMX_CAMERARXDECODE_DPCM8TO16 = 11,
2540 OMX_CAMERARXDECODE_MAX = 0x7FFFFFFF
2541} OMX_CAMERARXDECODETYPE;
2542
2543typedef enum OMX_CAMERARXENCODETYPE {
2544 OMX_CAMERARXENCODE_NONE = 0,
2545 OMX_CAMERARXENCODE_DPCM10TO8 = 1,
2546 OMX_CAMERARXENCODE_DPCM12TO8 = 2,
2547 OMX_CAMERARXENCODE_DPCM14TO8 = 3,
2548 OMX_CAMERARXENCODE_MAX = 0x7FFFFFFF
2549} OMX_CAMERARXENCODETYPE;
2550
2551typedef enum OMX_CAMERARXUNPACKTYPE {
2552 OMX_CAMERARXUNPACK_NONE = 0,
2553 OMX_CAMERARXUNPACK_6 = 1,
2554 OMX_CAMERARXUNPACK_7 = 2,
2555 OMX_CAMERARXUNPACK_8 = 3,
2556 OMX_CAMERARXUNPACK_10 = 4,
2557 OMX_CAMERARXUNPACK_12 = 5,
2558 OMX_CAMERARXUNPACK_14 = 6,
2559 OMX_CAMERARXUNPACK_16 = 7,
2560 OMX_CAMERARXUNPACK_MAX = 0x7FFFFFFF
2561} OMX_CAMERARXUNPACKYPE;
2562
2563typedef enum OMX_CAMERARXPACKTYPE {
2564 OMX_CAMERARXPACK_NONE = 0,
2565 OMX_CAMERARXPACK_8 = 1,
2566 OMX_CAMERARXPACK_10 = 2,
2567 OMX_CAMERARXPACK_12 = 3,
2568 OMX_CAMERARXPACK_14 = 4,
2569 OMX_CAMERARXPACK_16 = 5,
2570 OMX_CAMERARXPACK_RAW10 = 6,
2571 OMX_CAMERARXPACK_RAW12 = 7,
2572 OMX_CAMERARXPACK_MAX = 0x7FFFFFFF
2573} OMX_CAMERARXPACKTYPE;
2574
2575typedef struct OMX_PARAM_CAMERARXCONFIG_TYPE {
2576 OMX_U32 nSize;
2577 OMX_VERSIONTYPE nVersion;
2578
2579 OMX_U32 nPortIndex; /**< port that this structure applies to */
2580 OMX_CAMERARXDECODETYPE eDecode;
2581 OMX_CAMERARXENCODETYPE eEncode;
2582 OMX_CAMERARXUNPACKYPE eUnpack;
2583 OMX_CAMERARXPACKTYPE ePack;
2584 OMX_U32 nDataLanes;
2585 OMX_U32 nEncodeBlockLength;
2586 OMX_U32 nEmbeddedDataLines;
2587 OMX_U32 nImageId;
2588} OMX_PARAM_CAMERARXCONFIG_TYPE;
2589/*
2590Configures the setup and processing options of the camera receiver peripheral.
2591*/
2592
2593typedef struct OMX_PARAM_CAMERARXTIMING_TYPE {
2594 OMX_U32 nSize;
2595 OMX_VERSIONTYPE nVersion;
2596
2597 OMX_U32 nPortIndex; /**< port that this structure applies to */
2598 OMX_U32 nTiming1;
2599 OMX_U32 nTiming2;
2600 OMX_U32 nTiming3;
2601 OMX_U32 nTiming4;
2602 OMX_U32 nTiming5;
2603 OMX_U32 nTerm1;
2604 OMX_U32 nTerm2;
2605 OMX_U32 nCpiTiming1;
2606 OMX_U32 nCpiTiming2;
2607} OMX_PARAM_CAMERARXTIMING_TYPE;
2608
2609
2610/* OMX_IndexParamBrcmBayerOrder: Bayer order */
2611typedef enum OMX_BAYERORDERTYPE {
2612 OMX_BayerOrderRGGB = 0,
2613 OMX_BayerOrderGBRG = 1,
2614 OMX_BayerOrderBGGR = 2,
2615 OMX_BayerOrderGRBG = 3,
2616
2617 OMX_BayerOrderMax = 0x7FFFFFFF
2618} OMX_BAYERORDERTYPE;
2619
2620typedef struct OMX_PARAM_BAYERORDERTYPE {
2621 OMX_U32 nSize;
2622 OMX_VERSIONTYPE nVersion;
2623
2624 OMX_U32 nPortIndex; /**< port that this structure applies to */
2625 OMX_BAYERORDERTYPE eBayerOrder;
2626} OMX_PARAM_BAYERORDERTYPE;
2627/*
2628The IL standard does not support a way to specify the Bayer order of Bayer images.
2629This control adds that missing functionality.
2630*/
2631
2632/* OMX_IndexParamBrcmLensShadingOverride: Override or set a lens shading table.*/
2633/*
2634Allows the lens shading grid to be set.
2635Configuration is based on a similar system to the OMAP3 ISP.
2636A grid of gains is required for each of the 4 Bayer channels, with each value covering
2637a nGridCellSize square of pixels.
2638nWidth and nHeight should be equal or greater than the sensor resolution. In the
2639case of the camera component, the firmware will crop the table based on the preconfigured
2640mode set. nStride allows additional horizontal padding to be including in the table.
2641nMemHandleTable needs to be set to a MEM_HANDLE_T, allocated via VC-SM or similar allocator.
2642nRefTransform should be set to the transform in force when the reference table was
2643captured. This allows correct compensation when the sensor is subsequently used with
2644an alternate transform.
2645*/
2646typedef struct OMX_PARAM_LENSSHADINGOVERRIDETYPE {
2647 OMX_U32 nSize;
2648 OMX_VERSIONTYPE nVersion;
2649
2650 OMX_BOOL bEnabled; /**< Enable the override grid */
2651 OMX_U32 nGridCellSize; /**< size of each grid element. Assumes square grid */
2652 OMX_U32 nWidth; /**< grid width */
2653 OMX_U32 nStride; /**< grid stride (allows for padding) */
2654 OMX_U32 nHeight; /**< grid height */
2655 OMX_U32 nMemHandleTable; /**< Handle for grid */
2656 OMX_U32 nRefTransform; /**< Reference transform taken from raw header */
2657} OMX_PARAM_LENSSHADINGOVERRIDETYPE;
2658
2659/* OMX_IndexConfigBrcmPowerMonitor: Deprecated.*/
2660/*
2661Deprecated. Do not use.
2662*/
2663
2664/* OMX_IndexParamBrcmZeroCopy: Deprecated */
2665/*
2666Deprecated. Do not use.
2667*/
2668
2669/* OMX_IndexParamBrcmSupportsSlices: Sliced processing support */
2670/*
2671Mainly used by the MMAL framework.
2672Some components support an nSliceHeight value of 16, to allow images
2673to be passed in multiple chunks. All will support an nSliceHeight >=
2674nFrameHeight (with some extra constraints).
2675If a component supports nSliceHeight of 16, then it will respond to
2676OMX_GetParameter on this index with no error and bEnabled set to OMX_TRUE.
2677*/
2678
2679/* OMX_IndexParamBrcmSupportsUnalignedSliceheight: Unaligned nSliceHeight support */
2680/*
2681Most components require an nSliceHeight value which is a multiple of 16, but
2682some components accepting any value >= nFrameHeight. Those ports/components will
2683respond to OMX_GetParameter on this index with no error and bEnabled set to OMX_TRUE.
2684*/
2685
2686typedef struct OMX_CCMTYPE {
2687 OMX_S32 sCcm[3][3];
2688 OMX_S32 soffsets[3];
2689} OMX_PARAM_CCMTYPE;
2690
2691typedef struct OMX_PARAM_CUSTOMCCMTYPE {
2692 OMX_U32 nSize;
2693 OMX_VERSIONTYPE nVersion;
2694 OMX_U32 nPortIndex;
2695
2696 OMX_BOOL bEnabled; /**< Enable the custom CCM. */
2697 OMX_S32 xColorMatrix[3][3]; /**< Stored in signed Q16 format */
2698 OMX_S32 nColorOffset[3]; /**< CCM offsets */
2699} OMX_PARAM_CUSTOMCCMTYPE;
2700
2701/* OMX_IndexConfigCameraDigitalGain: Manual digital gain. */
2702/*
2703Configures the digital gain within the ISP pipeline.
2704*/
2705typedef struct OMX_CONFIG_CAMERAGAINTYPE {
2706 OMX_U32 nSize;
2707 OMX_VERSIONTYPE nVersion;
2708 OMX_U32 nPortIndex;
2709
2710 OMX_U32 xGain; /**< Gain to be applied, stored as Q16 format */
2711 OMX_BOOL bAutoGain; /**< Whether gain is set automatically */
2712} OMX_CONFIG_CAMERAGAINTYPE;
2713
2714/* OMX_IndexParamMinimumAlignment: Query component alignment requirements. */
2715/*
2716Allows the component to be queried for the minimum alignment (in bytes) required
2717on a port for a given color format.
2718Used by the MMAL framework to allow a reduction in the padding.
2719*/
2720
2721typedef struct OMX_PARAM_MINALIGNTYPE {
2722 OMX_U32 nSize;
2723 OMX_VERSIONTYPE nVersion;
2724 OMX_U32 nPortIndex;
2725
2726 OMX_COLOR_FORMATTYPE eColorFormat; /**< Format being queried */
2727 OMX_U32 nMinHorizontalAlign; /**< Minimum horizontal alignment required in bytes */
2728 OMX_U32 nMinVerticalAlign; /**< Minimum vertical alignment required in bytes */
2729} OMX_PARAM_MINALIGNTYPE;
2730
2731/* OMX_IndexParamRemoveImagePadding: Query component padding requirements */
2732/*
2733Queries whether the component can remove all padding from images, or can
2734accept images with no padding.
2735Used by the MMAL framework predominantly.
2736Superceded by OMX_IndexParamMinimumAlignment.
2737*/
2738
2739#endif
2740/* File EOF */
2741