vpxdec: Include vpx error details in errors and warnings

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6636>
This commit is contained in:
Philippe Normand 2024-04-13 10:57:43 +01:00 committed by GStreamer Marge Bot
parent ce16646190
commit e87ecf448b
2 changed files with 20 additions and 8 deletions

View file

@ -51,4 +51,13 @@ typedef enum gst_vpx_img_fmt
GST_STR_NULL(element->encoder.err_detail)); \
} \
G_STMT_END
#define GST_VPX_DEC_WARN(element, message, status) \
G_STMT_START { \
GST_WARNING_OBJECT(element, "%s: %s (details: %s)", #message, \
gst_vpx_error_name(status), \
GST_STR_NULL(element->decoder.err_detail)); \
} \
G_STMT_END
G_END_DECLS

View file

@ -600,8 +600,7 @@ gst_vpx_dec_open_codec (GstVPXDec * dec, GstVideoCodecFrame * frame)
gst_buffer_unmap (frame->input_buffer, &minfo);
if (status != VPX_CODEC_OK) {
GST_INFO_OBJECT (dec, "VPX preprocessing error: %s",
gst_vpx_error_name (status));
GST_VPX_DEC_WARN (dec, "VPX preprocessing error", status);
return GST_FLOW_CUSTOM_SUCCESS_1;
}
@ -639,9 +638,12 @@ gst_vpx_dec_open_codec (GstVPXDec * dec, GstVideoCodecFrame * frame)
status =
vpx_codec_dec_init (&dec->decoder, vpxclass->codec_algo, &cfg, flags);
if (status != VPX_CODEC_OK) {
GST_ELEMENT_ERROR (dec, LIBRARY, INIT,
("Failed to initialize VP8 decoder"), ("%s",
gst_vpx_error_name (status)));
GST_ELEMENT_ERROR_WITH_DETAILS (dec, LIBRARY, INIT,
("Failed to initialize VP8 decoder"), ("%s (details: %s)",
gst_vpx_error_name (status),
GST_STR_NULL (dec->decoder.err_detail)), ("error", G_TYPE_STRING,
gst_vpx_error_name (status), "details", G_TYPE_STRING,
GST_STR_NULL (dec->decoder.err_detail), NULL));
return GST_FLOW_ERROR;
}
@ -654,8 +656,7 @@ gst_vpx_dec_open_codec (GstVPXDec * dec, GstVideoCodecFrame * frame)
status = vpx_codec_control (&dec->decoder, VP8_SET_POSTPROC, &pp_cfg);
if (status != VPX_CODEC_OK) {
GST_WARNING_OBJECT (dec, "Couldn't set postprocessing settings: %s",
gst_vpx_error_name (status));
GST_VPX_DEC_WARN (dec, "Couldn't set postprocessing settings", status);
}
}
vpx_codec_set_frame_buffer_functions (&dec->decoder,
@ -726,7 +727,9 @@ gst_vpx_dec_handle_frame (GstVideoDecoder * decoder, GstVideoCodecFrame * frame)
GstVideoDecoderRequestSyncPointFlags flags = 0;
GST_VIDEO_DECODER_ERROR (decoder, 1, STREAM, DECODE,
("Failed to decode frame"), ("%s", gst_vpx_error_name (status)), ret);
("Failed to decode frame"), ("%s (details: %s)",
gst_vpx_error_name (status),
GST_STR_NULL (dec->decoder.err_detail)), ret);
if (gst_video_decoder_get_needs_sync_point (decoder))
flags |= GST_VIDEO_DECODER_REQUEST_SYNC_POINT_DISCARD_INPUT;