[FFmpeg-cvslog] fftools/ffmpeg: eliminate need_output()
Anton Khirnov
git at videolan.org
Mon May 8 11:49:24 EEST 2023
ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Sat Apr 29 22:46:14 2023 +0200| [f5cfb2c5dfbc949a7ed2227f868f55834d20c28b] | committer: Anton Khirnov
fftools/ffmpeg: eliminate need_output()
Replace it by simply calling choose_output() earlier.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f5cfb2c5dfbc949a7ed2227f868f55834d20c28b
---
fftools/ffmpeg.c | 38 ++++++++++----------------------------
1 file changed, 10 insertions(+), 28 deletions(-)
diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
index d28536deb5..b1914822b4 100644
--- a/fftools/ffmpeg.c
+++ b/fftools/ffmpeg.c
@@ -1667,19 +1667,6 @@ static int transcode_init(void)
return 0;
}
-/* Return 1 if there remain streams where more output is wanted, 0 otherwise. */
-static int need_output(void)
-{
- for (OutputStream *ost = ost_iter(NULL); ost; ost = ost_iter(ost)) {
- if (ost->finished)
- continue;
-
- return 1;
- }
-
- return 0;
-}
-
/**
* Select the output stream to process.
*
@@ -2044,22 +2031,11 @@ discard_packet:
*
* @return 0 for success, <0 for error
*/
-static int transcode_step(void)
+static int transcode_step(OutputStream *ost)
{
- OutputStream *ost;
InputStream *ist = NULL;
int ret;
- ret = choose_output(&ost);
- if (ret == AVERROR(EAGAIN)) {
- reset_eagain();
- av_usleep(10000);
- return 0;
- } else if (ret < 0) {
- av_log(NULL, AV_LOG_VERBOSE, "No more inputs to read from, finishing.\n");
- return AVERROR_EOF;
- }
-
if (ost->filter && !ost->filter->graph->graph) {
if (ifilter_has_all_input_formats(ost->filter->graph)) {
ret = configure_filtergraph(ost->filter->graph);
@@ -2126,6 +2102,7 @@ static int transcode(void)
timer_start = av_gettime_relative();
while (!received_sigterm) {
+ OutputStream *ost;
int64_t cur_time= av_gettime_relative();
/* if 'q' pressed, exits */
@@ -2133,13 +2110,18 @@ static int transcode(void)
if (check_keyboard_interaction(cur_time) < 0)
break;
- /* check if there's any stream where output is still needed */
- if (!need_output()) {
+ ret = choose_output(&ost);
+ if (ret == AVERROR(EAGAIN)) {
+ reset_eagain();
+ av_usleep(10000);
+ continue;
+ } else if (ret < 0) {
av_log(NULL, AV_LOG_VERBOSE, "No more output streams to write to, finishing.\n");
+ ret = 0;
break;
}
- ret = transcode_step();
+ ret = transcode_step(ost);
if (ret < 0 && ret != AVERROR_EOF) {
av_log(NULL, AV_LOG_ERROR, "Error while filtering: %s\n", av_err2str(ret));
break;
More information about the ffmpeg-cvslog
mailing list