Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

H.264 realtime?

duane
Beginner
458 Views
Can the ipp 5.0 H.264 encoder/decoder be used in a realtime streaming application?
0 Kudos
6 Replies
Vladimir_Dudnik
Employee
458 Views

Hi,

I'm sorry, I can not understand why do you asking that? We provide you IPP libraries,which is set of low-level highly-optimized functions, which implements mostly used algorithms in different application areas and we provide you samples, which demonstrates how to use these IPP functions to build different applications, like encoders, decoders, image viewers and so on. We hope it is enough for you to adopt IPP for your particular application, is not it? Or do you have some specific concern?

Regards,
Vladimir

0 Kudos
duane
Beginner
458 Views
I'm just asking because the JVT reference software is nowhere near real-time.. I was just curious if the Intel IPP version is fast enough to be used in a real-time application, or if it is mainly meant for processing offline files. I'm working on compiling the samples. but as there are no project files for visual studio, it's a bit more challenging.
0 Kudos
duane
Beginner
458 Views
Let me just clarify.. What I am asking is if the H.264 encoder sample using the Intel IPP 5.0 Library is fast enough to be used on a modern machine in real time.. I may get the answer myself once I compile the sample, but surely someone most know how fast it is ;)
0 Kudos
Vladimir_Dudnik
Employee
458 Views

you know, performance depends on many different factors, like encoder parameters, video frame size and so on.

But surely, IPP H.264 encoder is able to work in real-time on modern computers with using average size video.

Vladimir

0 Kudos
Emmanuel_W_
New Contributor I
458 Views

The H.264 decoder sample seems to work fine in realtime.

However the H.264 encoder sampleseems to introduce a delay over a second when encoding a CIF stream even though the CPU usage is very low. Still trying to figure out why.

Emmanuel

0 Kudos
huangzubin
Beginner
458 Views
i test the ipp 5.0 h264 encoder on windows xp, Pentium M 715 (1.5Ghz), encode a cif video with follow params
H264EncoderParams param;
param.key_frame_controls.method = 1;
param.key_frame_controls.interval = 100;
param.B_Frame_Rate = 1;
param.src_width = _info.width;
param.src_height = _info.height;
param.dst_width = _info.width;
param.dst_height = _info.height;
param.frame_rate_code = 5;
param.key_frame_controls.method = param.rate_controls.method = H264_RCM_MPEG2; // RC method(0 - quant_codes, 1 - CBR MBwise, 2 - CBR framewise, 3 - Debug);
param.rate_controls.bitrate = 100000;//_info.bitrate;
param.key_frame_controls.rate_controls.bitrate = param.B_frame_rate_controls.bitrate = param.rate_controls.bitrate;
param.rate_controls.quant = 26;
param.B_frame_rate_controls.quant = param.rate_controls.quant;
param.key_frame_controls.rate_controls.quant = 10;

param.key_frame_controls.interval = param.key_frame_controls.idr_interval = _info.fps * 10;//N (# of frames in between I frames), //IDR interval. Last two parameters must be equal.
param.B_frame_rate_controls.method = param.rate_controls.method;


param.B_Frame_Rate = 0; //Number of B frames between I (or P) and next P
param.treat_B_as_reference = 0;// treat B as a reference (only 0 is supported!)
param.num_ref_frames = 2;// num_ref_frames (2-16),
param.num_ref_to_start_code_B_slice = 1; //minimum length of list1 for backward prediction (only 1 is supported!).
param.level_idc = 40;// level_idc (check that num_ref_frames and frame size are in accordance with the level)


param.me_split_8x8s = 0; // subblock split
param.me_search_x = param.me_search_y = 4; // search x,search_y
param.use_weighted_pred = param.use_weighted_bipred = param.use_implicit_weighted_bipred = 0; // weighted prediction, weighted biprediction implicit weighted biprediction (not supported!)

param.use_spatial_direct_pred = 0; // direct type (0 - temporal 1 - spatial)
param.use_direct_inference = 0; // direct_inference_flag
param.entropy_coding_mode = 1;
param.Deblocking_Filter_Mode = 1; // deblocking mode (0 - "on", 1 - "off")
param.Deblocking_Filter_Alpha = 0; // deblocking_filter_alpha [-6,6]
param.Deblocking_Filter_Beta = 0; // deblocking_filter_beta [-6,6]
param.entropy_coding_mode = 1; // entropy coding mode (0-cavlc,1-cabac)
param.cabac_init_idc = 0; // cabac_init_idc (0,1,2)
param.coding_type = 0; // picture coding type (0 - only FRM, 1 - only FLD , 2 - only AFRM, 3 - pure PicAFF(no MBAFF) 4 PicAFF + MBAFF). Only 0 (FRM) is supported!
param.numThreads = 1;
param.FrameRate = _info.fps;
((H264VideoEncoder*)enc)->Init(&param);
but I only got about 10-12fps with full cpu load, but the x264 can got about 30 fps with same environment/param, so anyone know why? thanks
0 Kudos
Reply