over_dec.cpp

  name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-5572165936844014&dt=1194442938015&lmt=1194190197&format=336x280_as&output=html&correlator=1194442937843&url=file%3A%2F%2F%2FC%3A%2FDocuments%2520and%2520Settings%2Flhh1%2F%E6%A1%8C%E9%9D%A2%2FCLanguage.htm&color_bg=FFFFFF&color_text=000000&color_link=000000&color_url=FFFFFF&color_border=FFFFFF&ad_type=text&ga_vid=583001034.1194442938&ga_sid=1194442938&ga_hid=1942779085&flash=9&u_h=768&u_w=1024&u_ah=740&u_aw=1024&u_cd=32&u_tz=480&u_java=true" frameborder="0" width="336" scrolling="no" height="280" allowtransparency="allowtransparency"> // This file will not compile under TCLite because it does not support
// dual-overloaded decrement operators

#include <iostream.h>
#include <iomanip.h>
#include <string.h>

class String
{
  public:
    String String::operator--()
      { buffer[length-1] = NULL;
        length--;
        return *this; };

    String String::operator--(int x)
      { buffer[length-1] = NULL;
        length--;
        return *this; };

    String(char *string)
      { strcpy(buffer, string);
        length = strlen(buffer); }

    void show_string(void) { cout << buffer << endl; };
  private:
    char buffer[256];
    int length;
};


void main(void)
 {
   String title("Jamsa's C/C++ Programmer's Bible");

   title--;
   title.show_string();

   --title;
   title.show_string();
 }

config: pos_filter: cam_lane: x_offset: 0.0 y_offset: 0.0 h_offset: 0.00 obj_filter: using_outside_obj_list: 0 lidar_usage: 0 driving_map: inputted_map_type: 2 action_planning: enable_auto_changing_lane: 1 enable_action_planning_force_changing_lane: 0 trajectory_planning: enable_changing_lane: 1 enable_avoiding_collision_in_lane: 0 enable_avoiding_collision_over_line: 0 enable_trajectory_planning_force_changing_lane: 0 velocity_planning: enable_aeb_pre_dec: false safe_dist_to_static_obj: 8.0 safe_dist_for_low_speed_following: 8.0 safe_dist_to_dynamic_obj: 8.0 safe_distance_in_backing_mode: 2.0 stop_accurately: enable: true braking_distance: 0.6 proposed_decelaration: 3.0 lat_acc_limit: 1.0 enable_stop_by_traffic_light: false 读取以上配置至 PlanningConfig config_; 包含以下函数 // 配置位姿模块 void readPosFilterConfig(std::string _cruise_planning_param_path); // 配置障碍物过滤模块 void readObjFilterConfig(std::string _cruise_planning_param_path); // 配置驾驶地图模块 void readDrivingMapConfig(std::string _cruise_planning_param_path); // 配置行为规划模块 void readActionPlanningConfig(std::string _cruise_planning_param_path); // 配置轨迹规划模块 void readTrajectoryPlanningConfig(std::string _cruise_planning_param_path); // 配置速度规划模块 void readVelocityPlanningConfig(std::string _cruise_planning_param_path); struct PlanningConfig { pos_filter::PosFilterConfig pos_filter_config; obj_filter::ObjFilterConfig obj_filter_config; driv_map::DrivingMapConfig driving_map_config; planning::ActionPlanningConfig act_planning_config; planning::TrajectoryPlanningConfig trj_planning_config; planning::VelocityPlanningConfig vel_planning_config; PlanningConfig() { // nothing to do }struct PosFilterConfig { struct { Float32_t x_offset; Float32_t y_offset; Float32_t h_offset; } cam_lane; PosFilterConfig() { cam_lane.x_offset = 0.0F; cam_lane.y_offset = 0.0F; cam_lane.h_offset = 0.0F; } };struct ObjFilterConfig { /// 是否使用外部障碍物列表 bool using_outside_obj_list; /// 激光雷达使用方法: 0 ~ 不使用, 1 ~ 总是使用, 2 ~ 特定路段使用 Int32_t lidar_usage; ObjFilterConfig() { using_outside_obj_list = false; lidar_usage = 0; } };struct DrivingMapConfig { enum { /// 从相机车道线构建驾驶地图 INPUTTED_MAP_TYPE_CAMERA = 0, /// 从高精度地图构建驾驶地图 INPUTTED_MAP_TYPE_HDMAP, /// 融合相机车道线及高精度地图 INPUTTED_MAP_TYPE_MIXED }; /// 地图输入类型 Int32_t inputted_map_type; /** * @brief 构造函数 */ DrivingMapConfig() { inputted_map_type = INPUTTED_MAP_TYPE_CAMERA; } };struct ActionPlanningConfig { /// 允许自主变道 bool enable_auto_changing_lane; /** * @brief 构造函数 */ ActionPlanningConfig() { enable_auto_changing_lane = false; } };struct TrajectoryPlanningConfig { /// 允许变道 bool enable_changing_lane; /// 允许车道内避让 bool enable_avoiding_collision_in_lane; /// 允许跨线避让 bool enable_avoiding_collision_over_line; /** * @brief 构造函数 */ TrajectoryPlanningConfig() { enable_changing_lane = true; enable_avoiding_collision_in_lane = false; enable_avoiding_collision_over_line = false; } };struct VelocityPlanningConfig { /// 使能AEB预减速的功能 bool enable_aeb_pre_dec; /// 到静态障碍物的安全距离 plan_var_t safe_dist_to_static_obj; /// 低速跟随的安全距离 plan_var_t safe_dist_for_low_speed_following; /// 到动态障碍物的安全距离 plan_var_t safe_dist_to_dynamic_obj; /// 到障碍物的安全距离 (In backing mode) plan_var_t safe_distance_in_backing_mode; /// 精准停车 struct StopAccurately { /// 使能 bool enable; /// 制动开始距离 plan_var_t braking_distance; /// 建议的减速度 plan_var_t proposed_decelaration; /** * @brief 构造函数 */ StopAccurately() { enable = false; braking_distance = 0.8F; proposed_decelaration = 3.0F; } } stop_accurately; /// 侧向加速度限制 plan_var_t lat_acc_limit; /// 非地图模式下红绿灯停车使能 bool enable_stop_by_traffic_light; /** * @brief 构造函数 */ VelocityPlanningConfig() { enable_aeb_pre_dec = false; safe_dist_to_static_obj = 8.0F; safe_dist_for_low_speed_following = 5.0F; safe_dist_to_dynamic_obj = 8.0F; safe_distance_in_backing_mode = 2.0F; lat_acc_limit = 1.0F; enable_stop_by_traffic_light = false; } }; };
最新发布
10-31
/*---------------------------------------------------------------------- | AP4_AvcFrameParser::ParseHrd +---------------------------------------------------------------------*/ AP4_Result AP4_AvcFrameParser::ParseHrd(AP4_BitReader& bits, AP4_HrdParameterSet& hrd) { hrd.cpb_cnt_minus1 = ReadGolomb(bits); if (hrd.cpb_cnt_minus1 >= 32) { DBG_PRINTF_1("hrd.cpb_cnt_minus1[%d] >= 32\n", hrd.cpb_cnt_minus1); return AP4_ERROR_INVALID_FORMAT; } hrd.bit_rate_scale = bits.ReadBits(4); hrd.cpb_size_scale = bits.ReadBits(4); for (unsigned int i = 0; i <= hrd.cpb_cnt_minus1; i++) { hrd.bit_rate_value_minus1[i] = ReadGolomb(bits); hrd.cpb_size_value_minus1[i] = ReadGolomb(bits); hrd.cbr_flag[i] = bits.ReadBit(); } hrd.initial_cpb_removal_delay_length_minus1 = bits.ReadBits(5); hrd.cpb_removal_delay_length_minus1 = bits.ReadBits(5); hrd.dpb_output_delay_length_minus1 = bits.ReadBits(5); hrd.time_offset_length = bits.ReadBits(5); return AP4_SUCCESS; } /*---------------------------------------------------------------------- | AP4_AvcFrameParser::ParseVui +---------------------------------------------------------------------*/ AP4_Result AP4_AvcFrameParser::ParseVui(AP4_BitReader& bits, AP4_VuiParameterSet& vui) { vui.aspect_ratio_info_present_flag = bits.ReadBit(); if (vui.aspect_ratio_info_present_flag) { vui.aspect_ratio_idc = bits.ReadBits(8); // Appendix E. Table E-1 Meaning of sample aspect ratio indicator if (vui.aspect_ratio_idc == 255/*Extended_SAR*/) { vui.sar_width = bits.ReadBits(16); vui.sar_height = bits.ReadBits(16); } } vui.overscan_info_present_flag = bits.ReadBit(); if (vui.overscan_info_present_flag) { vui.overscan_appropriate_flag = bits.ReadBit(); } vui.video_signal_type_present_flag = bits.ReadBit(); if (vui.video_signal_type_present_flag) { vui.video_format = bits.ReadBits(3); vui.video_full_range_flag = bits.ReadBit(); vui.colour_description_present_flag = bits.ReadBit(); if (vui.colour_description_present_flag) { vui.colour_primaries = bits.ReadBits(8); vui.transfer_characteristics = bits.ReadBits(8); vui.matrix_coefficients = bits.ReadBits(8); } } vui.chroma_loc_info_present_flag = bits.ReadBit(); if (vui.chroma_loc_info_present_flag) { vui.chroma_sample_loc_type_top_field = ReadGolomb(bits); vui.chroma_sample_loc_type_bottom_field = ReadGolomb(bits); } vui.timing_info_present_flag = bits.ReadBit(); if (vui.timing_info_present_flag) { vui.num_units_in_tick = bits.ReadBits(32); vui.time_scale = bits.ReadBits(32); vui.fixed_frame_rate_flag = bits.ReadBit(); } vui.nal_hrd_parameters_present_flag = bits.ReadBit(); if (vui.nal_hrd_parameters_present_flag) { AP4_Result result = ParseHrd(bits, vui.nal_hrd); if (AP4_FAILED(result)) { return result; } } vui.vcl_hrd_parameters_present_flag = bits.ReadBit(); if (vui.vcl_hrd_parameters_present_flag) { AP4_Result result = ParseHrd(bits, vui.vcl_hrd); if (AP4_FAILED(result)) { return result; } } if (vui.nal_hrd_parameters_present_flag || vui.vcl_hrd_parameters_present_flag) { vui.low_delay_hrd_flag = bits.ReadBit(); } vui.pic_struct_present_flag = bits.ReadBit(); vui.bitstream_restriction_flag = bits.ReadBit(); if (vui.bitstream_restriction_flag) { vui.motion_vectors_over_pic_boundaries_flag = bits.ReadBit(); vui.max_bytes_per_pic_denom = ReadGolomb(bits); vui.max_bits_per_mb_denom = ReadGolomb(bits); vui.log2_max_mv_length_horizontal = ReadGolomb(bits); vui.log2_max_mv_length_vertical = ReadGolomb(bits); vui.num_reorder_frames = ReadGolomb(bits); vui.max_dec_frame_buffering = ReadGolomb(bits); } return AP4_SUCCESS; } 注释上述代码
09-24
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值