123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- /*
- Copyright (c) 2012, Broadcom Europe Ltd
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the copyright holder nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
- #ifndef MMAL_IL_H
- #define MMAL_IL_H
-
- /** \defgroup MmalILUtility MMAL to OMX IL conversion utilities
- * \ingroup MmalUtilities
- *
- * @{
- */
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- #include "interface/vmcs_host/khronos/IL/OMX_Core.h"
- #include "interface/vmcs_host/khronos/IL/OMX_Component.h"
- #include "interface/vmcs_host/khronos/IL/OMX_Video.h"
- #include "interface/vmcs_host/khronos/IL/OMX_Audio.h"
- #include "interface/vmcs_host/khronos/IL/OMX_Broadcom.h"
-
- /** Convert MMAL status codes into OMX error codes.
- *
- * @param status MMAL status code.
- * @return OMX error code.
- */
- OMX_ERRORTYPE mmalil_error_to_omx(MMAL_STATUS_T status);
-
- /** Convert OMX error codes into MMAL status codes.
- *
- * @param error OMX error code.
- * @return MMAL status code.
- */
- MMAL_STATUS_T mmalil_error_to_mmal(OMX_ERRORTYPE error);
-
- /** Convert MMAL buffer header flags into OMX buffer header flags.
- *
- * @param flags OMX buffer header flags.
- * @return MMAL buffer header flags.
- */
- uint32_t mmalil_buffer_flags_to_mmal(OMX_U32 flags);
-
- /** Convert OMX buffer header flags into MMAL buffer header flags.
- *
- * @param flags MMAL buffer header flags.
- * @return OMX buffer header flags.
- */
- OMX_U32 mmalil_buffer_flags_to_omx(uint32_t flags);
-
- /** Convert a MMAL buffer header into an OMX buffer header.
- * Note that only the fields which have a direct mapping between OMX and MMAL are converted.
- *
- * @param omx Pointer to the destination OMX buffer header.
- * @param mmal Pointer to the source MMAL buffer header.
- */
- void mmalil_buffer_header_to_omx(OMX_BUFFERHEADERTYPE *omx, MMAL_BUFFER_HEADER_T *mmal);
-
- /** Convert an OMX buffer header into a MMAL buffer header.
- *
- * @param mmal Pointer to the destination MMAL buffer header.
- * @param omx Pointer to the source OMX buffer header.
- */
- void mmalil_buffer_header_to_mmal(MMAL_BUFFER_HEADER_T *mmal, OMX_BUFFERHEADERTYPE *omx);
-
-
- OMX_PORTDOMAINTYPE mmalil_es_type_to_omx_domain(MMAL_ES_TYPE_T type);
- MMAL_ES_TYPE_T mmalil_omx_domain_to_es_type(OMX_PORTDOMAINTYPE domain);
- uint32_t mmalil_omx_audio_coding_to_encoding(OMX_AUDIO_CODINGTYPE coding);
- OMX_AUDIO_CODINGTYPE mmalil_encoding_to_omx_audio_coding(uint32_t encoding);
- uint32_t mmalil_omx_video_coding_to_encoding(OMX_VIDEO_CODINGTYPE coding);
- OMX_VIDEO_CODINGTYPE mmalil_encoding_to_omx_video_coding(uint32_t encoding);
- uint32_t mmalil_omx_image_coding_to_encoding(OMX_IMAGE_CODINGTYPE coding);
- OMX_IMAGE_CODINGTYPE mmalil_encoding_to_omx_image_coding(uint32_t encoding);
- uint32_t mmalil_omx_coding_to_encoding(uint32_t encoding, OMX_PORTDOMAINTYPE domain);
- uint32_t mmalil_omx_color_format_to_encoding(OMX_COLOR_FORMATTYPE coding);
- OMX_COLOR_FORMATTYPE mmalil_encoding_to_omx_color_format(uint32_t encoding);
- uint32_t mmalil_omx_color_space_to_mmal(OMX_COLORSPACETYPE coding);
- OMX_COLORSPACETYPE mmalil_color_space_to_omx(uint32_t coding);
- uint32_t mmalil_omx_video_profile_to_mmal(OMX_U32 level, OMX_VIDEO_CODINGTYPE coding);
- OMX_U32 mmalil_video_profile_to_omx(uint32_t profile);
- uint32_t mmalil_omx_video_level_to_mmal(OMX_U32 level, OMX_VIDEO_CODINGTYPE coding);
- OMX_U32 mmalil_video_level_to_omx(uint32_t level);
- MMAL_VIDEO_RATECONTROL_T mmalil_omx_video_ratecontrol_to_mmal(OMX_VIDEO_CONTROLRATETYPE omx);
- OMX_VIDEO_CONTROLRATETYPE mmalil_video_ratecontrol_to_omx(MMAL_VIDEO_RATECONTROL_T mmal);
- MMAL_VIDEO_INTRA_REFRESH_T mmalil_omx_video_intrarefresh_to_mmal(OMX_VIDEO_INTRAREFRESHTYPE omx);
-
- /** Union of all the OMX_VIDEO/AUDIO_PARAM types */
- typedef union OMX_FORMAT_PARAM_TYPE {
- OMX_PARAM_U32TYPE common;
-
- /* Video */
- OMX_VIDEO_PARAM_AVCTYPE avc;
- OMX_VIDEO_PARAM_H263TYPE h263;
- OMX_VIDEO_PARAM_MPEG2TYPE mpeg2;
- OMX_VIDEO_PARAM_MPEG4TYPE mpeg4;
- OMX_VIDEO_PARAM_WMVTYPE wmv;
- OMX_VIDEO_PARAM_RVTYPE rv;
-
- /* Audio */
- OMX_AUDIO_PARAM_PCMMODETYPE pcm;
- OMX_AUDIO_PARAM_MP3TYPE mp3;
- OMX_AUDIO_PARAM_AACPROFILETYPE aac;
- OMX_AUDIO_PARAM_VORBISTYPE vorbis;
- OMX_AUDIO_PARAM_WMATYPE wma;
- OMX_AUDIO_PARAM_RATYPE ra;
- OMX_AUDIO_PARAM_SBCTYPE sbc;
- OMX_AUDIO_PARAM_ADPCMTYPE adpcm;
- OMX_AUDIO_PARAM_G723TYPE g723;
- OMX_AUDIO_PARAM_G726TYPE g726;
- OMX_AUDIO_PARAM_G729TYPE g729;
- OMX_AUDIO_PARAM_AMRTYPE amr;
- OMX_AUDIO_PARAM_GSMFRTYPE gsmfr;
- OMX_AUDIO_PARAM_GSMHRTYPE gsmhr;
- OMX_AUDIO_PARAM_GSMEFRTYPE gsmefr;
- OMX_AUDIO_PARAM_TDMAFRTYPE tdmafr;
- OMX_AUDIO_PARAM_TDMAEFRTYPE tdmaefr;
- OMX_AUDIO_PARAM_PDCFRTYPE pdcfr;
- OMX_AUDIO_PARAM_PDCEFRTYPE pdcefr;
- OMX_AUDIO_PARAM_PDCHRTYPE pdchr;
- OMX_AUDIO_PARAM_QCELP8TYPE qcelp8;
- OMX_AUDIO_PARAM_QCELP13TYPE qcelp13;
- OMX_AUDIO_PARAM_EVRCTYPE evrc;
- OMX_AUDIO_PARAM_SMVTYPE smv;
- OMX_AUDIO_PARAM_MIDITYPE midi;
- #ifdef OMX_AUDIO_CodingDDP_Supported
- OMX_AUDIO_PARAM_DDPTYPE ddp;
- #endif
- #ifdef OMX_AUDIO_CodingDTS_Supported
- OMX_AUDIO_PARAM_DTSTYPE dts;
- #endif
-
- } OMX_FORMAT_PARAM_TYPE;
-
- /** Get the OMX_IndexParamAudio index corresponding to a specified audio coding type.
- *
- * @param coding Audio coding type.
- * @param size Pointer used to return the size of the parameter.
- *
- * @return OMX index or 0 if no match was found.
- */
- OMX_INDEXTYPE mmalil_omx_audio_param_index(OMX_AUDIO_CODINGTYPE coding, OMX_U32 *size);
-
- /** Get the audio coding corresponding to a specified OMX_IndexParamAudio index.
- *
- * @param index Audio coding type.
- *
- * @return Audio coding type.
- */
- OMX_AUDIO_CODINGTYPE mmalil_omx_audio_param_index_to_coding(OMX_INDEXTYPE index);
-
- /** Setup a default channel mapping based on the number of channels
- * @param channel_mapping The output channel mapping
- * @param nchannels Number of channels
- *
- * @return MMAL_SUCCESS if we managed to produce a channel mapping
- */
- MMAL_STATUS_T mmalil_omx_default_channel_mapping(OMX_AUDIO_CHANNELTYPE *channel_mapping, unsigned int nchannels);
-
- /** Convert an OMX_IndexParamAudio into a MMAL elementary stream format.
- *
- * @param format Format structure to update.
- * @param coding Audio coding type.
- * @param param Source OMX_IndexParamAudio structure.
- *
- * @return The MMAL encoding if a match was found or MMAL_ENCODING_UNKNOWN otherwise.
- */
- MMAL_FOURCC_T mmalil_omx_audio_param_to_format(MMAL_ES_FORMAT_T *format,
- OMX_AUDIO_CODINGTYPE coding, OMX_FORMAT_PARAM_TYPE *param);
-
- /** Convert a MMAL elementary stream format into a OMX_IndexParamAudio structure.
- *
- * @param param OMX_IndexParamAudio structure to update.
- * @param param_index returns the OMX_IndexParamAudio index corresponding to the format.
- * @param format Source format structure.
- *
- * @return The OMX aduio coding type if a match was found or OMX_AUDIO_CodingUnused otherwise.
- */
- OMX_AUDIO_CODINGTYPE mmalil_format_to_omx_audio_param(OMX_FORMAT_PARAM_TYPE *param,
- OMX_INDEXTYPE *param_index, MMAL_ES_FORMAT_T *format);
-
- #ifdef __cplusplus
- }
- #endif
-
- /** @} */
-
- #endif /* MMAL_IL_H */
|