Receiving Buffers
When a pool completes a new packet, any producer or consumers that pool serves is
notified with a NvSciStreamEventType_PacketCreate
event.
Upon receiving this event, the endpoint calls
NvSciStreamBlockPacketNewHandleGet()
to dequeue the handle of
the new packet and then NvSciStreamBlockPacketBufferGet()
to get
the buffers for the elements in the packet. After checking whether it can map in all
the buffers for a given packet, the endpoint signals status back to the pool by
NvSciStreamBlockPacketStatusSet()
. The status
parameter indicates if the application was successful in setting up the new packet.
If so, the value is NvSciError_Success
. Otherwise, it can be any
value the application chooses. NvSciStream does not interpret the value except to
check for success, and then passes it back to the pool. If successful, the cookie
parameter provides the endpoint cookie for the packet. Each endpoint can provide its
own cookie for each packet, which is used in subsequent events.
The producer and consumers may assign the same cookies as the pool but are not required to do so.
NvSciError
NvSciStreamBlockPacketNewHandleGet(
NvSciStreamBlock const block,
NvSciStreamPacket* const handle
)
NvSciError
NvSciStreamBlockPacketBufferGet(
NvSciStreamBlock const block,
NvSciStreamPacket const handle,
uint32_t const elemIndex,
NvSciBufObj* const bufObj
)
NvSciError
NvSciStreamBlockPacketStatusSet(
NvSciStreamBlock const block,
NvSciStreamPacket const handle,
NvSciStreamCookie const cookie,
NvSciError const status
After the pool finishes exporting the packets, the endpoints receive an
NvSciStreamEventType_PacketsComplete
event. They can complete setup related
to packet resources and call the NvSciStreamBlockSetupStatusSet()
function with a value of NvSciStreamSetup_PacketImport
to indicate they
finished importing the packets.
If a pool deletes a packet, when the producer or consumer receives the
NvSciStreamEventType_PacketDelete
event it can determine the identity of
the deleted packet by calling NvSciStreamBlockPacketOldCookieGet()
,
which retrieves the cookie of a packet pending deletion. The handle of the returned
packet becomes invalid for subsequent function calls.
NvSciError
NvSciStreamBlockPacketOldCookieGet(
NvSciStreamBlock const block,
NvSciStreamCookie* const cookie
)