My Project
|
00001 /* 00002 Copyright (c) 2012, Broadcom Europe Ltd 00003 All rights reserved. 00004 00005 Redistribution and use in source and binary forms, with or without 00006 modification, are permitted provided that the following conditions are met: 00007 * Redistributions of source code must retain the above copyright 00008 notice, this list of conditions and the following disclaimer. 00009 * Redistributions in binary form must reproduce the above copyright 00010 notice, this list of conditions and the following disclaimer in the 00011 documentation and/or other materials provided with the distribution. 00012 * Neither the name of the copyright holder nor the 00013 names of its contributors may be used to endorse or promote products 00014 derived from this software without specific prior written permission. 00015 00016 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 00017 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 00018 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00019 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY 00020 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 00021 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 00022 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 00023 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 00024 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00025 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00026 */ 00027 00028 #ifndef MMAL_FORMAT_H 00029 #define MMAL_FORMAT_H 00030 00031 #ifdef __cplusplus 00032 extern "C" { 00033 #endif 00034 00037 /* @{ */ 00038 00039 #include "mmal_types.h" 00040 #include "mmal_encodings.h" 00041 00044 typedef enum { 00045 MMAL_ES_TYPE_UNKNOWN, 00046 MMAL_ES_TYPE_CONTROL, 00047 MMAL_ES_TYPE_AUDIO, 00048 MMAL_ES_TYPE_VIDEO, 00049 MMAL_ES_TYPE_SUBPICTURE 00050 } MMAL_ES_TYPE_T; 00051 00054 typedef struct 00055 { 00056 uint32_t width; 00057 uint32_t height; 00058 MMAL_RECT_T crop; 00059 MMAL_RATIONAL_T frame_rate; 00060 MMAL_RATIONAL_T par; 00062 MMAL_FOURCC_T color_space; 00067 } MMAL_VIDEO_FORMAT_T; 00068 00071 typedef struct MMAL_AUDIO_FORMAT_T 00072 { 00073 uint32_t channels; 00074 uint32_t sample_rate; 00076 uint32_t bits_per_sample; 00077 uint32_t block_align; 00081 } MMAL_AUDIO_FORMAT_T; 00082 00085 typedef struct 00086 { 00087 uint32_t x_offset; 00088 uint32_t y_offset; 00092 } MMAL_SUBPICTURE_FORMAT_T; 00093 00096 typedef union 00097 { 00098 MMAL_AUDIO_FORMAT_T audio; 00099 MMAL_VIDEO_FORMAT_T video; 00100 MMAL_SUBPICTURE_FORMAT_T subpicture; 00101 } MMAL_ES_SPECIFIC_FORMAT_T; 00102 00106 /* @{ */ 00107 #define MMAL_ES_FORMAT_FLAG_FRAMED 0x1 00108 /* @} */ 00109 00113 /* @{ */ 00114 #define MMAL_ENCODING_UNKNOWN 0 00115 /* @} */ 00116 00120 /* @{ */ 00121 #define MMAL_ENCODING_VARIANT_DEFAULT 0 00122 /* @} */ 00123 00125 typedef struct MMAL_ES_FORMAT_T 00126 { 00127 MMAL_ES_TYPE_T type; 00129 MMAL_FOURCC_T encoding; 00133 MMAL_FOURCC_T encoding_variant; 00138 MMAL_ES_SPECIFIC_FORMAT_T *es; 00140 uint32_t bitrate; 00141 uint32_t flags; 00145 uint32_t extradata_size; 00146 uint8_t *extradata; 00148 } MMAL_ES_FORMAT_T; 00149 00154 MMAL_ES_FORMAT_T *mmal_format_alloc(void); 00155 00160 void mmal_format_free(MMAL_ES_FORMAT_T *format); 00161 00170 MMAL_STATUS_T mmal_format_extradata_alloc(MMAL_ES_FORMAT_T *format, unsigned int size); 00171 00178 void mmal_format_copy(MMAL_ES_FORMAT_T *format_dest, MMAL_ES_FORMAT_T *format_src); 00179 00186 MMAL_STATUS_T mmal_format_full_copy(MMAL_ES_FORMAT_T *format_dest, MMAL_ES_FORMAT_T *format_src); 00187 00191 /* @{ */ 00192 #define MMAL_ES_FORMAT_COMPARE_FLAG_TYPE 0x01 00193 #define MMAL_ES_FORMAT_COMPARE_FLAG_ENCODING 0x02 00194 #define MMAL_ES_FORMAT_COMPARE_FLAG_BITRATE 0x04 00195 #define MMAL_ES_FORMAT_COMPARE_FLAG_FLAGS 0x08 00196 #define MMAL_ES_FORMAT_COMPARE_FLAG_EXTRADATA 0x10 00198 #define MMAL_ES_FORMAT_COMPARE_FLAG_VIDEO_RESOLUTION 0x0100 00199 #define MMAL_ES_FORMAT_COMPARE_FLAG_VIDEO_CROPPING 0x0200 00200 #define MMAL_ES_FORMAT_COMPARE_FLAG_VIDEO_FRAME_RATE 0x0400 00201 #define MMAL_ES_FORMAT_COMPARE_FLAG_VIDEO_ASPECT_RATIO 0x0800 00202 #define MMAL_ES_FORMAT_COMPARE_FLAG_VIDEO_COLOR_SPACE 0x1000 00204 #define MMAL_ES_FORMAT_COMPARE_FLAG_ES_OTHER 0x10000000 00205 /* @} */ 00206 00215 uint32_t mmal_format_compare(MMAL_ES_FORMAT_T *format_1, MMAL_ES_FORMAT_T *format_2); 00216 00217 /* @} */ 00218 00219 #ifdef __cplusplus 00220 } 00221 #endif 00222 00223 #endif /* MMAL_FORMAT_H */