mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-09-20 04:42:18 +02:00
libobs: Allow last encoder error for last output error
(This commit also modifies UI) This makes it more trivial for encoder plugins to communicate to users why specifically an encoder error might have occurred mid-stream.
This commit is contained in:
parent
6534bf5834
commit
a4146a685b
@ -377,6 +377,7 @@ Output.ConnectFail.Disconnected="Disconnected from server."
|
||||
# output streaming-related messages
|
||||
Output.StreamEncodeError.Title="Encoding error"
|
||||
Output.StreamEncodeError.Msg="An encoder error occurred while streaming."
|
||||
Output.StreamEncodeError.Msg.LastError="An encoder error occurred while streaming:\n\n%1"
|
||||
|
||||
# output recording-related messages
|
||||
Output.RecordFail.Title="Failed to start recording"
|
||||
@ -386,6 +387,7 @@ Output.RecordNoSpace.Msg="There is not sufficient disk space to continue recordi
|
||||
Output.RecordError.Title="Recording error"
|
||||
Output.RecordError.Msg="An unspecified error occurred while recording."
|
||||
Output.RecordError.EncodeErrorMsg="An encoder error occurred while recording."
|
||||
Output.RecordError.EncodeErrorMsg.LastError="An encoder error occurred while recording:\n\n%1"
|
||||
|
||||
# output recording messages
|
||||
Output.BadPath.Title="Bad File Path"
|
||||
|
@ -6800,9 +6800,13 @@ void OBSBasic::StreamingStop(int code, QString last_error)
|
||||
blog(LOG_INFO, STREAMING_STOP);
|
||||
|
||||
if (encode_error) {
|
||||
QString msg =
|
||||
last_error.isEmpty()
|
||||
? QTStr("Output.StreamEncodeError.Msg")
|
||||
: QTStr("Output.StreamEncodeError.Msg.LastError")
|
||||
.arg(last_error);
|
||||
OBSMessageBox::information(
|
||||
this, QTStr("Output.StreamEncodeError.Title"),
|
||||
QTStr("Output.StreamEncodeError.Msg"));
|
||||
this, QTStr("Output.StreamEncodeError.Title"), msg);
|
||||
|
||||
} else if (code != OBS_OUTPUT_SUCCESS && isVisible()) {
|
||||
OBSMessageBox::information(this,
|
||||
@ -6949,9 +6953,13 @@ void OBSBasic::RecordingStop(int code, QString last_error)
|
||||
QTStr("Output.RecordFail.Unsupported"));
|
||||
|
||||
} else if (code == OBS_OUTPUT_ENCODE_ERROR && isVisible()) {
|
||||
OBSMessageBox::warning(
|
||||
this, QTStr("Output.RecordError.Title"),
|
||||
QTStr("Output.RecordError.EncodeErrorMsg"));
|
||||
QString msg =
|
||||
last_error.isEmpty()
|
||||
? QTStr("Output.RecordError.EncodeErrorMsg")
|
||||
: QTStr("Output.RecordError.EncodeErrorMsg.LastError")
|
||||
.arg(last_error);
|
||||
OBSMessageBox::warning(this, QTStr("Output.RecordError.Title"),
|
||||
msg);
|
||||
|
||||
} else if (code == OBS_OUTPUT_NO_SPACE && isVisible()) {
|
||||
OBSMessageBox::warning(this,
|
||||
|
@ -1982,7 +1982,8 @@ static inline void signal_stop(struct obs_output *output)
|
||||
struct calldata params;
|
||||
|
||||
calldata_init(¶ms);
|
||||
calldata_set_string(¶ms, "last_error", output->last_error_message);
|
||||
calldata_set_string(¶ms, "last_error",
|
||||
obs_output_get_last_error(output));
|
||||
calldata_set_int(¶ms, "code", output->stop_code);
|
||||
calldata_set_ptr(¶ms, "output", output);
|
||||
|
||||
@ -2617,7 +2618,23 @@ const char *obs_output_get_last_error(obs_output_t *output)
|
||||
if (!obs_output_valid(output, "obs_output_get_last_error"))
|
||||
return NULL;
|
||||
|
||||
if (output->last_error_message) {
|
||||
return output->last_error_message;
|
||||
} else {
|
||||
obs_encoder_t *vencoder = output->video_encoder;
|
||||
if (vencoder && vencoder->last_error_message) {
|
||||
return vencoder->last_error_message;
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < MAX_AUDIO_MIXES; i++) {
|
||||
obs_encoder_t *aencoder = output->audio_encoders[i];
|
||||
if (aencoder && aencoder->last_error_message) {
|
||||
return aencoder->last_error_message;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void obs_output_set_last_error(obs_output_t *output, const char *message)
|
||||
|
Loading…
Reference in New Issue
Block a user