Example #1
0
std::vector<byte_t> TextEncoding::encode(const Char* str, int length, int* outUsedDefaultCharCount)
{
    // TODO: this が UTF16 なら memcpy でよい

    // 入力に入っている最悪パターンの文字数
    size_t srcMaxCharCount = length;

    // 出力バッファに必要な最大バイト数
    size_t outputMaxByteCount = srcMaxCharCount * maxByteCount();

    // 出力バッファ作成
    std::vector<byte_t> output(outputMaxByteCount + maxByteCount()); // \0 強制格納に備え、1文字分余裕のあるサイズを指定する

    // convert
    std::unique_ptr<TextEncoder> encoder(createEncoder());
    TextEncodeResult result;
    encoder->convertFromUTF16(
        (const UTF16*)str,
        length,
        output.data(),
        output.size(),
        &result);

    if (outUsedDefaultCharCount) {
        *outUsedDefaultCharCount = encoder->usedDefaultCharCount();
    }

    output.resize(result.outputByteCount);
    return output;
}
Example #2
0
void Kwave::CodecPlugin::load(QStringList &/* params */)
{
    use();

    m_codec.m_use_count++;
    if (m_codec.m_use_count == 1)
    {
	m_codec.m_encoder = createEncoder();
	if (m_codec.m_encoder)
	    Kwave::CodecManager::registerEncoder(*m_codec.m_encoder);

	m_codec.m_decoder = createDecoder();
	if (m_codec.m_decoder)
	    Kwave::CodecManager::registerDecoder(*m_codec.m_decoder);
    }
}
int Private_Impl_Still::initialize() {
    if ( _isInitialized ) return 0;
    if ( createCamera() ) {
        cout << API_NAME << ": Failed to create camera component.\n";
        destroyCamera();
        return -1;
    } else if ( createEncoder() ) {
        cout << API_NAME << ": Failed to create encoder component.\n";
        destroyCamera();
        return -1;
    } else {
        camera_still_port	= camera->output[MMAL_CAMERA_CAPTURE_PORT];
        encoder_input_port  = encoder->input[0];
        encoder_output_port = encoder->output[0];
        if ( connectPorts ( camera_still_port, encoder_input_port, &encoder_connection ) != MMAL_SUCCESS ) {
            cout << "ERROR: Could not connect encoder ports!\n";
            return -1;
        }
    }
    _isInitialized=true;
    return 0;
}
Example #4
0
QString GstExporter::exportVideo() {
  qDebug() << "Starting Videoexport...";
  QGst::BinPtr mixer = createVideoMixer();
  QGst::BinPtr encoder = createEncoder();
  QGst::ElementPtr scale = QGst::ElementFactory::make("videoscale");
  QGst::ElementPtr sink = QGst::ElementFactory::make("filesink");
  QGst::ElementPtr capsfilter = createCapsFilter(exportWidthPx, exportHeightPx);
  QString recordingTime = rec_->datetime.toString("yyyy_MM_dd_hh_mm_ss");
  qDebug() << "Loaded recodring, recording time: " << rec_->datetime;

  QDir current = QDir::current();
  current.mkdir("exports");
  current.cd("exports");

  QString filename =
      current.absoluteFilePath("export-" + recordingTime + ".mp4");

  sink->setProperty("location", filename);

  m_pipeline = QGst::Pipeline::create();
  m_pipeline->add(mixer, capsfilter, encoder, scale, sink);
  m_pipeline->linkMany(mixer, capsfilter, scale, encoder, sink);
  qDebug() << "GstExporter: pipeline: Added and linked all elements";

  m_pipeline->bus()->addSignalWatch();
  QGlib::connect(m_pipeline->bus(), "message", this,
                 &GstExporter::onBusMessage);
  qDebug() << "exportVideo(): Starting pipeline";
  m_pipeline->setState(QGst::StatePlaying);

  timer = new QTimer(this);
  connect(timer, &QTimer::timeout, this, &GstExporter::progressPercent);
  timer->start(1000);

  return current.relativeFilePath(filename);
}