By observation it did not seem to handle prev_frame_num > frame_num.
This does not affect any files I have.
(cherry picked from commit 43c0092a80f8212cbb783260bafa157f7b85126e)
* ffmpeg-mt/master:
Release unused pictures even when not calling ff_h264_frame_start()
h264: Fix decoding race condition with PAFF
h264: cosmetic whitespace change
Duplicate Fix REBASE_PICTURE with h.264
Not pulled Update test scripts to use ffmpeg instead of ffmpeg_g
Duplicate Fix ffmpeg-mt fixme in h264
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
The thread_type API allows you to request only FF_THREAD_FRAME (instead of
FRAME | SLICE), but it was being ignored.
We don't implement both of them at the same time, so there isn't an effect
on current codecs, except that you can request no kinds of threading now
(a bit useless).
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
* ffmpeg-mt/master:
DUPLICATE mingw32 compilation after 'unbreak avcodec_thread_init'
pthread: validate_thread_parameters() ignored slice-threading being intentionally off
DUPLICATE Remove unnecessary parameter from ff_thread_init() and fix behavior
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
thread_count passed to ff_thread_init() is only used to set AVCodecContext.
thread_count, and can be removed. Instead move it to the legacy implementation
of avcodec_thread_init().
This also fixes the problem that calling avcodec_thread_init() with pthreads
enabled did not set it since ff1efc524c.
Signed-off-by: Janne Grunau <janne-libav@jannau.net>
For intra codecs, ff_thread_finish_setup() is called before decoding starts
automatically. However, get_buffer can only be used before it's called, so
adding this requirement broke frame threading for them. Fixed by moving the
call until after get_buffer is finished.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit ad9791e12b)
For intra codecs, ff_thread_finish_setup() is called before decoding starts
automatically. However, get_buffer can only be used before it's called, so
adding this requirement broke frame threading for them. Fixed by moving the
call until after get_buffer is finished.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
Decode times for big_buck_bunny_720p_stereo:
1 thread:
real 1m14.227s
user 1m13.104s
sys 0m1.108s
2 threads: (33% faster)
real 0m49.329s
user 1m33.735s
sys 0m1.834s
3 threads: (44% faster)
real 0m41.593s
user 1m44.884s
sys 0m1.967s
(cherry picked from commit d23845f311)
As a side effect of the last commit, avcodec_open() now calls it automatically,
so there is no longer any need for clients to call it.
Instead they should set AVCodecContext.thread_count.
avcodec_thread_free() is deprecated, and will be removed from avcodec.h at the
next MAJOR libavcodec bump.
Rename the functions to ff_thread_init/free, since they are now internal.
Wrappers are provided to maintain API compatibility.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit c0b102ca03)
Decode times for big_buck_bunny_720p_stereo:
1 thread:
real 1m14.227s
user 1m13.104s
sys 0m1.108s
2 threads: (33% faster)
real 0m49.329s
user 1m33.735s
sys 0m1.834s
3 threads: (44% faster)
real 0m41.593s
user 1m44.884s
sys 0m1.967s
As a side effect of the last commit, avcodec_open() now calls it automatically,
so there is no longer any need for clients to call it.
Instead they should set AVCodecContext.thread_count.
avcodec_thread_free() is deprecated, and will be removed from avcodec.h at the
next MAJOR libavcodec bump.
Rename the functions to ff_thread_init/free, since they are now internal.
Wrappers are provided to maintain API compatibility.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
No behavior change; this makes DTS reliable with the next patch.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit 6b47495397)
svq3 still doesn't support multithreading, but it's simpler for clients if
they can enable threading for all codecs by default.
Originally committed as revision 26015 to svn://svn.ffmpeg.org/ffmpeg/trunk
The rm demuxer has timestamp bugs, so this test is sensitive to changes in
timestamp correction. The previous commit did not make output any better or worse
on this test, just different.
See https://roundup.ffmpeg.org/issue2288 for details.
Originally committed as revision 25432 to svn://svn.ffmpeg.org/ffmpeg/trunk
yadif.c:226: error: can't find a register in class 'GENERAL_REGS' while reloading 'asm'
yadif.c:220: error: 'asm' operand has impossible constraints
Patch by Alexander Strange <astrange ithinksw com>.
Originally committed as revision 25251 to svn://svn.ffmpeg.org/ffmpeg/trunk
Because DTS values aren't passed through decoders, they tend to be
inaccurate if decoder delay doesn't match what was expected by the encoder.
In particular this improves timestamps for H.264 without num_reorder_frames
set and with -strict 1, which causes DTS to be up to 16 frames ahead of the
picture.
Note that this doesn't really improve any file with very broken PTS/DTS,
since PTS isn't much more accurate in these.
Originally committed as revision 25242 to svn://svn.ffmpeg.org/ffmpeg/trunk
Darwin compilers default to PIC on, so -mdynamic-no-pic (which disables it
again) needs to be added to cflags before enable pic is checked.
Fixes compilation without --enable-shared at least the 10.6 system compiler
for x86-32.
Fixes speed regression on all darwin arches except x86-64.
Originally committed as revision 22730 to svn://svn.ffmpeg.org/ffmpeg/trunk
Fixes:
h264.h:1222:38: warning: initialization from incompatible pointer type
h264.h:1299:38: warning: initialization from incompatible pointer type
h264.h:1314:42: warning: initialization from incompatible pointer type
Originally committed as revision 21814 to svn://svn.ffmpeg.org/ffmpeg/trunk
Fixes:
h264.h: In function 'fill_filter_caches':
h264.h:1216:73: warning: integer overflow in expression
h264.h:1307:81: warning: integer overflow in expression
Originally committed as revision 21813 to svn://svn.ffmpeg.org/ffmpeg/trunk
Fixes build with --disable-encoders --enable-encoder=snow.
This fixes MPlayer build with --disable-mencoder.
Originally committed as revision 21259 to svn://svn.ffmpeg.org/ffmpeg/trunk
Since BGR24 is decoded as BGR32, fill its alpha channel with 255
using the appropriate predictors.
Originally committed as revision 21211 to svn://svn.ffmpeg.org/ffmpeg/trunk
Fixes warnings:
libavcodec/mpegvideo_enc.c:574: warning: implicit declaration of function
'ff_match_2uint16'
libavcodec/ituh263enc.c:143: warning: implicit declaration of function
'ff_match_2uint16'
libavcodec/svq1enc.c:97: warning: implicit declaration of function
'ff_match_2uint16'
Originally committed as revision 21133 to svn://svn.ffmpeg.org/ffmpeg/trunk
-mdynamic-no-pic is required for it, but it was only
added to CFLAGS and the check only used ASFLAGS.
Originally committed as revision 19614 to svn://svn.ffmpeg.org/ffmpeg/trunk
Files with invalid VUI are now rejected like
other invalid SPS are.
Fixes issue1231.
Originally committed as revision 19335 to svn://svn.ffmpeg.org/ffmpeg/trunk
Before, the decoder could interpret a corrupt frame
as a NAL_DPA and NAL_DPC, and then start decoding
even if decode_slice_header() returned an error.
This frequently caused crashes.
Fixes issue1228, issue1229, and partially issue1238.
Originally committed as revision 19328 to svn://svn.ffmpeg.org/ffmpeg/trunk
The threads' contexts and rbsp_buffers were not freed at the end
of decoding.
Fixes issue 1581
Originally committed as revision 19207 to svn://svn.ffmpeg.org/ffmpeg/trunk
Reading above src[-2] isn't safe, so move loads and palignr ahead
3 pixels to load starting at the first pixel actually used.
Fixes issue941.
Originally committed as revision 18999 to svn://svn.ffmpeg.org/ffmpeg/trunk
This fixes linking shared libavcodec, since the linker doesn't allow
text relocations in shared libraries under Darwin/x86_64.
Based on a patch by Art Clarke (aclarke xuggle com)
Originally committed as revision 17197 to svn://svn.ffmpeg.org/ffmpeg/trunk
Fixes valgrind uninitialized value warnings at the end of decoding H.264
frames.
Originally committed as revision 16230 to svn://svn.ffmpeg.org/ffmpeg/trunk
extradata.
Fixes valgrind invalid read warnings during H.264 extradata parsing.
Originally committed as revision 16229 to svn://svn.ffmpeg.org/ffmpeg/trunk
This makes debug output much easier to read when the
same codec is open more than once.
Originally committed as revision 14237 to svn://svn.ffmpeg.org/ffmpeg/trunk
Make sure we don't try to set them if that's the case.
This lets dct-test and fft-test build with --disable-mmx on x86, but not yet on ARM.
Originally committed as revision 13957 to svn://svn.ffmpeg.org/ffmpeg/trunk