CameraManager.java 文件源码

java
阅读 32 收藏 0 点赞 0 评论 0

项目:Zxing 作者:
/**
 * A factory method to build the appropriate LuminanceSource object based on
 * the format of the preview buffers, as described by Camera.Parameters.
 * 
 * @param data
 *            A preview frame.
 * @param width
 *            The width of the image.
 * @param height
 *            The height of the image.
 * @return A PlanarYUVLuminanceSource instance.
 */
@SuppressWarnings("deprecation")
public PlanarYUVLuminanceSource buildLuminanceSource(byte[] data,
                                                     int width, int height) {
    Rect rect = getFramingRectInPreview();
    int previewFormat = configManager.getPreviewFormat();
    String previewFormatString = configManager.getPreviewFormatString();
    switch (previewFormat) {
    // This is the standard Android format which all devices are REQUIRED to
    // support.
    // In theory, it's the only one we should ever care about.
    case PixelFormat.YCbCr_420_SP:
        // This format has never been seen in the wild, but is compatible as
        // we only care
        // about the Y channel, so allow it.
    case PixelFormat.YCbCr_422_SP:
        return new PlanarYUVLuminanceSource(data, width, height, rect.left,
                rect.top, rect.width(), rect.height());
    default:
        // The Samsung Moment incorrectly uses this variant instead of the
        // 'sp' version.
        // Fortunately, it too has all the Y data up front, so we can read
        // it.
        if ("yuv420p".equals(previewFormatString)) {
            return new PlanarYUVLuminanceSource(data, width, height,
                    rect.left, rect.top, rect.width(), rect.height());
        }
    }
    throw new IllegalArgumentException("Unsupported picture format: "
            + previewFormat + '/' + previewFormatString);
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号