diff options
author | Christophe Gisquet <christophe.gisquet@gmail.com> | 2014-06-13 00:21:44 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-08-19 13:47:18 +0200 |
commit | 1467780772d6f6fd72e882b5b2677ae9acbc1297 (patch) | |
tree | f64da167bc912befa830360cb6a058e4ac64cd62 /libavcodec/frame_thread_encoder.c | |
parent | 6380f2e3670a8cfc29b9b02da0f2be0c537315f8 (diff) | |
download | ffmpeg-1467780772d6f6fd72e882b5b2677ae9acbc1297.tar.gz |
huffyuvenc: add a non-deterministic option
Not actually used in huffyuvenc, but rather in setting the frame
threading.
Example for some files:
context=0: 851974 27226 1137281
context=1,ND=0: 471819 22604 972351
context=1,ND=1: 472875 22673 972582
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/frame_thread_encoder.c')
-rw-r--r-- | libavcodec/frame_thread_encoder.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/libavcodec/frame_thread_encoder.c b/libavcodec/frame_thread_encoder.c index 9e176985ee..6eae8b5733 100644 --- a/libavcodec/frame_thread_encoder.c +++ b/libavcodec/frame_thread_encoder.c @@ -142,8 +142,16 @@ int ff_frame_thread_encoder_init(AVCodecContext *avctx, AVDictionary *options){ if (avctx->codec_id == AV_CODEC_ID_HUFFYUV || avctx->codec_id == AV_CODEC_ID_FFVHUFF) { + int warn = 0; + if (avctx->flags & CODEC_FLAG_PASS1) + warn = 1; + else if(avctx->context_model > 0) { + AVDictionaryEntry *t = av_dict_get(options, "non_deterministic", + NULL, AV_DICT_MATCH_CASE); + warn = !t || !t->value || !atoi(t->value) ? 1 : 0; + } // huffyuv does not support these with multiple frame threads currently - if (avctx->context_model > 0 || (avctx->flags & CODEC_FLAG_PASS1)) { + if (warn) { av_log(avctx, AV_LOG_WARNING, "Forcing thread count to 1 for huffyuv encoding with first pass or context 1\n"); avctx->thread_count = 1; |