| 
 | 
 
 
发表于 2021-4-19 10:49:09
 17051 浏览  0 回复
                                 
 
 
MT6762前置摄像头被镜像问题
                                
 
需改路径:\frameworks\av\camera\CameraUtils.cpp 
修改函数status_t CameraUtils::getRotationTransform(const CameraMetadata& staticInfo, 
                /*out*/int32_t* transform) { 
    ALOGV("%s", __FUNCTION__); 
 
 
    if (transform == NULL) { 
        ALOGW("%s: null transform", __FUNCTION__); 
        return BAD_VALUE; 
    } 
 
 
    *transform = 0; 
 
 
    camera_metadata_ro_entry_t entry = staticInfo.find(ANDROID_SENSOR_ORIENTATION); 
    if (entry.count == 0) { 
        ALOGE("%s: Can't find android.sensor.orientation in static metadata!", __FUNCTION__); 
        return INVALID_OPERATION; 
    } 
 
 
    camera_metadata_ro_entry_t entryFacing = staticInfo.find(ANDROID_LENS_FACING); 
    if (entryFacing.count == 0) { 
        ALOGE("%s: Can't find android.lens.facing in static metadata!", __FUNCTION__); 
        return INVALID_OPERATION; 
    } 
 
 
    int32_t& flags = *transform; 
 
 
    bool mirror = (entryFacing.data.u8[0] == ANDROID_LENS_FACING_FRONT); 
    int orientation = entry.data.i32[0]; 
    if (!mirror) { 
        switch (orientation) { 
            case 0: 
                flags = 0; 
                break; 
            case 90: 
                flags = NATIVE_WINDOW_TRANSFORM_ROT_90; 
                break; 
            case 180: 
                flags = NATIVE_WINDOW_TRANSFORM_ROT_180; 
                break; 
            case 270: 
                flags = NATIVE_WINDOW_TRANSFORM_ROT_270; 
                break; 
            default: 
                ALOGE("%s: Invalid HAL android.sensor.orientation value: %d", 
                      __FUNCTION__, orientation); 
                return INVALID_OPERATION; 
        } 
    } else { 
        // Front camera needs to be horizontally flipped for mirror-like behavior. 
        // Note: Flips are applied before rotates; using XOR here as some of these flags are 
        // composed in terms of other flip/rotation flags, and are not bitwise-ORable. 
        switch (orientation) { 
            case 0: 
                flags = 0; 
                break; 
            case 90: 
                flags = NATIVE_WINDOW_TRANSFORM_ROT_90; 
                break; 
            case 180: 
                flags = NATIVE_WINDOW_TRANSFORM_ROT_180; 
                break; 
            case 270: 
                flags = NATIVE_WINDOW_TRANSFORM_ROT_270; 
                break; 
            default: 
                ALOGE("%s: Invalid HAL android.sensor.orientation value: %d", 
                      __FUNCTION__, orientation); 
                return INVALID_OPERATION; 
        } 
 
 
    } 
 
 |   
 
 
 
 |  
| 
 | 
 
 
 | 
 | 
 
| 
 | 
 | 
 
 
 
	
登录或注册 
 |