diff --git a/app/src/decoder.c b/app/src/decoder.c index 337aa329..d750253c 100644 --- a/app/src/decoder.c +++ b/app/src/decoder.c @@ -48,7 +48,7 @@ sc_decoder_open(struct sc_decoder *decoder, const AVCodec *codec) { decoder->codec_ctx->flags |= AV_CODEC_FLAG_LOW_DELAY; if (avcodec_open2(decoder->codec_ctx, codec, NULL) < 0) { - LOGE("Could not open codec"); + LOGE("Decoder '%s': could not open codec", decoder->name); avcodec_free_context(&decoder->codec_ctx); return false; } @@ -101,7 +101,8 @@ sc_decoder_push(struct sc_decoder *decoder, const AVPacket *packet) { int ret = avcodec_send_packet(decoder->codec_ctx, packet); if (ret < 0 && ret != AVERROR(EAGAIN)) { - LOGE("Could not send video packet: %d", ret); + LOGE("Decoder '%s': could not send video packet: %d", + decoder->name, ret); return false; } ret = avcodec_receive_frame(decoder->codec_ctx, decoder->frame); @@ -114,7 +115,8 @@ sc_decoder_push(struct sc_decoder *decoder, const AVPacket *packet) { av_frame_unref(decoder->frame); } else if (ret != AVERROR(EAGAIN)) { - LOGE("Could not receive video frame: %d", ret); + LOGE("Decoder '%s', could not receive video frame: %d", + decoder->name, ret); return false; } return true; @@ -140,7 +142,8 @@ sc_decoder_packet_sink_push(struct sc_packet_sink *sink, } void -sc_decoder_init(struct sc_decoder *decoder) { +sc_decoder_init(struct sc_decoder *decoder, const char *name) { + decoder->name = name; // statically allocated decoder->sink_count = 0; static const struct sc_packet_sink_ops ops = { diff --git a/app/src/decoder.h b/app/src/decoder.h index 16adc5ec..aace1af6 100644 --- a/app/src/decoder.h +++ b/app/src/decoder.h @@ -14,6 +14,8 @@ struct sc_decoder { struct sc_packet_sink packet_sink; // packet sink trait + const char *name; // must be statically allocated (e.g. a string literal) + struct sc_frame_sink *sinks[SC_DECODER_MAX_SINKS]; unsigned sink_count; @@ -21,8 +23,9 @@ struct sc_decoder { AVFrame *frame; }; +// The name must be statically allocated (e.g. a string literal) void -sc_decoder_init(struct sc_decoder *decoder); +sc_decoder_init(struct sc_decoder *decoder, const char *name); void sc_decoder_add_sink(struct sc_decoder *decoder, struct sc_frame_sink *sink); diff --git a/app/src/scrcpy.c b/app/src/scrcpy.c index 578943f9..944d5f05 100644 --- a/app/src/scrcpy.c +++ b/app/src/scrcpy.c @@ -441,7 +441,7 @@ scrcpy(struct scrcpy_options *options) { needs_video_decoder |= !!options->v4l2_device; #endif if (needs_video_decoder) { - sc_decoder_init(&s->video_decoder); + sc_decoder_init(&s->video_decoder, "video"); sc_demuxer_add_sink(&s->video_demuxer, &s->video_decoder.packet_sink); }