This guideline is for Enzo-Lync 2013 integration.
I. Function Note
Below are of some notes of the major functions of the enzo_h264.h file.
-
pjmedia_codec_enzo_h264_vid_init: Initialize and register Enzo H264 codec factory.
-
enzo_h264_default_attr: Set default attributes for Enzo codec when negotiating with Lync via SDP.
-
enzo_h264_alloc_codec: Allocate Enzo encoder and decoder.
-
enzo_h264_codec_init: Initialize Enzo stuff (VPU, encoder, decoder,...).
-
enzo_h264_codec_open: Called after Enzo-Lync negotiation success. Ready to send/receive packets.
-
enzo_h264_codec_modify: Called when bitrate (resolution, bandwith, frame rate) of an endpoint requires to change.
-
enzo_h264_codec_encode_begin: Start to take frame buffer to encode, the output media frame will be put to the transportation layer to send to the remote endpoint.
-
enzo_h264_codec_encode_write_pacsi, enzo_h264_codec_encode_write_nals: Where to insert more supplemental enhancement information after completing encode to adapt with Lync's spec.
-
enzo_h264_codec_decode: Get frame buffer from the transportation layer to decode.
Note: The Enzo codec team just needs to see indexes: #3, #4, #5, #6, #7, #8, #9 to make sure Enzo stuff are used properly.
II. Issues
-
Enzo encoder can not encode frame buffer. FIXED (Josh added more BUFFER feature to encode data from buffer)
-
Need more returned NAL information of bitstream (at least NAL count and NAL length of each NAL are MUST) after encode.
- VPU seems to use only one slice of each frame, therefore the NAL count is 1 and the NAL length is avcData->bufOutSize.
- Josh is investigating how to provide more information since support multiple NALs will make the performance better. WORKING
- Having problem in send/receive big packets on Enzo device. This causes the pixelated video issue. Don will reproduce and save data to a file later. CHECKING