Streaming HD H.264 encoder on programmable processors

Programmable processors have great advantage over dedicated ASIC design under intense time-to-market pressure. However, real-time encoding of high-definition (HD) H.264 video (up to 1080p) is a challenge to most existing programmable processors. On the other hand, model-based design is widely accepted in developing complex media program. Stream model, an emerging model-based programming method, shows surprising efficiency on many compute-intensive domains especially for media processing. On the basis, this paper proposes a set of streaming techniques for H.264 encoding, and then develops all of the code based on the X264 reference code. Our streaming H.264 encoder is a pure software implementation completely written in high-level language without special hardware/algorithm support. Real execution results show that our encoder achieves significant speedup over the original X264 encoder on various programmable architectures: on X86 CoreTM2 E8200 the speedup is 1.8x, on MIPS 4KEc the speedup is 3.7x, on TMS320 C6416 DSP the speedup is 5.5x, on stream processor STORM-SP16 G220 the speedup is 6.1x. Especially, on STORM processor, the streaming encoder achieves the performance of 30.6 frames per second for a 1080P HD sequence, satisfying the real-time requirement. These indicate that streaming is extremely efficient for this kind of media workload. Our work is also applicable for other media processing applications, and provides architecture insights into dedicated ASIC or FPGA HD H.264 encoders.

[1]  George Ho,et al.  PAPI: A Portable Interface to Hardware Performance Counters , 1999 .

[2]  M. Liou,et al.  Video compression with parallel processing , 2002, Parallel Comput..

[3]  William J. Dally,et al.  Comparing Reyes and OpenGL on a stream architecture , 2002, HWWS '02.

[4]  William Thies,et al.  StreamIt: A Language for Streaming Applications , 2002, CC.

[5]  Peter Mattson,et al.  A programming system for the imagine media processor , 2002 .

[6]  William J. Dally,et al.  Media processing applications on the Imagine stream processor , 2002, Proceedings. IEEE International Conference on Computer Design: VLSI in Computers and Processors.

[7]  M. Horowitz,et al.  The stream virtual machine , 2004, Proceedings. 13th International Conference on Parallel Architecture and Compilation Techniques, 2004. PACT 2004..

[8]  Pat Hanrahan,et al.  Brook for GPUs: stream computing on graphics hardware , 2004, ACM Trans. Graph..

[9]  Marisa E. Campbell,et al.  SIGGRAPH 2004 , 2004, INTR.

[10]  Mendel Rosenblum,et al.  Stream programming on general-purpose processors , 2005, 38th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO'05).

[11]  Soonhoi Ha,et al.  Conversion of reference C code to dataflow model H.264 encoder case study , 2006, Asia and South Pacific Conference on Design Automation, 2006..

[12]  Tiago da Fonseca,et al.  Open-Loop Prediction in H.264/AVC for High Definition Sequences , 2007, Anais do XXV Simpósio Brasileiro de Telecomunicações.

[13]  Wei Wu,et al.  On-Chip Memory System Optimization Design for the FT64 Scientific Stream Accelerator , 2008, IEEE Micro.