Dynamic Bit Allocation for Video Conferencing
Midterm Report
Benjamin Pugliese <pugliese@andrew.cmu.edu>
Matthew Richey <mr6v@andrew.cmu.edu>
Mahesh Saptharishi <mahesh@andrew.cmu.edu>
Midterm Goals:
- Writing the necessary code for accessing video and audio hardware.
- Integrating the provided video codec.
- Writing a basic audio codec and networking layer.
- Demonstrating basic videoconferencing with two computers.
Accomplishments:
- Frame grabbing accomplished using Video for Windows.
- Raw audio inputted and outputted to sound card.
- Datagram socket interface written.
- H.263v2 encoder modified to take real-time video input.
- ADPCM audio compression implemented (4:1 compression ratio).
- Raw video remotely displayed.
Shortcomings:
- H.263v2 decoder not working with real-time input.
- Audio software only works on certain computers.
- System not completely integrated.
- System is not stable.
Conclusions:
Writing software interfaces to hardware took much longer than expected. A connectionless protocol for our data transmission (UDP) demonstrated better performance than a connection-oriented protocol (TCP). Our ADPCM code provided a constant bit rate, which does not lend itself to our dynamic bit allocation scheme (we would like to adjust audio parameters dynamically).
Future Plans:
- Fix the H.263v2 decoder so that it decodes in real-time.
- Develop a simple audio codec with adjustable parameters.
- Fully integrate the video conferencing system.
- Develop a scheme to implement dynamic bit allocation.
Code:
Find a compressed copy of our code here. All code was developed using Microsoft Visual C++ 6.0. Note: A few bugs still exist in this version and are being fixed.