From dbedf2aae26c44d3d310831dd1097900d5a539d9 Mon Sep 17 00:00:00 2001
From: Baptiste Coudurier <baptiste.coudurier@gmail.com>
Date: Sun, 22 Jun 2008 01:35:43 +0000
Subject: [PATCH] enable feeder threads

Originally committed as revision 13868 to svn://svn.ffmpeg.org/ffmpeg/trunk
---
 ffmpeg.c                   | 5 +++++
 libavformat/ffmdec.c       | 1 +
 libavformat/ffmenc.c       | 1 +
 tests/libav.regression.ref | 2 +-
 4 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/ffmpeg.c b/ffmpeg.c
index 8cfa7b348ed..e20ac1141a3 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -449,6 +449,11 @@ static int read_ffserver_streams(AVFormatContext *s, const char *filename)
         else if (st->codec->codec_type == CODEC_TYPE_VIDEO && video_stream_copy)
             st->stream_copy = 1;
 
+        if(!st->codec->thread_count)
+            st->codec->thread_count = 1;
+        if(st->codec->thread_count>1)
+            avcodec_thread_init(st->codec, st->codec->thread_count);
+
         if(st->codec->flags & CODEC_FLAG_BITEXACT)
             nopts = 1;
     }
diff --git a/libavformat/ffmdec.c b/libavformat/ffmdec.c
index 37a60a55e56..8d0a39bc238 100644
--- a/libavformat/ffmdec.c
+++ b/libavformat/ffmdec.c
@@ -310,6 +310,7 @@ static int ffm_read_header(AVFormatContext *s, AVFormatParameters *ap)
             codec->frame_skip_cmp = get_be32(pb);
             codec->rc_buffer_aggressivity = av_int2dbl(get_be64(pb));
             codec->codec_tag = get_be32(pb);
+            codec->thread_count = get_byte(pb);
             break;
         case CODEC_TYPE_AUDIO:
             codec->sample_rate = get_be32(pb);
diff --git a/libavformat/ffmenc.c b/libavformat/ffmenc.c
index 3b7c3548413..1a38f9937fe 100644
--- a/libavformat/ffmenc.c
+++ b/libavformat/ffmenc.c
@@ -158,6 +158,7 @@ static int ffm_write_header(AVFormatContext *s)
             put_be32(pb, codec->frame_skip_cmp);
             put_be64(pb, av_dbl2int(codec->rc_buffer_aggressivity));
             put_be32(pb, codec->codec_tag);
+            put_byte(pb, codec->thread_count);
             break;
         case CODEC_TYPE_AUDIO:
             put_be32(pb, codec->sample_rate);
diff --git a/tests/libav.regression.ref b/tests/libav.regression.ref
index abaa82ac81c..5e4d0b46a14 100644
--- a/tests/libav.regression.ref
+++ b/tests/libav.regression.ref
@@ -15,7 +15,7 @@ bdb7484c68db722f66ba1630cf79844c *./tests/data/b-libav.mpg
 d6fdeb9f7083cc827f9510c6c4517dc0 *./tests/data/b-libav.swf
 335771 ./tests/data/b-libav.swf
 ./tests/data/b-libav.swf CRC=0xe14e8847
-bbdf0d67ad1035d59adc3c4cd245f3a9 *./tests/data/b-libav.ffm
+102427263dc342610721d5754fac4d87 *./tests/data/b-libav.ffm
 380928 ./tests/data/b-libav.ffm
 ./tests/data/b-libav.ffm CRC=0x2b71a386
 f8ad5bd78f4d012a8ce9570aa395ac54 *./tests/data/b-libav.flv
-- 
GitLab