From 1ede5ff4953a189dd7e476dedf25ba55a09dce01 Mon Sep 17 00:00:00 2001 From: Jacek Jendrzej Date: Thu, 20 Jun 2019 20:39:38 +0200 Subject: [PATCH 1/2] generic-pc: reduce ffmpeg warnings Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/3b7b7c2450a0c6fb931c852ef3e0434dab13911a Author: Jacek Jendrzej Date: 2019-06-20 (Thu, 20 Jun 2019) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libgeneric-pc/audio.cpp | 21 +++++++++++++--- libgeneric-pc/video.cpp | 55 ++++++++++++++++++++++++++++++++--------- 2 files changed, 60 insertions(+), 16 deletions(-) diff --git a/libgeneric-pc/audio.cpp b/libgeneric-pc/audio.cpp index 3d484fd..8b82b51 100644 --- a/libgeneric-pc/audio.cpp +++ b/libgeneric-pc/audio.cpp @@ -457,11 +457,25 @@ void cAudio::run() int gotframe = 0; if (av_read_frame(avfc, &avpkt) < 0) break; +#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(57,37,100) avcodec_decode_audio4(c, frame, &gotframe, &avpkt); +#else + int ret = avcodec_send_packet(c, &avpkt); + if (ret != 0 && ret != AVERROR(EAGAIN)) { + hal_info("%s: avcodec_send_packet %d\n", __func__, ret); + }else { + ret = avcodec_receive_frame(c, frame); + if (ret != 0 && ret != AVERROR(EAGAIN)) { + hal_info("%s: avcodec_send_packet %d\n", __func__, ret); + }else { + gotframe = 1; + } + } +#endif + if (gotframe && thread_started) { int out_linesize; - obuf_sz = av_rescale_rnd(swr_get_delay(swr, p->sample_rate) + - frame->nb_samples, o_sr, p->sample_rate, AV_ROUND_UP); + obuf_sz = av_rescale_rnd(swr_get_delay(swr, p->sample_rate) + frame->nb_samples, o_sr, p->sample_rate, AV_ROUND_UP); if (obuf_sz > obuf_sz_max) { hal_info("obuf_sz: %d old: %d\n", obuf_sz, obuf_sz_max); av_free(obuf); @@ -481,8 +495,7 @@ void cAudio::run() curr_pts = frame->best_effort_timestamp; #endif hal_debug("%s: pts 0x%" PRIx64 " %3f\n", __func__, curr_pts, curr_pts/90000.0); - int o_buf_sz = av_samples_get_buffer_size(&out_linesize, o_ch, - obuf_sz, AV_SAMPLE_FMT_S16, 1); + int o_buf_sz = av_samples_get_buffer_size(&out_linesize, o_ch, obuf_sz, AV_SAMPLE_FMT_S16, 1); if (o_buf_sz > 0) ao_play(adevice, (char *)obuf, o_buf_sz); } diff --git a/libgeneric-pc/video.cpp b/libgeneric-pc/video.cpp index 5c3aa0e..9d7ec99 100644 --- a/libgeneric-pc/video.cpp +++ b/libgeneric-pc/video.cpp @@ -250,10 +250,10 @@ bool cVideo::ShowPicture(const char *fname) buf_out = 0; still_m.unlock(); - unsigned int i; + unsigned int i = 0; int stream_id = -1; int got_frame = 0; - int len; + int av_ret = 0; AVFormatContext *avfc = NULL; AVCodecContext *c = NULL; AVCodecParameters *p = NULL; @@ -296,14 +296,29 @@ bool cVideo::ShowPicture(const char *fname) hal_info("%s: av_read_frame < 0\n", __func__); goto out_free; } - len = avcodec_decode_video2(c, frame, &got_frame, &avpkt); - if (len < 0) { - hal_info("%s: avcodec_decode_video2 %d\n", __func__, len); +#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(57,37,100) + av_ret = avcodec_decode_video2(c, frame, &got_frame, &avpkt); + if (av_ret < 0) { + hal_info("%s: avcodec_decode_video2 %d\n", __func__, av_ret); av_packet_unref(&avpkt); goto out_free; } - if (avpkt.size > len) - hal_info("%s: WARN: pkt->size %d != len %d\n", __func__, avpkt.size, len); + if (avpkt.size > av_ret) + hal_info("%s: WARN: pkt->size %d != len %d\n", __func__, avpkt.size, av_ret); +#else + av_ret = avcodec_send_packet(c, &avpkt); + if (av_ret != 0 && av_ret != AVERROR(EAGAIN)) { + hal_info("%s: avcodec_send_packet %d\n", __func__, av_ret); + av_packet_unref(&avpkt); + goto out_free; + } + av_ret = avcodec_receive_frame(c, frame); + if (av_ret != 0 && av_ret != AVERROR(EAGAIN)) + goto out_free; + + got_frame = 1; +#endif + if (got_frame) { unsigned int need = av_image_get_buffer_size(VDEC_PIXFMT, c->width, c->height, 1); struct SwsContext *convert = sws_getContext(c->width, c->height, c->pix_fmt, @@ -473,6 +488,7 @@ void cVideo::run(void) time_t warn_r = 0; /* last read error */ time_t warn_d = 0; /* last decode error */ + int av_ret = 0; bufpos = 0; buf_num = 0; @@ -539,17 +555,32 @@ void cVideo::run(void) continue; } int got_frame = 0; - int len = avcodec_decode_video2(c, frame, &got_frame, &avpkt); - if (len < 0) { +#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(57,37,100) + av_ret = avcodec_decode_video2(c, frame, &got_frame, &avpkt); + if (av_ret < 0) { if (warn_d - time(NULL) > 4) { - hal_info("%s: avcodec_decode_video2 %d\n", __func__, len); + hal_info("%s: avcodec_decode_video2 %d\n", __func__, av_ret); warn_d = time(NULL); } av_packet_unref(&avpkt); continue; } - if (avpkt.size > len) - hal_info("%s: WARN: pkt->size %d != len %d\n", __func__, avpkt.size, len); + if (avpkt.size > av_ret) + hal_info("%s: WARN: pkt->size %d != len %d\n", __func__, avpkt.size, av_ret); +#else + av_ret = avcodec_send_packet(c, &avpkt); + if (av_ret != 0 && av_ret != AVERROR(EAGAIN)) { + if (warn_d - time(NULL) > 4) { + hal_info("%s: avcodec_send_packet %d\n", __func__, av_ret); + warn_d = time(NULL); + } + av_packet_unref(&avpkt); + continue; + } + av_ret = avcodec_receive_frame(c, frame); + if (!av_ret) + got_frame = 1; +#endif still_m.lock(); if (got_frame && ! stillpicture) { unsigned int need = av_image_get_buffer_size(VDEC_PIXFMT, c->width, c->height, 1); From 6f1753e3e5be762cd9f356d711ba15395784e447 Mon Sep 17 00:00:00 2001 From: Jacek Jendrzej Date: Thu, 20 Jun 2019 20:48:12 +0200 Subject: [PATCH 2/2] generic-pc: reduce warnings Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/1d310db5e9bb47f3848513dd14e8eb5d2baced05 Author: Jacek Jendrzej Date: 2019-06-20 (Thu, 20 Jun 2019) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libgeneric-pc/audio.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/libgeneric-pc/audio.cpp b/libgeneric-pc/audio.cpp index 8b82b51..e9d3514 100644 --- a/libgeneric-pc/audio.cpp +++ b/libgeneric-pc/audio.cpp @@ -347,6 +347,7 @@ void cAudio::run() uint8_t *inbuf = (uint8_t *)av_malloc(INBUF_SIZE); AVPacket avpkt; int ret, driver; + int av_ret = 0; /* libao */ ao_info *ai; // ao_device *adevice; @@ -460,13 +461,13 @@ void cAudio::run() #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(57,37,100) avcodec_decode_audio4(c, frame, &gotframe, &avpkt); #else - int ret = avcodec_send_packet(c, &avpkt); - if (ret != 0 && ret != AVERROR(EAGAIN)) { - hal_info("%s: avcodec_send_packet %d\n", __func__, ret); + av_ret = avcodec_send_packet(c, &avpkt); + if (av_ret != 0 && av_ret != AVERROR(EAGAIN)) { + hal_info("%s: avcodec_send_packet %d\n", __func__, av_ret); }else { - ret = avcodec_receive_frame(c, frame); - if (ret != 0 && ret != AVERROR(EAGAIN)) { - hal_info("%s: avcodec_send_packet %d\n", __func__, ret); + av_ret = avcodec_receive_frame(c, frame); + if (av_ret != 0 && av_ret != AVERROR(EAGAIN)) { + hal_info("%s: avcodec_send_packet %d\n", __func__, av_ret); }else { gotframe = 1; }