Laurent Fasnacht
63adb54a3d
Add --threads <int> command line parameter
2014-05-14 13:27:09 +02:00
Laurent Fasnacht
e772799d5e
encoder_state_encode uses now the threadqueue
2014-05-14 13:27:08 +02:00
Laurent Fasnacht
baede7f6c4
threadqueue
2014-05-14 13:27:08 +02:00
Laurent Fasnacht
bc3ca90bdf
Fix tiles when SAO or deblock is enabled.
...
Was broken by previous commit.
2014-05-14 13:27:07 +02:00
Laurent Fasnacht
4815a0604b
Entropy coding sync works without parallelism, without SAO and without deblocking
2014-05-14 13:27:06 +02:00
Laurent Fasnacht
2c2a2528f3
Remove openmp stuff
2014-05-14 13:27:06 +02:00
Ari Koivula
fb763f7940
Move coefficient generation functions from encoder.c to transform.c.
...
- These functions probably should have been there to begin with.
2014-05-12 11:37:39 +03:00
Ari Koivula
a3478ecd20
Move transform skip decision to it's own function.
2014-05-12 11:18:27 +03:00
Ari Koivula
d9b890de6e
Remove redundant variables.
...
- Redefine LCU_WIDTH to be 64. Stuff will break horribly if it's
anything else anyway.
- Add LCU_WIDTH_C for chroma LCU width. It should be more readable than the
constant (LCU_WIDTH >> 1).
2014-05-12 10:58:07 +03:00
Ari Koivula
59e0e98523
Separate luma and chroma coefficient generation variables.
2014-05-12 10:38:24 +03:00
Ari Koivula
0ca65e7606
Move chroma coefficient generation to it's own function.
...
- It's time to chop up this monster that is encode_transform_tree.
2014-05-12 10:24:06 +03:00
Ari Koivula
3c3c9a26c6
Move scan order selection to a function.
2014-05-12 08:47:16 +03:00
Ari Koivula
623d9001a8
Reorder chroma coefficient generation.
2014-05-12 08:47:16 +03:00
Ari Koivula
93141c7d2e
Avoid unnecessary copying of predicted pixels when there are no coeffs.
...
- These are probably from a time when reconstruction happened in this
function.
2014-05-09 16:39:58 +03:00
Ari Koivula
27ab882c25
Clean up coefficient generation.
2014-05-09 16:33:10 +03:00
Ari Koivula
ce945ab4ef
Handle coefficient initialization better.
...
- Coefficients are no longer required to be pre-zeroed. The resulting zeroes
are copied in even in the case where we already know they are all zeroes.
- Move cbf clearing code to only happen at the leaves of the recursion.
2014-05-09 16:30:28 +03:00
Laurent Fasnacht
b274558139
Refactor and fix entry_points functions.
...
Seems to be OK with HM now
2014-05-09 12:42:37 +02:00
Ari Koivula
cb5d7e6541
Fix compilation for VS2010.
2014-05-08 17:28:12 +03:00
Laurent Fasnacht
0452806ec4
Entry points
2014-05-08 15:04:56 +02:00
Laurent Fasnacht
da588af2ba
Partial support for wavefront
2014-05-08 15:04:55 +02:00
Laurent Fasnacht
4de5660254
Fix missing offset in LCU range computation for wavefronts
2014-05-08 15:04:55 +02:00
Laurent Fasnacht
dc34a5eac6
LCU borders
2014-05-08 15:04:54 +02:00
Laurent Fasnacht
24f4a8cad1
Wavefront also needs entrypoints
2014-05-08 15:04:53 +02:00
Laurent Fasnacht
d05f8b52aa
Rewrite of encoder_state_write_bitstream_leaf: handle slice + tiles + wavefronts correctly
2014-05-08 15:04:53 +02:00
Laurent Fasnacht
27f694e3e8
Some initial code to support wpp and slices
2014-05-08 15:04:52 +02:00
Laurent Fasnacht
163189c3c7
Bitstream for leaves can be computed in parallel
2014-05-08 15:04:51 +02:00
Laurent Fasnacht
be9882f5b2
Leaf bitstream write
2014-05-08 15:04:50 +02:00
Laurent Fasnacht
ae6a7a9c4b
Leaf encoder uses encoder_state->lcu_order
2014-05-08 15:04:49 +02:00
Laurent Fasnacht
b740142325
Add is_leaf to encoder_state
2014-05-08 15:04:48 +02:00
Laurent Fasnacht
8451d5b100
Move some init code to encoder_state_new_frame
2014-05-08 15:04:48 +02:00
Laurent Fasnacht
1cb3f14dfe
lcu_order_count in (leaves) encoder
2014-05-08 15:04:47 +02:00
Laurent Fasnacht
ef6ae3e723
Remove dead code
2014-05-08 15:04:46 +02:00
Ari Koivula
535b42bc9b
Fix compilation for VS2010.
2014-05-07 15:26:44 +03:00
Laurent Fasnacht
05eef82896
Remove extra [ from graphviz dump
2014-05-07 13:40:29 +02:00
Laurent Fasnacht
84e5dbee39
Remove quote from graphviz dump
2014-05-07 13:33:02 +02:00
Laurent Fasnacht
b48a687d3c
Restored parallelism, but it will be done in another way... OpenMP is not very efficient in these kind of dynamic situation
2014-05-07 11:55:56 +02:00
Laurent Fasnacht
0e6f1c99fc
Refactor picture to remove hidden dependency between slice and tiles
...
picture.type -> encoder_state->global->pictype
picture.slicetype -> encoder_state->global->slicetype
picture.slice_sao_luma_flag -> 1 (was constant)
picture.slice_sao_chroma_flag -> 1 (was constant)
This may be changed later. For now it's better to avoid having slice related stuff in picture.
2014-05-07 11:55:48 +02:00
Laurent Fasnacht
39d96e0546
Fix bug with cabac stream pointing to bad data
2014-05-07 11:55:41 +02:00
Laurent Fasnacht
e144f817ef
Works when not using tiles
2014-05-07 11:55:16 +02:00
Laurent Fasnacht
24c2bd70ca
Fix small bugs with compilation
2014-05-07 11:54:35 +02:00
Laurent Fasnacht
a03f0cba19
encoder_control_input_init near the other encoder_control_* functions
2014-05-07 11:53:21 +02:00
Laurent Fasnacht
1e2671ac30
Renamed encoder_clear_refs to encoder_state_clear_refs
2014-05-07 11:53:12 +02:00
Laurent Fasnacht
831b221cf8
Parsing seems to work now
2014-05-07 11:53:01 +02:00
Laurent Fasnacht
8b5cb62237
Debug code to generate a graph
2014-05-07 11:52:04 +02:00
Laurent Fasnacht
cee6bb0e71
Fix iteration on children
2014-05-07 11:49:14 +02:00
Laurent Fasnacht
699669ee35
fixed typo
2014-05-07 11:48:16 +02:00
Laurent Fasnacht
6c6adf18c7
Refactor encoder_state
2014-05-07 11:47:31 +02:00
Laurent Fasnacht
a23edd0339
added parent to encoder_state
2014-05-07 11:42:54 +02:00
Laurent Fasnacht
5ce518a47a
lcu_at_tile_start and lcu_at_tile_end helper functions
2014-05-07 11:42:30 +02:00
Laurent Fasnacht
c2872bd6b0
Slices and WPP in command line and encoder
2014-05-07 11:42:04 +02:00
Laurent Fasnacht
2d6f199246
reorganized encoder_state structure
2014-05-07 11:41:27 +02:00
Laurent Fasnacht
f0b076876f
Moved all the stream related stuff into substream_write_bitstream
2014-05-07 11:40:20 +02:00
Ari Koivula
eaf8835bda
Add some comments and const qualifiers.
2014-05-06 19:20:38 +03:00
Ari Koivula
3910b7989a
Clear old cbf data before recursion in encode_transform_tree.
...
- Because encode_transform_tree also maintains the CBF data and assumes that
the CBFs are initially zeroed, calling the function more than once would
result in incorrect CBF data.
2014-05-06 19:03:29 +03:00
Ari Koivula
bdc16d2612
Improve cu_info coded block flag data structure a bit.
...
- It works just like the old structure except that the flags are checked with
bitmasks instead of having the flag value be propagated upwards. There isn't
really any benefit to this because the flags still have to be propagated to
parent CUs.
- Wrapped them inside a struct to make copying them easier. (Just need to copy
the struct instead of making individual copies)
2014-05-06 18:28:04 +03:00
Ari Koivula
d123b98aea
Remove unnecessary tertiary expressions from usages of CABAC_BIN.
2014-05-06 17:39:25 +03:00
Marko Viitanen
bf2c2a1330
Small changes to fix compiling on VS
...
- Added threads.h to VS project
- Included Windows.h in threads.h
2014-05-05 11:18:43 +03:00
Laurent Fasnacht
f3d4e6eb09
Move bitstream write to a separate function, and add assertions about the part which should not write to bitstream.
2014-05-05 09:24:57 +02:00
Laurent Fasnacht
7f6f4fe9c1
Reference count for picture
2014-05-05 08:03:24 +02:00
Laurent Fasnacht
323054d5e2
naming: alloc_yuv_t -> yuv_t_alloc dealloc_yuv_t -> yuv_t_free
2014-05-02 11:45:27 +02:00
Laurent Fasnacht
7d6d1d5536
Remove pic->pred_*
2014-05-02 11:38:07 +02:00
Laurent Fasnacht
92e14cc80d
rename picture_init to picture alloc and picture_destroy to picture_free
2014-05-02 10:58:28 +02:00
Laurent Fasnacht
b76f7377b6
Always initialize tiles data structures (even with only one tile)
2014-05-02 10:00:22 +02:00
Laurent Fasnacht
161fe38f5e
Remove USE_TILES define
2014-05-01 13:58:13 +02:00
Laurent Fasnacht
a84fd6486d
Add function subencoder_blit_pixels
2014-05-01 11:16:11 +02:00
Laurent Fasnacht
b8b28635ff
Iterable structure for sub-encoders (more flexibility)
2014-05-01 11:16:10 +02:00
Laurent Fasnacht
212d390003
Cleanup of encoder_state_init and encoder_state_finalize
2014-05-01 11:16:10 +02:00
Laurent Fasnacht
161053f86b
Do not allow more tiles than dimension in LCU
2014-05-01 07:11:31 +02:00
Ari Koivula
d1fbc6dc80
Fix a small memory leak.
...
- Malloced pointer returned by alloc_yuv_t was not being freed in
substream_encode.
- Remove use of yuv_t from encode_one_frame, as it's not used there anymore.
2014-04-30 11:15:34 +03:00
Ari Koivula
27b94d4b45
Address gcc -Wtype-limits errors.
...
- Fixes warnings in #19 and #16 .
2014-04-29 09:15:52 +03:00
Ari Koivula
4490e8afd6
Remove depth dimension from picture->cu_array.
...
- It isn't used for anything anymore.
- It was used in the past to hold information during search, but now that
information is held in lcu_t structs.
2014-04-28 10:18:22 +03:00
Laurent Fasnacht
76ec605b72
SAO works with tiles now
2014-04-28 06:29:21 +02:00
Laurent Fasnacht
7719837f17
Simple OpenMP parallelization
2014-04-25 09:11:10 +02:00
Laurent Fasnacht
4e34859e66
Fix compilation error with USE_TILES=1 and -Werror=maybe-uninitialized
2014-04-24 08:41:05 +02:00
Laurent Fasnacht
59392c4a62
Fix compilation issue with USE_TILES=0
2014-04-24 08:38:24 +02:00
Laurent Fasnacht
af9a1c0fbb
Use same reference images for all subencoders
2014-04-24 08:38:23 +02:00
Laurent Fasnacht
73c574fb45
P-frame: first try...
2014-04-24 08:38:22 +02:00
Laurent Fasnacht
03361dcf2c
sao try... still not working
2014-04-24 08:38:22 +02:00
Laurent Fasnacht
3db4c59478
Recontruct full frame from tiles
2014-04-24 08:38:21 +02:00
Laurent Fasnacht
35d5d22ccc
Fix tile size not to go outside of the original picture
2014-04-24 08:38:20 +02:00
Laurent Fasnacht
b36e154c38
Some cleanup
2014-04-24 08:38:19 +02:00
Laurent Fasnacht
01580a93c3
Encoding with tiles now more or less works with -p 1 --no-sao --no-deblock
2014-04-24 08:38:19 +02:00
Laurent Fasnacht
5fb4d9c36e
substream_encode function
2014-04-24 08:38:17 +02:00
Laurent Fasnacht
e292b2c274
allocate subencoders
2014-04-24 08:38:17 +02:00
Laurent Fasnacht
fba4f5432a
Fix debug code
2014-04-24 08:38:16 +02:00
Laurent Fasnacht
b255133460
Debug for tiles
2014-04-24 08:38:15 +02:00
Laurent Fasnacht
11629ce811
Use tile scan order in encode_one_frame()
2014-04-24 08:38:14 +02:00
Laurent Fasnacht
0036afa056
Write tiles related information picture parameter set and slice header
2014-04-24 08:38:14 +02:00
Laurent Fasnacht
1e9c894eba
Coding tree block raster and tile scanning conversion process, according to ITU-T Rec. H.265 (04/2013) 6.5.1
2014-04-24 08:38:13 +02:00
Laurent Fasnacht
7bd6aa2e9c
encoder_control_input_init call moved to encoder_control_init
2014-04-24 08:38:13 +02:00
Laurent Fasnacht
ff318ae0e9
Tiles in encoder_control
2014-04-24 08:38:12 +02:00
Laurent Fasnacht
19b1642aa2
Removed all cabac parameters (cabac is part of encoder_state)
2014-04-22 11:46:53 +02:00
Laurent Fasnacht
5fea5875a5
Huge refactoring
...
Split some parts of encoder_control into encoder_state
(idea: encoder_control is immutable)
Goal is to allow multiple substreams in the future.
2014-04-22 10:39:12 +02:00
Ari Koivula
88a67a4e49
Fix faulty assert that stops the program from working with inter frames.
...
- The assert would be true after the next if block, but in it's current place
it's false.
2014-04-22 10:57:38 +03:00
Ari Koivula
1b437a5989
Address clang-analyzer warnings about garbage values.
...
- False alarm, but surprisingly difficult to convince clang of that. It
doesn't seem to understand bit shifts very well.
- Only assert and changing LCU_WIDTH>>depth to width was necessary to satisfy
clang.
- Closes #35 .
2014-04-17 18:43:09 +03:00
Laurent Fasnacht
3396264f3c
Moved g_cur_lambda_cost into encoder_control.cur_lambda_cost
2014-04-17 12:00:21 +02:00
Laurent Fasnacht
534013be77
Remove g_lambda_cost
2014-04-17 11:49:27 +02:00
Laurent Fasnacht
83360918ba
Removed table generation from main code, moved it to tools.
2014-04-17 11:13:15 +02:00
Laurent Fasnacht
4a9c239027
Remove g_bitdepth
2014-04-17 11:13:13 +02:00
Laurent Fasnacht
7a2b883059
Remove encoder_input width, height, height_in_lcu, and width_in_lcu
2014-04-17 11:13:12 +02:00
Laurent Fasnacht
d01e3ae67f
bitstream is a union, and is statically in encoder_control structure
2014-04-17 11:13:12 +02:00
Laurent Fasnacht
9ac3b7bf2b
encoder->in.cur_pic --> cur_pic
2014-04-17 11:13:10 +02:00
Laurent Fasnacht
21d34613c2
Replace encoder->stream by stream
2014-04-17 11:13:09 +02:00
Laurent Fasnacht
2286175378
nal are now written to a bitstream, not a FILE*
2014-04-17 11:13:09 +02:00
Laurent Fasnacht
ec9d70f70c
Moved scalinglist_process into init_encoder_control
2014-04-16 11:45:51 +02:00
Laurent Fasnacht
e06253d437
scalinglist changes missing in previous commit
2014-04-16 11:00:29 +02:00
Laurent Fasnacht
9901c38dd5
scalinglist in independent file
2014-04-16 10:25:16 +02:00
Laurent Fasnacht
9112cbb58c
Generate and use static tables
2014-04-16 09:49:09 +02:00
Laurent Fasnacht
960f2cb4b0
g_sig_last_scan -> const uint32_t*
2014-04-15 16:09:52 +02:00
Laurent Fasnacht
763b775d3e
encoder_control->cfg is const
2014-04-15 16:09:52 +02:00
Laurent Fasnacht
ae2d79c954
Remove encoder_control.cqmfile
2014-04-15 16:09:51 +02:00
Laurent Fasnacht
486768fc79
scalinglist privatization
2014-04-14 13:39:28 +02:00
Laurent Fasnacht
78c579053a
encoder_control should be const in nearly all the code
2014-04-14 10:56:06 +02:00
Laurent Fasnacht
418e6eae51
Changed bitstream handling to allow in-memory bitstream.
2014-04-14 08:13:00 +02:00
Marko Viitanen
c38ec1aa10
Added commandline option for RDO (--rd)
2014-04-09 12:29:15 +03:00
Ari Koivula
92ac5025f9
Take intra mode based coeff scan mode into account for coeff bit cost.
...
- Previously only diagonal scan mode, the most common one, would be used.
- This improved bdrate by 0.1-0.5 % for p0 and 0-0.2 % for p60.
2014-04-09 10:44:44 +03:00
Ari Koivula
c5dfcdf3aa
Simplify scan mode selection.
...
- The scan mode selection for chroma was a bit complicated so I checked it
and it was all unnecessary. The mode selection is the same as for luma.
2014-04-09 10:36:39 +03:00
Ari Koivula
3764688f84
Fix lambda initialization.
...
- Lambda was initialized before slice type was set in encoder_control.
2014-04-08 16:58:36 +03:00
Ari Koivula
6e0bc655e2
Resolve unused variable warning.
...
- This unexpectedly changes bitstream, but as that makes no sense, it must be
because some part of the program uses uninitialized memory.
2014-04-04 17:28:50 +03:00
Marko Viitanen
e15a86268d
Clean up tabs and whitespaces
2014-04-04 16:04:44 +03:00
Laurent Fasnacht
816ae13b1d
Moved context information inside cabac_data.
...
This is required in order to be able to work on parallelism.
2014-04-04 14:28:50 +02:00
Laurent Fasnacht
8a14bd3b7b
Remove cabac global variable
2014-04-04 14:26:40 +02:00
Laurent Fasnacht
946c815932
init_context directly has a QP parameter, instead of passing an encoder_control*
...
This makes context less tightly coupled with encoder.
2014-04-04 14:26:39 +02:00
Marko Viitanen
b83559d3f3
Use RDO to check for transform skip mode
2014-04-04 13:09:42 +03:00
Ari Koivula
b19e4f3f2d
Resolve possible uninitialized variable warnings.
...
- Working towards issue #11 .
- Neither variable was actually used as uninitialized.
2014-04-04 13:02:06 +03:00
Ari Koivula
d44d1837bb
Remove unreferenced parameters.
...
- Working towards issue #11 .
2014-04-04 12:56:24 +03:00
Ari Koivula
46d33d3945
Resolve unsigned/signed mismatch warnings.
...
- Working towards issue #11 .
2014-04-04 12:56:23 +03:00
Ari Koivula
27a3329dfb
Remove unreferenced_parameter macro.
...
- It was a silly hack to selectively silence compiler warnings from VS, but
there is no point as it causes compiler warnings in GCC.
2014-04-03 15:38:17 +03:00
Marko Viitanen
0da8071300
Changed final cost (and transform skip) error function from SAD to SSD
2014-04-02 14:51:39 +03:00
Marko Viitanen
a14fb14e33
Added new commandline parameter --no-transform-skip
2014-04-02 14:49:48 +03:00
Marko Viitanen
cfb21c0e4c
Implemented transform skipping (for 4x4 blocks)
...
transform skip vs. normal transform selection criteria might need more work, currently both are calculated for each 4x4 block and SAD+coeff_SSE is compared.
2014-04-02 10:54:03 +03:00
Panu Sjövall
c8f629495d
Remove unnecessary buffer from bitstream.
...
- Writing encoded data to file is done in bitstream_put one byte at a time and nal_write only writes the packet headers
2014-03-25 11:46:56 +02:00
Ari Koivula
953aef0379
Move rest of LCU encoding inside the LCU loop.
...
- Move SAO search inside the LCU loop.
- Move CU coding inside the LCU loop.
- Move SAO frame reconstruction loop to sao module.
2014-03-21 12:41:44 +02:00
Ari Koivula
746eaa3671
Move deblocking code to filter module.
2014-03-21 11:57:12 +02:00
Ari Koivula
c42b25054a
Modify deblocking to be done per-LCU in the encoding loop.
...
- Intra works. There is still something wrong in inter.
- Avoid horizontal deblocking of the rightmost 4 pixels in the LCU.
This is because vertical deblocking must be done for all pixels
before horizontal, but vertical deblocking can't be done for those
pixels before the next LCU is finished.
- Add separate deblocking of the rightmost pixels of the last LCU
after the LCU edge has been deblocked.
- This is a pretty ugly hack but will have to do for now.
2014-03-20 18:14:43 +02:00
Ari Koivula
7328fc2897
Add special handling for bottom right LCU pixel.
...
I didn't take into account that the reference pixel on the top-left of the
LCU gets over written if we just replace the top reference pixels for
current LCU with the bottom reference pixels after doing the search.
To handle this I copy the pixel that gets overwritten to the vertical
reference pixels.
2014-03-19 16:01:31 +02:00
Ari Koivula
57ce7e990b
Add new reference pixel buffer management to encoding loop.
...
- This is necessary because after we add in-loop filters to be done per LCU,
the reconstruction buffer will have the deblocked pixels. We only need the
edge-pixels for intra prediction though so we just save those.
- Right now it only copies the pixels and passes them on to search, where
the copied pixels are asserted to be the same ones we copy from
reconstruction buffer.
- New yuv_t struct added for arrays of dynamic length. We might want to change
other buffers to use it or something like it in the future.
2014-03-19 16:01:30 +02:00
Ari Koivula
34e453c880
Clean up encode_one_frame.
...
There is a lot of duplicated code due to handling random access and trailing
pictures separately. I merged the code for these two branches so it would be
easier to modify.
2014-03-17 18:04:41 +02:00
Ari Koivula
b1596eb76c
Refactor coding of end_of_slice_segment_flag.
...
According to spec the end_of_slice_segment_flag is always coded, but in the
code it looked like it was not coded for the last LCU in picture. This was
due to the end_of_slice_segment_flag being coded inside cabac_flush, like it
is in HM. This is a bit silly so I moved it out of cabac_flush.
2014-03-17 18:04:41 +02:00
Ari Koivula
6a384112cc
Remove old unnecessary functions from search module.
...
- As we move to per-LCU encoding only search_lcu will be necessary.
- Function search_best_mode is no longer used.
2014-03-17 18:04:41 +02:00
Ari Koivula
9563b50a34
Refactor coefficient group scan mapping lists.
...
The relation between coefficients positions and coefficient group positions
was a big confusing due to the use of 16x16 diagonal coefficient mappings
also as coefficient group mappings.
- Moved all coefficient group mappings to their own const arrays and added
a new array the select the correct coefficient group mapping. This removes
special cases for 8x8 and 32x32 transform sizes.
- Removed all coefficient group mapping initialization from init_sig_last_scan.
- Removed 128x128 and 64x64 from regular coefficient group array as those
transform sizes don't exist anymore in HEVC.
2014-03-14 16:56:49 +02:00
Ari Koivula
e93ae54e70
Fix bug with selecting wrong coeff scan mode for 4x4 blocks.
2014-03-12 14:56:05 +02:00
Ari Koivula
409b094acf
Try and get NxN to work again.
...
- Moved NxN search to be done on the same level as other searches, as it's
really not any different from 2Nx2N.
- Produces working bitstream but reconstruction is different.
2014-03-11 19:19:20 +02:00
Ari Koivula
470f36ce34
Remove left-over commented out code.
2014-03-07 12:44:45 +02:00
Ari Koivula
5d9aa3409b
Merge branch 'new-search-wip'
...
Conflicts:
src/encoder.c
src/intra.c
src/intra.h
src/search.c
2014-03-06 19:00:53 +02:00
Ari Koivula
47af5207c5
Remove dead code and fix white space.
2014-03-06 18:35:17 +02:00
Marko Viitanen
c3e47c6a8d
Removed redundant coeff_y/u/v variables from CU
2014-03-05 17:18:03 +02:00
Marko Viitanen
b00f4c8dbf
Fixed transform offset value and set tr_depth to correct value when depth 0
2014-03-05 17:10:17 +02:00
Ari Koivula
1cf03cfb37
Add --no-rdoq parameter.
2014-03-05 17:02:21 +02:00
Ari Koivula
ca51f660d5
Fix fluctuation of coefficients on identical frames when RDOQ is on.
...
Moves CABAC context initialization to take place before search. This fixes
an issue with RDOQ returning different coefficients for identical adjacent
frames.
- This actually probably worsens BD-rate a little for all frames except the
first one because we were using last frames final CABAC context for every
LCU and now we are using initialized CABAC contexts. The fix is to encode
the LCU before we start compressing the next LCU so we can update CABAC
contexts.
2014-03-05 17:02:13 +02:00