SecCamera::SecCamera(int ch) : _isInited(false), _previewWidth(0), _previewHeight(0), _previewPixfmt(-1), _previewFrameSize(0), _snapshotWidth(0), _snapshotHeight(0), _snapshotPixfmt(-1), _isPreviewOn(false), _isRecordOn(false), _v4l2Cam(NULL), _v4l2Rec(NULL), _encoder(NULL), _tagger(NULL) { LOGI("%s()", __func__); _v4l2Cam = new SecV4L2Adapter(CAMERA_DEV_NAME, ch); _encoder = get_encoder(); _tagger = get_tagger(); if (_v4l2Cam->getFd() == 0) { _release(); LOGE("!! %s: Failed to create SecCamera !!", __func__); return; } _initParms(); _isInited = true; }
bool udpipe_service::handle_rest_process(microrestd::rest_request& req) { string error; auto rest_id = get_rest_model_id(req); auto model = load_rest_model(rest_id, error); if (!model) return req.respond_error(error); auto& data = get_data(req, error); if (!error.empty()) return req.respond_error(error); bool tokenizer = false; unique_ptr<input_format> input(get_input_format(req, model, tokenizer, error)); if (!input) return req.respond_error(error); auto& tagger = get_tagger(req, model, error); if (!error.empty()) return req.respond_error(error); auto& parser = get_parser(req, model, error); if (!error.empty()) return req.respond_error(error); unique_ptr<output_format> output(get_output_format(req, error)); if (!output) return req.respond_error(error); // Try loading the input if tokenizer is not used if (!tokenizer) { input->set_text(data); sentence s; while (input->next_sentence(s, error)) {} if (!error.empty()) return req.respond_error(error.insert(0, "Cannot read input data: ").append("\n")); } input->set_text(data); class generator : public rest_response_generator { public: generator(const model_info* model, input_format* input, const string& tagger, const string& parser, output_format* output) : rest_response_generator(model), input(input), tagger(tagger), parser(parser), output(output) {} bool generate() { if (!input->next_sentence(s, error)) { output->finish_document(os); json.value(os.str(), true); os.str(string()); json.finish(true); return false; } if (tagger != "none") model->model->tag(s, tagger, error); if (parser != "none") model->model->parse(s, parser, error); output->write_sentence(s, os); json.value(os.str(), true); os.str(string()); return true; } private: sentence s; string error; ostringstream os; unique_ptr<input_format> input; const string& tagger; const string& parser; unique_ptr<output_format> output; }; return req.respond(generator::mime, new generator(model, input.release(), tagger, parser, output.release())); }