Diego Biurrun
990e2f3555
avcodec: Suppress deprecation warnings from DTG code scheduled for removal
11 years ago
Michael Niedermayer
e36916a63f
avcodec/pthread_frame: fix setting hwaccel with threads and get_format()
...
Fixes assertion failure with vdpau and vlc
Fixes Ticket3742
Tested-by: oromit
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
11 years ago
Michael Niedermayer
ab1e191720
avcodec/pthread_frame: Use av_mallocz_array()
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
11 years ago
Dale Curtis
ca2fd25988
Fix compilation errors when deprecated features are disabled.
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
11 years ago
Michael Niedermayer
55fe1582cb
avcodec/pthread_frame: remove unused variable
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
11 years ago
Anton Khirnov
9929b3564c
pthread_frame: simplify the code by using new AVPacket API
...
This also handles side data properly.
11 years ago
Anton Khirnov
dd2d3b766b
lavc: Add hwaccel private data and init/uninit callbacks
11 years ago
wm4
f6774f905f
mpegvideo: operate with pointers to AVFrames instead of whole structs
...
The most interesting parts are initialization in ff_MPV_common_init() and
uninitialization in ff_MPV_common_end().
ff_mpeg_unref_picture and ff_thread_release_buffer have additional NULL
checks for Picture.f, because these functions can be called on
uninitialized or partially initialized Pictures.
NULL pointer checks are added to ff_thread_release_buffer() stub function.
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
11 years ago
Michael Niedermayer
f87b3d5523
avcodec/pthread_frame: fix missing unlock on error
...
Fixes CID1197057
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
11 years ago
Nicolas George
ea6825fd09
lavc/pthread: copy packet side data.
11 years ago
Anton Khirnov
d1f9563d50
pthread_frame: flush all threads on flush, not just the first one
...
avcodec_flush_buffers() must release all internally held references
according to its documentation, for which all the threads need to be
flushed.
CC:libav-stable@libav.org
Bug-Id: vlc/9665
11 years ago
Anton Khirnov
9cbf2d78f0
pthread_frame: unref decoded frames on failure
...
This is similar to what the non-threaded code already does.
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC:libav-stable@libav.org
11 years ago
Michael Niedermayer
11679e1b90
avcodec/pthread_frame: Fix memleak of AVCodecContext on error
...
Fixes CID1135767
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
11 years ago
Anton Khirnov
d351ef47d0
pthread_frame: use the AVFrame API properly.
...
Remove the extended_data workaround, all decoders should now handle this
properly.
11 years ago
Hendrik Leppkes
841c0aafa5
avcodec/pthread: check packet buffer allocation
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
11 years ago
Anton Khirnov
a553c6a347
lavc: use buf[0] instead of data[0] in checks whether a frame is allocated
...
data[0] may be NULL for valid frames with hwaccel pixel formats.
11 years ago
Anton Khirnov
da6506c607
lavc: move AVCodecContext.pkt to AVCodecInternal
...
It's a private field, not meant to be accessed from outside lavc.
11 years ago
Anton Khirnov
38ecc3702d
pthread: store thread contexts in AVCodecInternal instead of AVCodecContext
...
It's a private field, it should not be visible to callers.
Deprecate AVCodecContext.thread_opaque
11 years ago
Anton Khirnov
cc14ee03a7
lavc: split slice and frame threading functions into separate files
11 years ago
Anton Khirnov
5cd6513f5b
pthread: drop avcodec_ prefixes from static functions
11 years ago
Anton Khirnov
a1504eee41
lavc: deprecate AVCodecContext.debug_mv
...
It has been unused since 37045e4229
.
11 years ago
Mickaël Raulet
e146c326b9
avcodec/pthread: add wpp api
...
cherry picked from commit c7765f3295fe7dc0653161c6a3d3e1778b76ee67
cherry picked from commit 0008c4979fc1d1bc24d4d2c791715f6dd017563c
Conflicts:
libavcodec/utils.c
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
11 years ago
Ben Jackson
5152196b2b
pthread: Avoid spurious wakeups
...
pthread_wait_cond can wake up unexpectedly (Wikipedia: Spurious_wakeup).
The FF_THREAD_SLICE thread mechanism could spontaneously execute
jobs or allow the caller of avctx->execute to return before all
jobs were complete.
Test both cases to ensure the wakeup is real.
Signed-off-by: Ben Jackson <ben@ben.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
11 years ago
Derek Buitenhuis
eb90a2091f
pthread: Fix deadlock during thread initialization
...
Sometimes, if pthread_create() failed, then pthread_cond_wait() could
accidentally be called in the worker threads after the uninit function
had already called pthread_cond_broadcast(), leading to a deadlock.
Don't call pthread_cond_wait() if c->done is set.
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
11 years ago
Diego Biurrun
7950e519bb
Disable deprecation warnings for cases where a replacement is available
12 years ago
Sean McGovern
50612484e0
pthread: Rename thread_init to avoid symbol collision
...
The AIX threads library exposes a function with the same name.
Signed-off-by: Martin Storsjö <martin@martin.st>
12 years ago
Carl Eugen Hoyos
674d8a9629
Rename thread_init() in libavcodec and libavfilter as library_thread_init().
...
The aix header sys/thread.h contains a definition for thread_init().
12 years ago
Paul B Mahol
d5f7f1fef1
audio frame multi-threaded decoding
...
Signed-off-by: Paul B Mahol <onemda@gmail.com>
12 years ago
Dave Yeo
e615a77799
os2threads: move from lavc to compat/
...
For useage in other places besides lavc. Needed after commit
90f9a5830b
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Michael Niedermayer
4cf7b87551
av_cpu_count: factorize "detected %d logical cores" message
...
Also print the message just once
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Michael Niedermayer
42bb3e4db6
avcodec: remove ff_get_logical_cpus()
...
This simplifies the code
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Anton Khirnov
2a6eaeaa85
Move get_logical_cpus() from lavc/pthread to lavu/cpu.
...
It will be useful in lavfi, and could conceivably be useful to the user
applications as well.
12 years ago
Anton Khirnov
90f9a5830b
w32pthreads: move from lavc to compat/
...
It will be used in other places than lavc.
12 years ago
Anton Khirnov
db8e336e5f
pthread: reindent
12 years ago
Anton Khirnov
30e256430e
lavc/pthread: remove obsolete checks
...
Those were useful when avcodec_thread_init() was a public functions. It
was deprecated and removed some time ago, so those checks are not needed
anymore.
12 years ago
Michael Niedermayer
ab074ab9fe
avcodec/pthread: fix ffv1 with 2 threads
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Michael Niedermayer
a0c0900e47
ffv1dec: Support frame threading with gop > 1
...
This is about 20-30% faster than slice threading
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Michael Niedermayer
8f0db04b08
avcodec/pthread: use THREAD_SAFE_CALLBACKS() to simplifx more code
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Michael Niedermayer
94b3a666fa
avcodec/pthread: Make sure ff_thread_finish_setup() conditions match
...
Prevents warning from being shown due to multiple calls.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Janne Grunau
94660c3524
threads: always call thread_finish_setup for intra codecs
...
Intra codecs do not need an update_thread_context() function and never
call ff_thread_finish_setup(). They rely on ff_thread_get_buffer()
calling it. So call it even if the get_buffer2 function pointer is
avcodec_default_get_buffer2 and it has not been called before.
12 years ago
Reimar Döffinger
c10d498bfd
Add thread-safe wrapper for get_format().
...
Just like get_buffer, get_format should not be called from a different
thread if thread_safe_callbacks is not set.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
12 years ago
Janne Grunau
05fa79b844
hwaccel: fix use with frame based multithreading
...
Allows use of AVHWAccel based decoders with frame based multithreading.
The decoders will be forced into an non-concurrent mode by delaying
ff_thread_finish_setup() calls after decoding of the current frame
is finished.
This wastes memory by unnecessarily using multiple threads and thus
copies of the decoder context but allows seamless switching between
hardware accelerated and frame threaded software decoding when the
hardware decoder does not support the stream.
12 years ago
Hendrik Leppkes
c71c80f53b
pthread: unref already decoded frames when flushing the decoder
...
Signed-off-by: Anton Khirnov <anton@khirnov.net>
12 years ago
Hendrik Leppkes
97f8c6e147
pthread: update all get_buffer checks for get_buffer2
...
This restores the performance of simple frame-threaded codecs back to
their pre-merge levels.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
12 years ago
Clément Bœsch
1ec94b0f06
lavc: factorize ff_{thread_,re,}get_buffer error messages.
...
Coccinelle profile used:
@@
expression r, ctx, f, loglevel, str, flags;
@@
-if ((r = ff_get_buffer(ctx, f, flags)) < 0) {
- av_log(ctx, loglevel, str);
- return r;
-}
+if ((r = ff_get_buffer(ctx, f, flags)) < 0)
+ return r;
@@
expression r, ctx, f, loglevel, str;
@@
-if ((r = ff_reget_buffer(ctx, f)) < 0) {
- av_log(ctx, loglevel, str);
- return r;
-}
+if ((r = ff_reget_buffer(ctx, f)) < 0)
+ return r;
@@
expression r, ctx, f, loglevel, str, flags;
@@
-if ((r = ff_thread_get_buffer(ctx, f, flags)) < 0) {
- av_log(ctx, loglevel, str);
- return r;
-}
+if ((r = ff_thread_get_buffer(ctx, f, flags)) < 0)
+ return r;
...along with some manual patches for the remaining ones.
12 years ago
Michael Niedermayer
6b6b0e9dae
pthread: fix unused variable warning
12 years ago
Anton Khirnov
fce68c9355
pthread: unref the decoded but not returned frames on close.
...
Fixes memleaks when frame mt is used and the decoder is not flushed at
the end.
12 years ago
Anton Khirnov
759001c534
lavc decoders: work with refcounted frames.
12 years ago
Anton Khirnov
1a5e913016
pthread: avoid copying input packets when possible.
12 years ago
Anton Khirnov
e6b1c3bbe7
pthread: make ff_thread_release_buffer idempotent.
...
I.e. don't do anything on already released frames.
12 years ago