- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
This question is appeared as a result of the discussion:
https://software.intel.com/en-us/forums/intel-media-sdk/topic/780765
vitm: Let's focus on asynchronous pipeline.
It consists of two operations:
VPP(f1) --> ENCODE(f2) --> SYNC(f1) --> SYNC(f2)
Liu, Mark (Intel):
there is mistake in your post. MSDK is a hardware based library, so all the key operations are asynchnized, your pipe line description should be:
VPP(f1) --> SYNC(f1) --> ENCODE(f2) -->SYNC(f2)
This is critical since without the first sync operation, the second enc operation might wait forever for the surface be available.
> I do not agree with this answer.
chapter: Asynchronous Pipeline ( page 21-22 )
To construct an asynchronous pipeline:
The application passes the output of an upstream SDK function to the input of the downstream SDK function
…
The application only needs to synchronize after the last SDK function.
Explicit synchronization of intermediate results is not required and in fact can slow performance.
For performance considerations, the application must submit multiple operations and delays synchronization as much as possible.
The operation sequence,
ENCODE(f1) → ENCODE(f2) → SYNC(f1) → SYNC(f2) is recommended,
compared with:
ENCODE(f1) → SYNC(f1) → ENCODE(f2) → SYNC(f2)
------------------------------
> Where is the mistake ?
- Tags:
- Development Tools
- Graphics
- Intel® Media SDK
- Intel® Media Server Studio
- Media Processing
- Optimization
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Both are wrong,
You only need one sync operation, so it should like:
VPP(f1) --> ENCODE(f2) -->SYNC(f2)
You can also check this with our tutorial code and thanks for chasing this down to correct my mistake.
Mark
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
:) it is not wrong
both operations are working:
ENCODE(f1) → SYNC(f1) → ENCODE(f2) → SYNC(f2)
ENCODE(f1) → ENCODE(f2) → SYNC(f2)
both taken from Intel documentation.
We just should take in account performance impact of additional SYNC() operation:
Explicit synchronization of intermediate results is not required and in fact can slow performance.
ok, thanks
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Yes, I agree.
Mark
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page