Merge remote-tracking branch 'qatar/master'
* qatar/master:
changelog: misc typo and wording fixes
H.264: add filter_mb_fast support for >8-bit decoding
doc: Remove outdated comments about gcc 2.95 and gcc 3.3 support.
lls: use av_lfg instead of rand() in test program
build: remove unnecessary dependency on libs from 'all' target
H.264: avoid redundant alpha/beta calculations in loopfilter
H.264: optimize intra/inter loopfilter decision
mpegts: fix Continuity Counter error detection
build: remove unnecessary FFLDFLAGS variable
vp8/mt: flush worker thread, not application thread context, on seek.
mt: proper locking around release_buffer calls.
DxVA2: unbreak build after [657ccb5ac7
]
hwaccel: unbreak build
Eliminate FF_COMMON_FRAME macro.
Conflicts:
Changelog
Makefile
doc/developer.texi
libavcodec/avcodec.h
libavcodec/h264.c
libavcodec/mpeg4videodec.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
@@ -408,9 +408,10 @@ static void release_delayed_buffers(PerThreadContext *p)
|
||||
FrameThreadContext *fctx = p->parent;
|
||||
|
||||
while (p->num_released_buffers > 0) {
|
||||
AVFrame *f = &p->released_buffers[--p->num_released_buffers];
|
||||
AVFrame *f;
|
||||
|
||||
pthread_mutex_lock(&fctx->buffer_mutex);
|
||||
f = &p->released_buffers[--p->num_released_buffers];
|
||||
free_progress(f);
|
||||
f->thread_opaque = NULL;
|
||||
|
||||
@@ -746,9 +747,12 @@ void ff_thread_flush(AVCodecContext *avctx)
|
||||
if (!avctx->thread_opaque) return;
|
||||
|
||||
park_frame_worker_threads(fctx, avctx->thread_count);
|
||||
|
||||
if (fctx->prev_thread)
|
||||
update_context_from_thread(fctx->threads->avctx, fctx->prev_thread->avctx, 0);
|
||||
if (fctx->prev_thread) {
|
||||
if (fctx->prev_thread != &fctx->threads[0])
|
||||
update_context_from_thread(fctx->threads[0].avctx, fctx->prev_thread->avctx, 0);
|
||||
if (avctx->codec->flush)
|
||||
avctx->codec->flush(fctx->threads[0].avctx);
|
||||
}
|
||||
|
||||
fctx->next_decoding = fctx->next_finished = 0;
|
||||
fctx->delaying = 1;
|
||||
@@ -836,6 +840,7 @@ int ff_thread_get_buffer(AVCodecContext *avctx, AVFrame *f)
|
||||
void ff_thread_release_buffer(AVCodecContext *avctx, AVFrame *f)
|
||||
{
|
||||
PerThreadContext *p = avctx->thread_opaque;
|
||||
FrameThreadContext *fctx;
|
||||
|
||||
if (!(avctx->active_thread_type&FF_THREAD_FRAME)) {
|
||||
avctx->release_buffer(avctx, f);
|
||||
@@ -851,7 +856,10 @@ void ff_thread_release_buffer(AVCodecContext *avctx, AVFrame *f)
|
||||
av_log(avctx, AV_LOG_DEBUG, "thread_release_buffer called on pic %p, %d buffers used\n",
|
||||
f, f->owner->internal_buffer_count);
|
||||
|
||||
fctx = p->parent;
|
||||
pthread_mutex_lock(&fctx->buffer_mutex);
|
||||
p->released_buffers[p->num_released_buffers++] = *f;
|
||||
pthread_mutex_unlock(&fctx->buffer_mutex);
|
||||
memset(f->data, 0, sizeof(f->data));
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user