[FFmpeg-devel] patch 1. Correction of loop behaviour in ffpeg.c

Michael Niedermayer michael at niedermayer.cc
Fri Jun 30 03:03:35 EEST 2017


On Wed, Jun 28, 2017 at 03:02:42PM +0300, ffmpeg at a.legko.ru wrote:
> 
> subject: when input sample stops, input thread stops too (withous
> restart), thus, breaking the streaming and loop mode does not affect
> this. touches only multistream (multiprog) mode, when threads are
> used.
> 

>  ffmpeg.c |   27 +++++++++++++++++++++++++++
>  1 file changed, 27 insertions(+)
> 0884edd00a6d3466d157519a0d48763545f44087  0001-add-support-for-samples-looping-threaded-mode-thread.patch
> From d8310311a3c1a1828eacd4b45b31f9a723b5ee2b Mon Sep 17 00:00:00 2001

> From: root <ffmpeg at scil.sinp.msu.ru>

Missing name (unless you do not want to have your name in the Author
field)


> Date: Wed, 28 Jun 2017 14:53:40 +0300
> Subject: [PATCH 1/3] add support for samples looping (threaded mode; thread
>  stops after decoding input)
> 
> ---
>  ffmpeg.c | 27 +++++++++++++++++++++++++++
>  1 file changed, 27 insertions(+)
> 
> diff --git a/ffmpeg.c b/ffmpeg.c
> index a783e6e..2866754 100644
> --- a/ffmpeg.c
> +++ b/ffmpeg.c
> @@ -4013,6 +4013,29 @@ static void free_input_threads(void)
>      }
>  }
>  
> +static int init_input_thread(int i)
> +{
> +    int ret;
> +  
> +    if (nb_input_files == 1)
> +       return 0;
> +

> +    InputFile *f = input_files[i];

mixing declaration and statment


> +    if (f->ctx->pb ? !f->ctx->pb->seekable :
> +       strcmp(f->ctx->iformat->name, "lavfi"))
> +           f->non_blocking = 1;
> +    ret = av_thread_message_queue_alloc(&f->in_thread_queue,
> +           f->thread_queue_size, sizeof(AVPacket));
> +    if (ret < 0)
> +       return ret;
> +    if ((ret = pthread_create(&f->thread, NULL, input_thread, f))) {
> +       av_log(NULL, AV_LOG_ERROR, "pthread_create failed: %s. Try to increase `ulimit -v` or decrease `ulimit -s`.\n", strerror(ret));
> +       av_thread_message_queue_free(&f->in_thread_queue);

> +       return AVERROR(ret);
> +    }
> +return 0;

the indention is inconsistent


> +}
> + 
>  static int init_input_threads(void)
>  {
>      int i, ret;
> @@ -4191,9 +4214,13 @@ static int process_input(int file_index)
>          ifile->eagain = 1;
>          return ret;
>      }
> +
>      if (ret < 0 && ifile->loop) {
>          if ((ret = seek_to_start(ifile, is)) < 0)
>              return ret;
> +#if HAVE_PTHREADS

> +        init_input_thread(file_index);

The function returns an error code which is never used


> +#endif
>          ret = get_input_packet(ifile, &pkt);
>          if (ret == AVERROR(EAGAIN)) {
>              ifile->eagain = 1;
> -- 
> 2.7.4
> 

> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

The worst form of inequality is to try to make unequal things equal.
-- Aristotle
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20170630/c5a55a27/attachment.sig>


More information about the ffmpeg-devel mailing list