diff options
author | Janne Grunau <janne-libav@jannau.net> | 2011-11-10 17:30:33 +0100 |
---|---|---|
committer | Janne Grunau <janne-libav@jannau.net> | 2011-11-22 09:50:33 +0100 |
commit | 0945eddec09d1c2b69643afc70377d86febc0591 (patch) | |
tree | 97bcbf874a3b470c8426e869dc89cdd35b8a1422 /libavcodec/pthread.c | |
parent | 82963f8f046bbe724e6c770a2aaf0290c9915503 (diff) | |
download | ffmpeg-streaming-0945eddec09d1c2b69643afc70377d86febc0591.zip ffmpeg-streaming-0945eddec09d1c2b69643afc70377d86febc0591.tar.gz |
pthread: do not touch has_b_frames
Adding the thread count in frame level multithreading to has_b_frames
as an additional delay causes more problems than it solves.
For example inconsistent behaviour during timestamp calculation in
libavformat.
Thread count and frame level multithreading are both set by the user.
If the additional delay caused by frame level multithreading needs
to be considered in the calling code it has all information to take
it into account.
Should it become necessary to calculate a maximum delay inside
libavcodec it should be exported as its own field and not reusing
an existing field.
Based on a patch by Michael Niedermayer.
Signed-off-by: Janne Grunau <janne-libav@jannau.net>
Diffstat (limited to 'libavcodec/pthread.c')
-rw-r--r-- | libavcodec/pthread.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/libavcodec/pthread.c b/libavcodec/pthread.c index 42b82a5..9c3453f 100644 --- a/libavcodec/pthread.c +++ b/libavcodec/pthread.c @@ -363,8 +363,7 @@ static int update_context_from_thread(AVCodecContext *dst, AVCodecContext *src, } if (for_user) { - dst->coded_frame = src->coded_frame; - dst->has_b_frames += src->thread_count - 1; + dst->coded_frame = src->coded_frame; } else { if (dst->codec->update_thread_context) err = dst->codec->update_thread_context(dst, src); @@ -684,7 +683,6 @@ static void frame_thread_free(AVCodecContext *avctx, int thread_count) av_freep(&fctx->threads); pthread_mutex_destroy(&fctx->buffer_mutex); av_freep(&avctx->thread_opaque); - avctx->has_b_frames -= avctx->thread_count - 1; } static int frame_thread_init(AVCodecContext *avctx) |