Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
31st May 2014, 19:22 | #81 | Link | |
4:2:0 hater
Join Date: Apr 2008
Posts: 1,302
|
Quote:
|
|
6th September 2016, 08:55 | #82 | Link |
German doom9/Gleitz SuMo
Join Date: Oct 2001
Location: Germany, rural Altmark
Posts: 6,753
|
Could anyone please provide diagrams how to imagine motion search methods {dia|hex|umh|star|full}? The question came up which is more elaborate and comprehensive, but to explain why, one may need to see vector distribution diagrams on a coordinate system, I believe... I tried to use Google image search but could not find matching results. But I think to remember that I saw at least a diamond and a hexagonal motion search range once.
|
23rd April 2018, 16:02 | #84 | Link |
Registered User
Join Date: Jul 2013
Posts: 90
|
>>HEVC has two tools that are specifically designed to enable a multi-threaded decoder to decode a single picture with threads: Tiles and Wavefront.
The multi-threaded tools are ONLY for the decoding part ? As I can see inside the source code of the HM Test Software v16.x there is prediction also for the encoding part. Am I wrong ?
__________________
Just me... |
23rd April 2018, 16:50 | #85 | Link |
Registered User
Join Date: Jan 2013
Location: Santa Clara CA
Posts: 114
|
You're right, the encoder can take advantage of this tool too. But encoders could already do this in a way. For example in principle you could design your encoder with a separate motion search thread at every block.
|
23rd April 2018, 18:18 | #86 | Link | |
Registered User
Join Date: Jul 2013
Posts: 90
|
Quote:
So, in this case If I need to implement a parellelization code, I need to know if the previous line upper top CTU is encoded to start encoding the CTU in the next line. Is that implemented inside HM Software? If yes where specifically can I find this ? I already checked the functions TEncSlice::encodeSlice(...) and TEndCu::xEncodeCU() and are seem that are the right candidates for parallel implementation. What do you think ?
__________________
Just me... |
|
23rd April 2018, 18:25 | #87 | Link |
Registered User
Join Date: Jan 2013
Location: Santa Clara CA
Posts: 114
|
The HM reference software is not multi threaded, at least not when I last looked at it. So it doesn't specifically take advantage of it, but it does produce a stream that a decoder can decode with multiple threads.
The HM reference software is meant as just that, a reference. It makes no claim about being suitable for any kind of production setting. For example a production software encoder will almost certainly want to take advantage of this feature. |
23rd April 2018, 18:46 | #88 | Link | |
Registered User
Join Date: Jul 2013
Posts: 90
|
Quote:
__________________
Just me... |
|
23rd April 2018, 19:02 | #89 | Link | |
Registered User
Join Date: Jan 2013
Location: Santa Clara CA
Posts: 114
|
Quote:
The CABAC state update you can see here: https://hevc.hhi.fraunhofer.de/trac/...lice.cpp#L1058 You can see the slice entry points inserted into the stream here: https://hevc.hhi.fraunhofer.de/trac/...cGOP.cpp#L1755 |
|
23rd April 2018, 22:14 | #93 | Link | |
Registered User
Join Date: Jan 2013
Location: Santa Clara CA
Posts: 114
|
Quote:
The HM software is there as reference, an implementation that works and can demonstrate (nearly) all the features in the specification. |
|
23rd April 2018, 22:16 | #94 | Link | |
Registered User
Join Date: Jul 2013
Posts: 90
|
Quote:
When wavefront is disabled the encoding is following the left to right and top to down (zig zag) scheme ? After a slice compression and encoding the data are send to cabac for each one of them one after the other ? In case the wavefront scheme is enabled (without multi threading) the encoding is the same zig zag (since no parallel lines are encoding at the same time)?
__________________
Just me... |
|
23rd April 2018, 22:22 | #95 | Link | |
Registered User
Join Date: Jan 2013
Location: Santa Clara CA
Posts: 114
|
Quote:
The difference is in how the CABAC state is managed. WPP off: CABAC state is reset at the start, and simply is updated as the encoder proceeds in raster order. WPP on: The CABAC state is reset at the start of row 0 (same as before), but at the the start of every other row, the CABAC state is copied from the first CTU of the row above. This means you can have a thread performing encode for each CTU row, as long as it starts after the row above has finished it's first CTU. |
|
24th April 2018, 12:14 | #96 | Link | |
Registered User
Join Date: Jul 2013
Posts: 90
|
Quote:
So, If I want to use parallel wavefront encoding do I have to touch the CABAC code in the way it is written inside HM code ? My conclusions are that is not needed since the CABAC takes in mind the wavefront encoding and the only step is needed is the appropriate parallel synchronization of the shared data.
__________________
Just me... |
|
25th April 2018, 09:12 | #98 | Link |
Registered User
Join Date: Jul 2013
Posts: 90
|
Hi,
No I am using HM Code and dont care about a production encoder just to make my own research about WPP. I want to adapt the implemented wavefront single threaded to multithreaded.
__________________
Just me... Last edited by sdancer75; 25th April 2018 at 09:19. |
1st May 2018, 18:36 | #99 | Link |
Registered User
Join Date: Jul 2013
Posts: 90
|
@pieter3d Please clarify this to me.
In your very first post you say "HEVC supports four transform sizes: 4x4, 8x8, 16x16 and 32x32.", but inside "JCT-VC High Efficiency Video Coding (HEVC) Test Model 16 (HM 16) Improved Encoder Description" at Paragraph 4.2.5 “Transform unit (TU) and transform tree structure” it says "The transform unit (TU) is a square region of size 8x8, 16x16 or 32x32 luma samples/pixels defined by a quadtree partitioning of a leaf CU.". From the specification I understand that there is no 4x4 size TU size. Is that correct ? Another question is that Transform Units co-exist with Prediction Units inside a CU ? For example is the graph below correct ? The data are keeping TUs and PUs are luma and 2 chroma values ?
__________________
Just me... Last edited by sdancer75; 1st May 2018 at 18:39. |
1st May 2018, 19:07 | #100 | Link |
Registered User
Join Date: Jan 2013
Location: Santa Clara CA
Posts: 114
|
Quote:
TUs and PUs only match size in intra blocks. For example inter blocks can have non-square PUs with various different sized TUs. |
Thread Tools | Search this Thread |
Display Modes | |
|
|