aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2011-11-09 17:26:19 +0100
committerMichael Niedermayer <michaelni@gmx.at>2011-11-09 17:47:10 +0100
commit26ae9a5d7c448a3eb42641b546ee8d585ab716e6 (patch)
tree7a8283b64eeea55ce979160270543824ba5cadc6
parent367468f1482541d1e17ce3fdf1d496746a2de21b (diff)
downloadffmpeg-26ae9a5d7c448a3eb42641b546ee8d585ab716e6.tar.gz
pthreads: drop has_b_frames mangling, its buggy in many many ways,
not to mention race conditions and that its used for stream copy, used to determine IPB type by applications and other things. Fixes various frame drop/timestamp issues with frame multithreading. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/pthread.c2
-rw-r--r--libavformat/utils.c5
2 files changed, 0 insertions, 7 deletions
diff --git a/libavcodec/pthread.c b/libavcodec/pthread.c
index 96db9aec9c..4a44cea68f 100644
--- a/libavcodec/pthread.c
+++ b/libavcodec/pthread.c
@@ -364,7 +364,6 @@ 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;
} else {
if (dst->codec->update_thread_context)
err = dst->codec->update_thread_context(dst, src);
@@ -686,7 +685,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)
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 1d84cc6710..c7916dc407 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -1004,11 +1004,6 @@ static void compute_pkt_fields(AVFormatContext *s, AVStream *st,
delay= st->codec->has_b_frames;
presentation_delayed = 0;
- // ignore delay caused by frame threading so that the mpeg2-without-dts
- // warning will not trigger
- if (delay && st->codec->active_thread_type&FF_THREAD_FRAME)
- delay -= st->codec->thread_count-1;
-
/* XXX: need has_b_frame, but cannot get it if the codec is
not initialized */
if (delay &&