Commit Graph

61 Commits

Author SHA1 Message Date
Ronald S. Bultje
c39059bea3 h264: Fix direct temporal mvs for bottom-field-first poc order
Such files can be created using the --bff x264 option.

Sample-Id: h264_direct_temporal_mvs_bff.mkv
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2014-07-20 23:32:13 +01:00
Luca Barbato
2db953f846 h264: K&R formatting cosmetics
Signed-off-by: Diego Biurrun <diego@biurrun.de>
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2014-07-17 03:05:24 -07:00
Diego Biurrun
a11ef610ee h264: Remove some commented-out, broken cruft 2014-07-16 12:26:34 -07:00
Vittorio Giovara
d24e9a99a4 h264 does not depend on mpegvideo any more 2014-03-16 23:05:47 +01:00
Vittorio Giovara
e0c16e4e32 mpegvideo: move mpegvideo formats-related defines to mpegutils.h 2014-03-16 23:04:41 +01:00
Vittorio Giovara
9b749c8274 h264: move relevant fields from Picture to H264Picture 2014-03-16 23:01:00 +01:00
Diego Biurrun
2a61592573 avcodec: Remove some commented-out debug cruft 2013-08-20 19:59:50 +02:00
Anton Khirnov
7bece9b22f h264: add a parameter to the FRAME_MBAFF macro.
This way it does not look like a constant.
2013-03-21 10:20:39 +01:00
Anton Khirnov
759001c534 lavc decoders: work with refcounted frames. 2013-03-08 07:38:30 +01:00
Diego Biurrun
c242bbd8b6 Remove unnecessary dsputil.h #includes 2013-02-26 00:51:34 +01:00
Anton Khirnov
2c54155407 h264: deMpegEncContextize
Most of the changes are just trivial are just trivial replacements of
fields from MpegEncContext with equivalent fields in H264Context.
Everything in h264* other than h264.c are those trivial changes.

The nontrivial parts are:
1) extracting a simplified version of the frame management code from
   mpegvideo.c. We don't need last/next_picture anymore, since h264 uses
   its own more complex system already and those were set only to appease
   the mpegvideo parts.
2) some tables that need to be allocated/freed in appropriate places.
3) hwaccels -- mostly trivial replacements.
   for dxva, the draw_horiz_band() call is moved from
   ff_dxva2_common_end_frame() to per-codec end_frame() callbacks,
   because it's now different for h264 and MpegEncContext-based
   decoders.
4) svq3 -- it does not use h264 complex reference system, so I just
   added some very simplistic frame management instead and dropped the
   use of ff_h264_frame_start(). Because of this I also had to move some
   initialization code to svq3.

Additional fixes for chroma format and bit depth changes by
Janne Grunau <janne-libav@jannau.net>

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2013-02-15 16:35:16 +01:00
Diego Biurrun
511cf612ac miscellaneous typo fixes 2012-12-21 00:18:34 +01:00
Michael Niedermayer
ed2d7d5868 ff_h264_direct_ref_list_init: fix B slice check.
Fixes null pointer dereference.

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
2012-12-18 19:44:22 +01:00
Janne Grunau
73ad2c2fa7 h264: increase dist_scale_factor for up to 32 references
Compute dist_scale_factor_field only for MBAFF since that is the only
case in which it is used.
2012-12-18 19:36:58 +01:00
Michael Niedermayer
c9aab8a123 h264: use mbaff ref indices in fill_colmap() only for mbaff references
Prevents writing beyond array bounds.

Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2012-12-18 11:02:23 +01:00
Michael Niedermayer
758ec11153 h264: Fix invalid interlaced/progressive MB combinations for direct mode prediction.
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2012-03-13 10:04:23 -07:00
Diego Biurrun
324deaa268 Replace AVFrame pointer type punning by proper struct member assignments. 2012-03-01 23:11:13 +01:00
Diego Biurrun
47c0ac96aa Replace AVFrame pointer casts by proper struct member accesses. 2012-03-01 23:11:11 +01:00
Steven Walters
27237d524e w32threads: support for frame multithreading
Replace our incomplete w32threads implementation with x264's pthreads
w32threads wrapper.
Relicensed to LGPL with kind permission by Pegasys Inc.

Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2011-10-16 21:45:16 +02:00
Diego Biurrun
95a06eb4d5 Fix assert() calls that need updates after FF_COMMON_FRAME macro elimination.
This fixes build failures with -DDEBUG in CPPFLAGS.
2011-09-21 09:57:32 +02:00
Diego Biurrun
657ccb5ac7 Eliminate FF_COMMON_FRAME macro.
FF_COMMON_FRAME holds the contents of the AVFrame structure and is also copied
to struct Picture.  Replace by an embedded AVFrame structure in struct Picture.
2011-07-11 00:19:00 +02:00
Alexander Strange
6a9c859444 H264/MPEG frame-level multi-threading.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-06-02 10:16:20 -07:00
Stefano Sabatini
975a1447f7 Replace deprecated FF_*_TYPE symbols with AV_PICTURE_TYPE_*.
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2011-05-02 12:18:44 +02:00
Mans Rullgard
2912e87a6c Replace FFmpeg with Libav in licence headers
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-03-19 13:33:20 +00:00
Diego Biurrun
ba87f0801d Remove explicit filename from Doxygen @file commands.
Passing an explicit filename to this command is only necessary if the
documentation in the @file block refers to a file different from the
one the block resides in.

Originally committed as revision 22921 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-04-20 14:45:34 +00:00
Michael Niedermayer
358b5b1a59 Get rid of mb2b8_xy and b8_stride, change arrays organized based on b8_stride to
ones based on mb_stride in h264.
about 20 cpu cycles faster overall per MB

Originally committed as revision 22065 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-25 23:44:42 +00:00
Måns Rullgård
19769ece3b H264: use alias-safe macros
This eliminates all aliasing violation warnings in h264 code.
No measurable speed difference with gcc-4.4.3 on i7.

Originally committed as revision 21881 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-18 16:24:31 +00:00
Michael Niedermayer
24006f59cb 10l ;; gcc 2.95 compilation fix by mike
Originally committed as revision 21830 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-15 09:11:00 +00:00
Michael Niedermayer
cbfcde9f52 10l use pack16to32(), should fix big endian h264 failures.
Originally committed as revision 21829 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-15 01:24:50 +00:00
Michael Niedermayer
6e7c397b5c Cosmetics, vertical align.
Originally committed as revision 21817 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-14 01:14:05 +00:00
Michael Niedermayer
5ca43c25f6 Move setting MB_TYPE_L0L1 for direct MBs up, this is simpler.
Originally committed as revision 21794 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-13 15:57:49 +00:00
Michael Niedermayer
5134ad53ed Simplify if()
Originally committed as revision 21791 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-13 13:28:04 +00:00
Michael Niedermayer
752cc0dcb2 Init sub_mb_type cleanly.
Originally committed as revision 21790 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-13 13:14:07 +00:00
Michael Niedermayer
923bcb4048 100l Forgoten hunk.unbreak compile before someone notices.
Originally committed as revision 21789 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-13 13:04:11 +00:00
Michael Niedermayer
af0d6581e1 Restructure spatial direct MV generation so that the zero predictior shortcut
is closer at the top.
50-130 cpu cycles faster depending on which kind of direct MBs are meassured.

Originally committed as revision 21788 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-13 13:02:25 +00:00
Michael Niedermayer
edb4df436f Split spatial and temporal direct MV generation.
A little  faster and needed for future optimizations.
This sadly leads to some code duplication (which i hope i can factor out
again after the optimizations on the direcr mv code are done)

Originally committed as revision 21787 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-13 03:46:51 +00:00
Michael Niedermayer
812bfd7b44 Special case for spatial direct MV predictor being 0.
a little less than 200 cpu cycles faster with the cathedral sample.

Originally committed as revision 21785 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-13 02:47:41 +00:00
Michael Niedermayer
828cfff63d Pack MVs together from the begin for spatial direct, this simplifies the code
and is a bit faster (5-10 cpu cycles depending on what is meassured).

Originally committed as revision 21784 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-13 02:20:56 +00:00
Michael Niedermayer
daaf6e3e9e Reorder and factorize mb_type ifs, 1 cpu cycle faster and simpler.
Originally committed as revision 21694 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-09 00:19:03 +00:00
Michael Niedermayer
1be49ce54b Set partitioning to 16x16 for spatial direct MBs with mixed interlacing.
11cylcles slower MV generation
98cycles faster MC

Originally committed as revision 21691 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-08 17:25:50 +00:00
Michael Niedermayer
3babc711d8 Detect spatial direct MBs partitioned smaller than 16x16 that can be partitioned
as 16x16 (except ones changing interlacing relative to the colocated MB).
20 cycles slower during MV generation
175 cycles faster during MC

Originally committed as revision 21690 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-08 16:23:05 +00:00
Michael Niedermayer
8b9eb2dfec Detect equal 4x4 blocks in spatial direct MBs.
19 cycles slower MV generation
575 cycles faster MC

Originally committed as revision 21689 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-08 13:05:24 +00:00
Michael Niedermayer
542d4a756a Branchless calculation of ref_offset.
7 cpu cycles faster.

Originally committed as revision 21685 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-08 03:22:17 +00:00
Michael Niedermayer
fb70c63f70 Remove incorrect fixme, i see no case that is missing.
Originally committed as revision 21684 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-08 02:10:59 +00:00
Michael Niedermayer
35c8b9c094 Replace call to pred_motion() in direct spatial mv pred by code
and simplify cases that cannot happen away.
8 cpu cycles faster

Originally committed as revision 21683 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-08 02:09:27 +00:00
Michael Niedermayer
055a6aa76a Set x264_build so that checks are simpler.
Originally committed as revision 21681 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-08 00:08:05 +00:00
Michael Niedermayer
3b9e61e45f Zero a/b only in the branch where they need to be zeroed.
Originally committed as revision 21679 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-07 22:58:03 +00:00
Michael Niedermayer
f28a2656c3 Merge mv&ref related code for spatial direct MV code.
a bit more than 10 cpu cycles faster.

Originally committed as revision 21678 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-07 21:53:55 +00:00
Michael Niedermayer
0a8dca8765 Precalculate a few variables for direct mv prediction for interlaced MBs.
Originally committed as revision 21677 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-07 21:09:09 +00:00
Michael Niedermayer
464baa6650 Set direct MB partitioning for 16x8 and 8x16 colocated MBs to the respective true partitioning.
Originally committed as revision 21675 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-07 17:40:22 +00:00