| /* Copyright (c) 2010, Code Aurora Forum. 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 Code Aurora Forum, Inc. 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 "AS IS" AND ANY EXPRESS OR IMPLIED |
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
| * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT |
| * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS |
| * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
| * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
| * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR |
| * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
| * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE |
| * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN |
| * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| * |
| */ |
| #ifndef _VCD_DRIVER_PROPERTY_H_ |
| #define _VCD_DRIVER_PROPERTY_H_ |
| |
| #define VCD_START_BASE 0x0 |
| #define VCD_I_LIVE (VCD_START_BASE + 0x1) |
| #define VCD_I_CODEC (VCD_START_BASE + 0x2) |
| #define VCD_I_FRAME_SIZE (VCD_START_BASE + 0x3) |
| #define VCD_I_METADATA_ENABLE (VCD_START_BASE + 0x4) |
| #define VCD_I_METADATA_HEADER (VCD_START_BASE + 0x5) |
| #define VCD_I_PROFILE (VCD_START_BASE + 0x6) |
| #define VCD_I_LEVEL (VCD_START_BASE + 0x7) |
| #define VCD_I_BUFFER_FORMAT (VCD_START_BASE + 0x8) |
| #define VCD_I_FRAME_RATE (VCD_START_BASE + 0x9) |
| #define VCD_I_TARGET_BITRATE (VCD_START_BASE + 0xA) |
| #define VCD_I_MULTI_SLICE (VCD_START_BASE + 0xB) |
| #define VCD_I_ENTROPY_CTRL (VCD_START_BASE + 0xC) |
| #define VCD_I_DEBLOCKING (VCD_START_BASE + 0xD) |
| #define VCD_I_RATE_CONTROL (VCD_START_BASE + 0xE) |
| #define VCD_I_QP_RANGE (VCD_START_BASE + 0xF) |
| #define VCD_I_SESSION_QP (VCD_START_BASE + 0x10) |
| #define VCD_I_INTRA_PERIOD (VCD_START_BASE + 0x11) |
| #define VCD_I_VOP_TIMING (VCD_START_BASE + 0x12) |
| #define VCD_I_SHORT_HEADER (VCD_START_BASE + 0x13) |
| #define VCD_I_SEQ_HEADER (VCD_START_BASE + 0x14) |
| #define VCD_I_HEADER_EXTENSION (VCD_START_BASE + 0x15) |
| #define VCD_I_INTRA_REFRESH (VCD_START_BASE + 0x16) |
| #define VCD_I_POST_FILTER (VCD_START_BASE + 0x17) |
| #define VCD_I_PROGRESSIVE_ONLY (VCD_START_BASE + 0x18) |
| |
| #define VCD_START_REQ (VCD_START_BASE + 0x1000) |
| #define VCD_I_REQ_IFRAME (VCD_START_REQ + 0x1) |
| |
| #define VCD_I_RESERVED_BASE (VCD_START_BASE + 0x10000) |
| |
| struct vcd_property_hdr { |
| u32 id; |
| size_t sz; |
| }; |
| |
| //TODO: Remove? |
| struct vcd_property_live { |
| u32 live; |
| }; |
| |
| enum vcd_codec { |
| VCD_CODEC_H264 = 0x1, |
| VCD_CODEC_H263 = 0x2, |
| VCD_CODEC_MPEG1 = 0x3, |
| VCD_CODEC_MPEG2 = 0x4, |
| VCD_CODEC_MPEG4 = 0x5, |
| VCD_CODEC_DIVX_3 = 0x6, |
| VCD_CODEC_DIVX_4 = 0x7, |
| VCD_CODEC_DIVX_5 = 0x8, |
| VCD_CODEC_DIVX_6 = 0x9, |
| VCD_CODEC_XVID = 0xA, |
| VCD_CODEC_VC1 = 0xB, |
| VCD_CODEC_VC1_RCV = 0xC |
| }; |
| |
| struct vcd_property_codec { |
| enum vcd_codec codec; |
| }; |
| |
| struct vcd_property_frame_size { |
| u32 width; |
| u32 height; |
| u32 stride; |
| u32 scan_lines; |
| }; |
| |
| |
| #define VCD_METADATA_DATANONE 0x001 |
| #define VCD_METADATA_QCOMFILLER 0x002 |
| #define VCD_METADATA_QPARRAY 0x004 |
| #define VCD_METADATA_CONCEALMB 0x008 |
| #define VCD_METADATA_SEI 0x010 |
| #define VCD_METADATA_VUI 0x020 |
| #define VCD_METADATA_VC1 0x040 |
| #define VCD_METADATA_PASSTHROUGH 0x080 |
| #define VCD_METADATA_ENC_SLICE 0x100 |
| |
| struct vcd_property_meta_data_enable { |
| u32 meta_data_enable_flag; |
| }; |
| |
| struct vcd_property_metadata_hdr { |
| u32 meta_data_id_type; |
| u32 version; |
| u32 port_index; |
| u32 type; |
| }; |
| |
| struct vcd_property_frame_rate { |
| u32 fps_denominator; |
| u32 fps_numerator; |
| }; |
| |
| struct vcd_property_target_bitrate { |
| u32 target_bitrate; |
| }; |
| |
| enum vcd_yuv_buffer_format_type { |
| VCD_BUFFER_FORMAT_NV12 = 0x1, |
| VCD_BUFFER_FORMAT_TILE_4x2 = 0x2, |
| VCD_BUFFER_FORMAT_NV12_16M2KA = 0x3 |
| }; |
| |
| struct vcd_property_buffer_format { |
| enum vcd_yuv_buffer_format_type buffer_format; |
| }; |
| |
| struct vcd_property_post_filter { |
| u32 post_filter; |
| }; |
| |
| enum vcd_codec_profile_type { |
| VCD_PROFILE_UNKNOWN = 0x0, |
| VCD_PROFILE_MPEG4_SP = 0x1, |
| VCD_PROFILE_MPEG4_ASP = 0x2, |
| VCD_PROFILE_H264_BASELINE = 0x3, |
| VCD_PROFILE_H264_MAIN = 0x4, |
| VCD_PROFILE_H264_HIGH = 0x5, |
| VCD_PROFILE_H263_BASELINE = 0x6, |
| VCD_PROFILE_VC1_SIMPLE = 0x7, |
| VCD_PROFILE_VC1_MAIN = 0x8, |
| VCD_PROFILE_VC1_ADVANCE = 0x9, |
| VCD_PROFILE_MPEG2_MAIN = 0xA, |
| VCD_PROFILE_MPEG2_SIMPLE = 0xB |
| }; |
| |
| struct vcd_property_profile { |
| enum vcd_codec_profile_type profile; |
| }; |
| |
| enum vcd_codec_level_type { |
| VCD_LEVEL_UNKNOWN = 0x0, |
| VCD_LEVEL_MPEG4_0 = 0x1, |
| VCD_LEVEL_MPEG4_0b = 0x2, |
| VCD_LEVEL_MPEG4_1 = 0x3, |
| VCD_LEVEL_MPEG4_2 = 0x4, |
| VCD_LEVEL_MPEG4_3 = 0x5, |
| VCD_LEVEL_MPEG4_3b = 0x6, |
| VCD_LEVEL_MPEG4_4 = 0x7, |
| VCD_LEVEL_MPEG4_4a = 0x8, |
| VCD_LEVEL_MPEG4_5 = 0x9, |
| VCD_LEVEL_MPEG4_6 = 0xA, |
| VCD_LEVEL_MPEG4_7 = 0xB, |
| VCD_LEVEL_MPEG4_X = 0xC, |
| VCD_LEVEL_H264_1 = 0x10, |
| VCD_LEVEL_H264_1b = 0x11, |
| VCD_LEVEL_H264_1p1 = 0x12, |
| VCD_LEVEL_H264_1p2 = 0x13, |
| VCD_LEVEL_H264_1p3 = 0x14, |
| VCD_LEVEL_H264_2 = 0x15, |
| VCD_LEVEL_H264_2p1 = 0x16, |
| VCD_LEVEL_H264_2p2 = 0x17, |
| VCD_LEVEL_H264_3 = 0x18, |
| VCD_LEVEL_H264_3p1 = 0x19, |
| VCD_LEVEL_H264_3p2 = 0x1A, |
| VCD_LEVEL_H264_4 = 0x1B, |
| VCD_LEVEL_H264_X = 0x1C, |
| VCD_LEVEL_H263_10 = 0x20, |
| VCD_LEVEL_H263_20 = 0x21, |
| VCD_LEVEL_H263_30 = 0x22, |
| VCD_LEVEL_H263_40 = 0x23, |
| VCD_LEVEL_H263_45 = 0x24, |
| VCD_LEVEL_H263_50 = 0x25, |
| VCD_LEVEL_H263_60 = 0x26, |
| VCD_LEVEL_H263_70 = 0x27, |
| VCD_LEVEL_H263_X = 0x28, |
| VCD_LEVEL_MPEG2_LOW = 0x30, |
| VCD_LEVEL_MPEG2_MAIN = 0x31, |
| VCD_LEVEL_MPEG2_HIGH_14 = 0x32, |
| VCD_LEVEL_MPEG2_HIGH = 0x33, |
| VCD_LEVEL_MPEG2_X = 0x34, |
| VCD_LEVEL_VC1_LOW = 0x40, |
| VCD_LEVEL_VC1_MEDIUM = 0x41, |
| VCD_LEVEL_VC1_HIGH = 0x42, |
| VCD_LEVEL_VC1_0 = 0x43, |
| VCD_LEVEL_VC1_1 = 0x44, |
| VCD_LEVEL_VC1_2 = 0x45, |
| VCD_LEVEL_VC1_3 = 0x46, |
| VCD_LEVEL_VC1_4 = 0x47, |
| VCD_LEVEL_VC1_X = 0x48 |
| }; |
| |
| struct vcd_property_level { |
| enum vcd_codec_level_type level; |
| }; |
| |
| enum vcd_m_slice_sel_type { |
| VCD_MSLICE_OFF = 0x1, |
| VCD_MSLICE_BY_MB_COUNT = 0x2, |
| VCD_MSLICE_BY_BYTE_COUNT = 0x3, |
| VCD_MSLICE_BY_GOB = 0x4 |
| }; |
| |
| struct vcd_property_multi_slice { |
| enum vcd_m_slice_sel_type m_slice_sel; |
| u32 m_slice_size; |
| }; |
| |
| enum vcd_entropy_sel_type { |
| VCD_ENTROPY_SEL_CAVLC = 0x1, |
| VCD_ENTROPY_SEL_CABAC = 0x2 |
| }; |
| |
| enum vcd_cabac_model_type { |
| VCD_CABAC_MODEL_NUMBER_0 = 0x1, |
| VCD_CABAC_MODEL_NUMBER_1 = 0x2, |
| VCD_CABAC_MODEL_NUMBER_2 = 0x3 |
| }; |
| |
| struct vcd_property_entropy_control { |
| enum vcd_entropy_sel_type entropy_sel; |
| enum vcd_cabac_model_type cabac_model; |
| }; |
| |
| enum vcd_db_config_type { |
| VCD_DB_ALL_BLOCKING_BOUNDARY = 0x1, |
| VCD_DB_DISABLE = 0x2, |
| VCD_DB_SKIP_SLICE_BOUNDARY = 0x3 |
| }; |
| struct vcd_property_db_config { |
| enum vcd_db_config_type db_config; |
| u32 slice_alpha_offset; |
| u32 slice_beta_offset; |
| }; |
| |
| enum vcd_rate_control_type { |
| VCD_RATE_CONTROL_OFF = 0x1, |
| VCD_RATE_CONTROL_VBR_VFR = 0x2, |
| VCD_RATE_CONTROL_VBR_CFR = 0x3, |
| VCD_RATE_CONTROL_CBR_VFR = 0x4, |
| VCD_RATE_CONTROL_CBR_CFR = 0x5 |
| }; |
| |
| struct vcd_property_rate_control { |
| enum vcd_rate_control_type rate_control; |
| }; |
| |
| struct vcd_property_qp_range { |
| u32 max_qp; |
| u32 min_qp; |
| }; |
| |
| struct vcd_property_session_qp { |
| u32 iframe_qp; |
| u32 frame_qp; |
| u32 bframe_qp; |
| }; |
| |
| struct vcd_property_i_period { |
| u32 frames; |
| u32 bframes; |
| }; |
| |
| struct vcd_property_vop_timing { |
| u32 vop_time_resolution; |
| }; |
| |
| struct vcd_property_short_header { |
| u32 short_header; |
| }; |
| |
| struct vcd_property_intra_refresh_mb_number { |
| u32 cir_mb_number; |
| }; |
| |
| struct vcd_property_req_i_frame { |
| u32 req_i_frame; |
| }; |
| |
| struct vcd_frame_rect { |
| u32 left; |
| u32 top; |
| u32 right; |
| u32 bottom; |
| }; |
| |
| struct vcd_property_dec_output_buffer { |
| struct vcd_frame_rect disp_frm; |
| }; |
| |
| #endif |