GstBusSyncReply GstEnginePipeline::BusCallbackSync(GstBus*, GstMessage* msg,
        gpointer self) {
    GstEnginePipeline* instance = reinterpret_cast<GstEnginePipeline*>(self);

    qLog(Debug) << instance->id() << "sync bus message"
                << GST_MESSAGE_TYPE_NAME(msg);

    switch (GST_MESSAGE_TYPE(msg)) {
    case GST_MESSAGE_EOS:
        emit instance->EndOfStreamReached(instance->id(), false);
        break;

    case GST_MESSAGE_TAG:
        instance->TagMessageReceived(msg);
        break;

    case GST_MESSAGE_ERROR:
        instance->ErrorMessageReceived(msg);
        break;

    case GST_MESSAGE_ELEMENT:
        instance->ElementMessageReceived(msg);
        break;

    case GST_MESSAGE_STATE_CHANGED:
        instance->StateChangedMessageReceived(msg);
        break;

    case GST_MESSAGE_BUFFERING:
        instance->BufferingMessageReceived(msg);
        break;

    case GST_MESSAGE_STREAM_STATUS:
        instance->StreamStatusMessageReceived(msg);
        break;

    case GST_MESSAGE_STREAM_START:
        if (instance->emit_track_ended_on_stream_start_) {
            qLog(Debug) << "New segment started, EOS will signal on next buffer "
                        "discontinuity";
            instance->emit_track_ended_on_stream_start_ = false;
            instance->emit_track_ended_on_time_discontinuity_ = true;
        }
        break;

    default:
        break;
    }

    return GST_BUS_PASS;
}
Beispiel #2
0
GstBusSyncReply GstEnginePipeline::BusCallbackSync(GstBus*, GstMessage* msg,
                                                   gpointer self) {
  GstEnginePipeline* instance = reinterpret_cast<GstEnginePipeline*>(self);

  qLog(Debug) << instance->id() << "sync bus message"
              << GST_MESSAGE_TYPE_NAME(msg);

  switch (GST_MESSAGE_TYPE(msg)) {
    case GST_MESSAGE_EOS:
      emit instance->EndOfStreamReached(instance->id(), false);
      break;

    case GST_MESSAGE_TAG:
      instance->TagMessageReceived(msg);
      break;

    case GST_MESSAGE_ERROR:
      instance->ErrorMessageReceived(msg);
      break;

    case GST_MESSAGE_ELEMENT:
      instance->ElementMessageReceived(msg);
      break;

    case GST_MESSAGE_STATE_CHANGED:
      instance->StateChangedMessageReceived(msg);
      break;

    case GST_MESSAGE_BUFFERING:
      instance->BufferingMessageReceived(msg);
      break;

    case GST_MESSAGE_STREAM_STATUS:
      instance->StreamStatusMessageReceived(msg);
      break;

    default:
      break;
  }

  return GST_BUS_PASS;
}