I am using H264VideoEncoder class from UMC which is part of IPP library to encode a video frame into H264 NAL. I am streaming the encoded frames using FFMPEG to media server. Now Iam facing a problem that I need SPS and PPS data to set that into FFMPEG's extradata because flv format needs global header.
I have no idea as how can I set the extradata using the GetPicParamSet and GetSeqparamSet functions exposed by video encoder.
Please help me in this.
Sorry for the delayed reply. As you may have seen from the IPP Samples page, UMC is now legacy and no longer supported. Media SDK is the successor to IPP's UMC. While UMC is no longer supported we hope we can help you and others to transition to Media SDK. (BTW, Media SDK allows applications to extract and update SPS/PPS, as described here.)
Thank you for the response. I have implemented a wrapper over H264VideoEncoder class from UMC to implement H264 encoding but the encoded quality and size is nowhere closer to x264 library. I primarily purchased IPP library for that purpose. Now that media SDK is free I can use that in my software. I have intel i7 processor and NVIDIA GPU card on my system. Is media SDK dependent on CPU or GPU for encoding?
I can definitely look into implementing the encoder wrapper using media SDK but do you have any benchmark data to compare media sdk against x264 or may be a set of parameters that we need to set to achieve the presets defined in x264. The problem that I faced with H264VideoEncoder is that there is little documentation about the parameters and how they effect the quality and compression of video frame. Can you please point me in the direction where I can see that details.
Also any sample code for media sdk encoder will be appreciated.
In Windows Media SDK has a hardware and software implementation. There isn't a good way to map Media SDK parameters to x264 presets. Media SDK's range of performance/quality tradeoffs is quite narrow compared with software implementations like x264. The Media SDK SW implementation is tied to the HW implementation so it does not have any additional parameters available. Quality is very input dependent, and relative comparisons are likely to vary across inputs, bitrates, etc.
To improve quality the first places to look are targetusage and lookahead. For example code the first place I'd recommend is the tutorials tab at the Media Solutions Portal. The samples tab there also has a wide range of starting points to choose from.