summaryrefslogtreecommitdiff
path: root/libavcodec/frame_thread_encoder.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-08-29 04:26:36 +0200
committerMichael Niedermayer <michaelni@gmx.at>2012-08-29 04:26:36 +0200
commit097a909ea126b165809b43227e74d99c14f783cc (patch)
tree6403f53819927c83cac3770247bdcc1a16be2bca /libavcodec/frame_thread_encoder.c
parent028b6d2b5cf6a6dc593921c4ceab60a747eccf71 (diff)
frame_thread_encoder: pass private options
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/frame_thread_encoder.c')
-rw-r--r--libavcodec/frame_thread_encoder.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/libavcodec/frame_thread_encoder.c b/libavcodec/frame_thread_encoder.c
index 40213cde2f..c584e0b36a 100644
--- a/libavcodec/frame_thread_encoder.c
+++ b/libavcodec/frame_thread_encoder.c
@@ -113,7 +113,7 @@ end:
return NULL;
}
-int ff_frame_thread_encoder_init(AVCodecContext *avctx){
+int ff_frame_thread_encoder_init(AVCodecContext *avctx, AVDictionary *options){
int i=0;
ThreadContext *c;
@@ -151,6 +151,7 @@ int ff_frame_thread_encoder_init(AVCodecContext *avctx){
pthread_cond_init(&c->finished_task_cond, NULL);
for(i=0; i<avctx->thread_count ; i++){
+ AVDictionary *tmp = NULL;
AVCodecContext *thread_avctx = avcodec_alloc_context3(avctx->codec);
if(!thread_avctx)
goto fail;
@@ -165,10 +166,13 @@ int ff_frame_thread_encoder_init(AVCodecContext *avctx){
thread_avctx->thread_count = 1;
thread_avctx->active_thread_type &= ~FF_THREAD_FRAME;
- //FIXME pass private options to encoder
- if(avcodec_open2(thread_avctx, avctx->codec, NULL) < 0) {
+ av_dict_copy(&tmp, options, 0);
+ av_dict_set(&tmp, "threads", "1", 0);
+ if(avcodec_open2(thread_avctx, avctx->codec, &tmp) < 0) {
+ av_dict_free(&tmp);
goto fail;
}
+ av_dict_free(&tmp);
av_assert0(!thread_avctx->internal->frame_thread_encoder);
thread_avctx->internal->frame_thread_encoder = c;
if(pthread_create(&c->worker[i], NULL, worker, thread_avctx)) {