Commit graph

1843 commits

Author SHA1 Message Date
Ari Koivula 513e80bcca Fix bug causing unnecessary copying of memory
This bug caused a single tiles worth of lcu_info_t structs to be copied
unnecessarily for every LCU in the frame. This obviously caused huge
memory bandwidth issues when coding large frames without tiles. The
effect was minimized somewhat with a large number of tiles, because
only the current tile was copied.

From context it is clear that this piece of code was supposed to copy
a single tile or frame, once the frame was done, but because it was
placed in a function which is called for every LCU, it copied the data
for the LCU, but also lots of extra stuff.

The fix is to copy only the current LCU instead of the whole tile.
2015-09-16 18:23:44 +03:00
Marko Viitanen d8b50d6951 Bump version to 0.6.0 2015-09-15 15:44:55 +03:00
Marko Viitanen 5b3f2a6229 Merge branch 'pkgconfig-fix' 2015-09-15 15:37:49 +03:00
Ari Koivula f1ac0e6bc2 Rename _DEBUG to KVZ_DEBUG 2015-09-15 13:04:03 +03:00
Ari Koivula ec2d8d6ad7 Rename _DEBUG_PERF macros to KVZ_PERF
And move them to threadqueue.h, where the things that use them are.
2015-09-15 13:03:32 +03:00
Arttu Ylä-Outinen 4db06bcf07 Use correct version in kvazaar.pc.
Changes kvazaar.pc to use kvazaar version instead of the library
version. The version number is extracted from global.h using sed.
2015-09-15 12:57:34 +03:00
Marko Viitanen d70362978e Merge branch 'idr_fix'. Fixes #100 2015-09-14 15:43:18 +03:00
Marko Viitanen 3217e70f99 Revert "Revert "Fix keeping of reference frames over IDR boundary.""
This reverts commit 87936eb99f.

Conflicts:
	src/encoderstate.c
2015-09-14 14:31:58 +03:00
Arttu Ylä-Outinen e12612e938 Merge branch 'pts-and-dts' 2015-09-14 14:21:29 +03:00
Arttu Ylä-Outinen b4ec664fc9 Set DTS values of output pictures.
Adds field dts to struct kvz_picture and rewrites kvz_encoder_feed_frame
to set the DTS when returning pictures.
2015-09-14 14:16:56 +03:00
Arttu Ylä-Outinen 25c23aa298 Remove static variables from kvz_encoder_feed_frame.
Adds struct input_frame_buffer_t for storing the input buffer state.
2015-09-14 14:12:19 +03:00
Arttu Ylä-Outinen 1d2a398197 Move function kvz_encoder_feed_frame to a separate module.
Adds module input_frame_buffer.
2015-09-14 14:12:18 +03:00
Arttu Ylä-Outinen 009717bf7c Remove unused field bitstream_length from kvz_encoder. 2015-09-14 14:12:18 +03:00
Arttu Ylä-Outinen 97913cee40 Add pts field to kvz_picture.
The pts field can be used to set the presentation timestamp of the input
frames. The timestamps are copied to the reconstructed frames.
2015-09-14 14:12:00 +03:00
Ari Koivula 24618c90ce Fix wrong type in debug code.
- This type is expected by outside debug scripts. It does not have to
  match the function name.
2015-09-10 16:07:18 +03:00
Ari Koivula 0ac2bc31a3 Put parenthesis around _DEBUG.
- To protect against precedence issues.
2015-09-10 16:06:19 +03:00
Ari Koivula 3958e8b6f7 Handle VS warnings with _DEBUG.
- Conditional expression is constant was being triggered by debug code.
2015-09-10 14:16:42 +03:00
Ari Koivula cb1a206c74 Dump threading data structures only with _DEBUG_PRINT_THREADING_INFO.
- They are usually not needed when using _DEBUG.
2015-09-10 14:16:42 +03:00
Arttu Ylä-Outinen b75bd12e81 Merge branch 'fix-owf-gop' 2015-09-07 15:46:31 +03:00
Arttu Ylä-Outinen 70b3e10e27 Fix a crash with owf=4, gop=8, frames=10.
A call to kvz_threadqueue_waitfor caused the tqj_bitstream_written field
of the previous encoder state to become a dangling pointer, subsequently
causing an assertion to fail. This would only occur when the encoder
state used for a new frame was not the last finished one.

Fixed by setting tqj_bitstream_written to NULL after the job is done and
removing unnecessary calls to kvz_threadqueue_waitfor.
2015-09-07 15:37:04 +03:00
Arttu Ylä-Outinen ac37a0f42b Add a travis test demonstrating a bug. 2015-09-07 15:36:22 +03:00
Arttu Ylä-Outinen 3c35f470a1 Fix get_ctx_cu_split_model. 2015-09-02 11:47:03 +03:00
Ari Koivula 9a23ae3d92 Resolve remaining Visual Studio warnings.
- Ignore most of them and fix the ones that can't be ignored.
2015-08-31 15:02:25 +03:00
Ari Koivula 721002c10a Merge pull request #104 from lu-zero/master
build: Drop the gnu-only option Deterministic
2015-08-29 17:20:44 +03:00
Luca Barbato efe5291427 build: Drop the gnu-only option Deterministic
Unbreak building on MacOSX and possibly other BSDs.
2015-08-29 10:38:10 +02:00
Ari Koivula ba32d389cd Merge branch 'rbsp-cleanup' 2015-08-27 20:21:19 +03:00
Ari Koivula c52f7858ab Use long start code in picture_timing_sei if it's first NAL in AU. 2015-08-27 15:23:34 +03:00
Ari Koivula 69d1059602 Fix access unit delimiter.
- The nal header was written after the pic_type.
2015-08-27 15:18:25 +03:00
Ari Koivula 9584cd7352 Move rbsp_trailing_bits elements to encapsulating functions.
- Also add missing bitstream align. It's unnecessary as the version can't not
  be byte aligned.
2015-08-27 15:18:18 +03:00
Ari Koivula 207367f317 Add new kvz_bitstream_align which only aligns when needed.
- Changing picture_timing_sei_message to align doesn't change anything, but
  protects against future changes if more data is added there in future.
2015-08-27 15:16:20 +03:00
Ari Koivula b2fb1b6d4a Rename kvz_bitstream_align to kvz_bitstream_rbsp_trailing_bits.
- The syntax is called rbsp_trailing_bits in spec and 1 byte is added
  even when the bitstream is already aligned, so align is a bad name.
2015-08-27 14:33:30 +03:00
Arttu Ylä-Outinen 3a10e9e3e0 Prefix all non-static symbols with "kvz_". 2015-08-26 13:02:28 +03:00
Arttu Ylä-Outinen bfe2b31cee Make generic satd functions static. 2015-08-26 12:10:27 +03:00
Arttu Ylä-Outinen d0bc58a874 Document the library API in more detail. 2015-08-26 12:10:27 +03:00
Arttu Ylä-Outinen 04ba5dca41 Make config_destroy accept a NULL pointer. 2015-08-26 12:10:26 +03:00
Arttu Ylä-Outinen 8bdcd7629c Merge pull request #102 from darealshinji/patch-1
Makefile: add $(CPPFLAGS), use -Wl,-z,noexecstack and install development files on Linux
2015-08-24 15:35:32 +03:00
darealshinji 87a4e53c35 Makefile: add $(CPPFLAGS), use -Wl,-z,noexecstack and install development files on Linux 2015-08-22 16:00:26 +02:00
Ari Lemmetti 3661f3f3f5 Fix incorrect free on error 2015-08-21 18:26:12 +03:00
Ari Lemmetti 4103bd2786 Add missing padding for frame allocation 2015-08-21 17:25:54 +03:00
Ari Lemmetti d6c3363dc8 Merge branch 'interlacing_experimental' 2015-08-21 15:50:24 +03:00
Ari Lemmetti ed7948810e Fix help message and update README.md 2015-08-21 15:29:48 +03:00
Ari Lemmetti 68fcc67a16 Add extraction of fields according to source scan type 2015-08-21 15:15:20 +03:00
Ari Lemmetti 581ff95412 Write flags and SEI messages for interlacing. 2015-08-21 14:46:05 +03:00
Arttu Ylä-Outinen 93573e60f0 Merge branch 'static-lib' 2015-08-20 16:43:55 +03:00
Arttu Ylä-Outinen 38893d2da1 Use the static lib to link the program.
Changes the Makefile to use the static library and additional object
files as linker input instead of all the object files when linking the
command line program.
2015-08-20 16:42:29 +03:00
Arttu Ylä-Outinen cb49586d36 Add static library target to Makefile.
Adds targets libkvazaar.a and install-static to the Makefile.
2015-08-20 16:42:29 +03:00
Arttu Ylä-Outinen 23159e45b7 Rename LIB_OBJS to SHARED_OBJS in Makefile.
SHARED_OBJS is a more appropriate name since the objects are only used
for building shared libraries, not static ones.
2015-08-20 16:42:28 +03:00
Arttu Ylä-Outinen 8488ba1bb7 Remove unnecessary objects from libraries.
Removes the cli and yuv_io modules from libraries.
2015-08-20 16:42:28 +03:00
Arttu Ylä-Outinen dd874a0a4a Move writing of reconstructed picture to encmain.
- Removes parameter recout of function encoder_compute_stats.
- Now only encmain uses the yuv_io module.
2015-08-20 16:42:28 +03:00
Arttu Ylä-Outinen 3be8191b10 Add kvazaar.pc to gitignore. 2015-08-20 16:42:27 +03:00