mirror of
https://github.com/Genymobile/scrcpy
synced 2024-11-11 01:10:32 +00:00
Do not call avcodec_close()
The documentation of avcodec_close() says:
> Do not use this function. Use avcodec_free_context() to destroy a
> codec context (either open or closed).
It was deprecated in FFmpeg 7 by commit
1cc24d749569a42510399a29b034f7a77bdec34e:
<1cc24d7495
>
> Its use has been discouraged since 2016, but now is no longer used in
> avformat, so there is no reason to keep it public.
This commit is contained in:
parent
7633228278
commit
1e3deabd6c
@ -278,7 +278,6 @@ run_demuxer(void *data) {
|
|||||||
finally_close_sinks:
|
finally_close_sinks:
|
||||||
sc_packet_source_sinks_close(&demuxer->packet_source);
|
sc_packet_source_sinks_close(&demuxer->packet_source);
|
||||||
finally_free_context:
|
finally_free_context:
|
||||||
// This also calls avcodec_close() internally
|
|
||||||
avcodec_free_context(&codec_ctx);
|
avcodec_free_context(&codec_ctx);
|
||||||
end:
|
end:
|
||||||
demuxer->cbs->on_ended(demuxer, status, demuxer->cbs_userdata);
|
demuxer->cbs->on_ended(demuxer, status, demuxer->cbs_userdata);
|
||||||
|
@ -117,21 +117,21 @@ decode_image(const char *path) {
|
|||||||
AVFrame *frame = av_frame_alloc();
|
AVFrame *frame = av_frame_alloc();
|
||||||
if (!frame) {
|
if (!frame) {
|
||||||
LOG_OOM();
|
LOG_OOM();
|
||||||
goto close_codec;
|
goto free_codec_ctx;
|
||||||
}
|
}
|
||||||
|
|
||||||
AVPacket *packet = av_packet_alloc();
|
AVPacket *packet = av_packet_alloc();
|
||||||
if (!packet) {
|
if (!packet) {
|
||||||
LOG_OOM();
|
LOG_OOM();
|
||||||
av_frame_free(&frame);
|
av_frame_free(&frame);
|
||||||
goto close_codec;
|
goto free_codec_ctx;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (av_read_frame(ctx, packet) < 0) {
|
if (av_read_frame(ctx, packet) < 0) {
|
||||||
LOGE("Could not read frame");
|
LOGE("Could not read frame");
|
||||||
av_packet_free(&packet);
|
av_packet_free(&packet);
|
||||||
av_frame_free(&frame);
|
av_frame_free(&frame);
|
||||||
goto close_codec;
|
goto free_codec_ctx;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ret;
|
int ret;
|
||||||
@ -139,22 +139,20 @@ decode_image(const char *path) {
|
|||||||
LOGE("Could not send icon packet: %d", ret);
|
LOGE("Could not send icon packet: %d", ret);
|
||||||
av_packet_free(&packet);
|
av_packet_free(&packet);
|
||||||
av_frame_free(&frame);
|
av_frame_free(&frame);
|
||||||
goto close_codec;
|
goto free_codec_ctx;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((ret = avcodec_receive_frame(codec_ctx, frame)) != 0) {
|
if ((ret = avcodec_receive_frame(codec_ctx, frame)) != 0) {
|
||||||
LOGE("Could not receive icon frame: %d", ret);
|
LOGE("Could not receive icon frame: %d", ret);
|
||||||
av_packet_free(&packet);
|
av_packet_free(&packet);
|
||||||
av_frame_free(&frame);
|
av_frame_free(&frame);
|
||||||
goto close_codec;
|
goto free_codec_ctx;
|
||||||
}
|
}
|
||||||
|
|
||||||
av_packet_free(&packet);
|
av_packet_free(&packet);
|
||||||
|
|
||||||
result = frame;
|
result = frame;
|
||||||
|
|
||||||
close_codec:
|
|
||||||
avcodec_close(codec_ctx);
|
|
||||||
free_codec_ctx:
|
free_codec_ctx:
|
||||||
avcodec_free_context(&codec_ctx);
|
avcodec_free_context(&codec_ctx);
|
||||||
close_input:
|
close_input:
|
||||||
|
@ -240,7 +240,7 @@ sc_v4l2_sink_open(struct sc_v4l2_sink *vs, const AVCodecContext *ctx) {
|
|||||||
vs->frame = av_frame_alloc();
|
vs->frame = av_frame_alloc();
|
||||||
if (!vs->frame) {
|
if (!vs->frame) {
|
||||||
LOG_OOM();
|
LOG_OOM();
|
||||||
goto error_avcodec_close;
|
goto error_avcodec_free_context;
|
||||||
}
|
}
|
||||||
|
|
||||||
vs->packet = av_packet_alloc();
|
vs->packet = av_packet_alloc();
|
||||||
@ -268,8 +268,6 @@ error_av_packet_free:
|
|||||||
av_packet_free(&vs->packet);
|
av_packet_free(&vs->packet);
|
||||||
error_av_frame_free:
|
error_av_frame_free:
|
||||||
av_frame_free(&vs->frame);
|
av_frame_free(&vs->frame);
|
||||||
error_avcodec_close:
|
|
||||||
avcodec_close(vs->encoder_ctx);
|
|
||||||
error_avcodec_free_context:
|
error_avcodec_free_context:
|
||||||
avcodec_free_context(&vs->encoder_ctx);
|
avcodec_free_context(&vs->encoder_ctx);
|
||||||
error_avio_close:
|
error_avio_close:
|
||||||
@ -297,7 +295,6 @@ sc_v4l2_sink_close(struct sc_v4l2_sink *vs) {
|
|||||||
|
|
||||||
av_packet_free(&vs->packet);
|
av_packet_free(&vs->packet);
|
||||||
av_frame_free(&vs->frame);
|
av_frame_free(&vs->frame);
|
||||||
avcodec_close(vs->encoder_ctx);
|
|
||||||
avcodec_free_context(&vs->encoder_ctx);
|
avcodec_free_context(&vs->encoder_ctx);
|
||||||
avio_close(vs->format_ctx->pb);
|
avio_close(vs->format_ctx->pb);
|
||||||
avformat_free_context(vs->format_ctx);
|
avformat_free_context(vs->format_ctx);
|
||||||
|
Loading…
Reference in New Issue
Block a user