sub.cpp 954 字节
Newer Older
B
BohaoWu 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
/*******************************************
 *
 * Copyright (c) 2020 Baidu.com, Inc. All Rights Reserved
 *
 ******************************************/
/**
 * @file sub.cpp
 * @author yinyijun@baidu.com
 * @date 2020-06-11
 **/
#include "sub.h"

#include <stdexcept>

#include <npp.h>
#include "utils.h"

Sub::Sub(float subtractor) {
    for (size_t i = 0; i < CHANNEL_SIZE; i++) {
        _subtractors[i] = subtractor;
    }
}

Sub::Sub(const std::vector<float> &subtractors) {
    if (subtractors.size() != CHANNEL_SIZE) {
        throw std::runtime_error("size of subtractors must be three");
    }
    for (size_t i = 0; i < CHANNEL_SIZE; i++) {
        _subtractors[i] = subtractors[i];
    }
}

std::shared_ptr<OpContext> Sub::operator()(std::shared_ptr<OpContext> input) {
    NppStatus ret = nppiSubC_32f_C3IR(_subtractors, input->p_frame(), input->step(), input->nppi_size());
    verify_npp_ret("nppiSubC_32f_C3IR", ret);
    return input;
}