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

How to improve the quality of the h264 encoder?

Lior_Messinger
Beginner
491 Views
Hi
We are looking for a way to improve the quality of the h264 encoder, which is suboptimal. except the deblocking filter, which produces a good smoothing, we cannot find anything else which provides a real improvement. could anyone suggest anything?
here's a visual example. (B) supposed to be much superior to (A), but still, we cannot really see ANY difference.
any ideas? any explanations?
thanks much
Lior
this image uses baseline profile (66), deblocking filter and
2 1 1 /* num_ref_frames (2-16), minimum length of list1 for backward prediction , number of slices. */
3 0 4 4 /* ME method (1-6), subblock split, search x,search_y */
1 0 /* direct type (0 - temporal 1 - spatial 2 - auto); direct_inference_flag */
2 /* picture coding type */
this one is when using high profile, deblocking and
8 1 1 /* num_ref_frames (2-16), minimum length of list1 for backward prediction (only 1 is supported!), number of slices. */
2 2 12 12 /* ME method (1-6), subblock split, search x,search_y */
1 1 /* direct type (0 - temporal 1 - spatial 2 - auto); direct_inference_flag */
0 /* picture coding type */
Hi
We really need a way to optimize the quality of the resulting video, which is suboptimal. except the deblocking filter, which produces a good smoothing, we cannot find anything else which provides a real improvement. could you suggest anything?
here's a visual example. (B) supposed to be much superior to (A), but still, we cannot really see ANY difference.
any ideas? any explanations?
thanks muchLior
A. http://img33.imageshack.us/img33/5813/low400kbpsdeblockingh26.jpgthis image uses baseline profile (66), deblocking filter and2 1 1 /* num_ref_frames (2-16), minimum length of list1 for backward prediction , number of slices. */3 0 4 4 /* ME method (1-6), subblock split, search x,search_y */1 0 /* direct type (0 - temporal 1 - spatial 2 - auto); direct_inference_flag */2 /* picture coding type */

B> http://img638.imageshack.us/img638/8797/low400kbpslatesthh264hi.jpgthis one is when using high profile, deblocking and
8 1 1 /* num_ref_frames (2-16), minimum length of list1 for backward prediction (only 1 is supported!), number of slices. */2 2 12 12 /* ME method (1-6), subblock split, search x,search_y */1 1 /* direct type (0 - temporal 1 - spatial 2 - auto); direct_inference_flag */0 /* picture coding type */

0 Kudos
4 Replies
dzhou_tac
Beginner
491 Views

Hi,

I found there are problems with IPP H264 Encoder, which creates much bigger encoded size than original h264 stream.

Have you try to increase bitrate? This may generate better image. I know to increaes the bitrate probably is not you are asking.

david

0 Kudos
andrewk88
Beginner
491 Views

Hi
We are looking for a way to improve the quality of the h264 encoder, which is suboptimal. except the deblocking filter, which produces a good smoothing, we cannot find anything else which provides a real improvement. could anyone suggest anything?
here's a visual example. (B) supposed to be much superior to (A), but still, we cannot really see ANY difference.
any ideas? any explanations?
thanks much
Lior
this image uses baseline profile (66), deblocking filter and
2 1 1 /* num_ref_frames (2-16), minimum length of list1 for backward prediction , number of slices. */
3 0 4 4 /* ME method (1-6), subblock split, search x,search_y */
1 0 /* direct type (0 - temporal 1 - spatial 2 - auto); direct_inference_flag */
2 /* picture coding type */
this one is when using high profile, deblocking and
8 1 1 /* num_ref_frames (2-16), minimum length of list1 for backward prediction (only 1 is supported!), number of slices. */
2 2 12 12 /* ME method (1-6), subblock split, search x,search_y */
1 1 /* direct type (0 - temporal 1 - spatial 2 - auto); direct_inference_flag */
0 /* picture coding type */
Hi
We really need a way to optimize the quality of the resulting video, which is suboptimal. except the deblocking filter, which produces a good smoothing, we cannot find anything else which provides a real improvement. could you suggest anything?
here's a visual example. (B) supposed to be much superior to (A), but still, we cannot really see ANY difference.
any ideas? any explanations?
thanks muchLior
A. http://img33.imageshack.us/img33/5813/low400kbpsdeblockingh26.jpgthis image uses baseline profile (66), deblocking filter and2 1 1 /* num_ref_frames (2-16), minimum length of list1 for backward prediction , number of slices. */3 0 4 4 /* ME method (1-6), subblock split, search x,search_y */1 0 /* direct type (0 - temporal 1 - spatial 2 - auto); direct_inference_flag */2 /* picture coding type */

B> http://img638.imageshack.us/img638/8797/low400kbpslatesthh264hi.jpgthis one is when using high profile, deblocking and
8 1 1 /* num_ref_frames (2-16), minimum length of list1 for backward prediction (only 1 is supported!), number of slices. */2 2 12 12 /* ME method (1-6), subblock split, search x,search_y */1 1 /* direct type (0 - temporal 1 - spatial 2 - auto); direct_inference_flag */0 /* picture coding type */

If I'm not mistaken you're trying to encode a relatively high resolution video at low bitrate "400kbit/sec", so in general your expectations for a video quality should not be too high.

Some ideas to consider:

a) try pre-processing of input video

b) set-up more agressive deblocking filtering using offsets

c)try to use these tools:8x8 transform, CABAC, B-frames, multiple ref. frames, don't use INTER sub-partitions smaller than 8x8, use hpel and qpel accurate motion vectors

d) use good rate control scheme

Best regards,

AndrewK

0 Kudos
Lior_Messinger
Beginner
491 Views

Andrew,

Thank you SO MUCH for this reply. this is a huge help, and we are going to try all the above suggestions. We already improved much our pre-processing (resizing, deinterlacing) in recent days, and I wondered if you could elaborate a little on the other suggestions.

specifically, when we looked on h264.par we couldn't find an exact wording that would point to deblocking offsets and half/quarter pixel motion estimation. could you point us maybe?

also, what would be a good rate control scheme? we see in h264.parRC method(0 - quant_codes, 1 - CBR MBwise, 2 - CBR framewise, 3 - Debug) - what do you think we should use? what would be good "start qp values for I, P, B slices" that would improve quality?

I guess we sound like total newbies - which we are, using the h264.par as-is. we are learning on the go, and it just take time to read the books :) (but we are).

in any case, again, very grateful for your help,

Lior

0 Kudos
Chao_Y_Intel
Moderator
491 Views

Hi Lior,

For Rate control method, you can choose 2, here are some sample par files for H.264 encoding, it may provide some help:

http://software.intel.com/en-us/articles/setting-h264-encoding-parameters-in-intel-ipp-media-processing-samples/

Thanks,

Chao

0 Kudos
Reply