ITU - Telecommunications Standardization Sector
STUDY GROUP 16
Video Coding Experts Group (Question 15)
_________________
Sixth Meeting: Seoul, Korea, 3-6 November, 1998	Document  Q15-F-40
Filename: q15f40.doc
Generated: 31 Oct ’98	

Question:	Q.15/SG16	
Source:	Michael Gallant, Guy Cote, Stephan Wenger, Faouzi Kossentini
2356 Main Mall
Vancouver, BC, Canada
V6T 1Z4	
Tel:
Fax:
Email:	
(604) 822 4988
(604) 822 5949
{mikeg,guyc,stewe,faouzi}@ee.ubc.ca	
Title:	Release 0.1 of the completely redesigned H.263V2 reference codec	
Purpose:	Information	
_____________________________
Summary
Release 0.1 of the redesigned H.263 version 2 codec from UBC is now available.  The software was completely redesigned to allow for easier integration of new features, higher performance, better support of layered coding, and easier use.  All coding functionality resides now in a library.  In addition to this library, both a configuration-file based command-line user interface, and a Graphical User Interface (GUI) are included.

UBC maintained a publicly available reference codec for more than a year.  Three graduate students and a considerable amount of manpower of co-op students and research engineers were invested to achieve the level of functionality we have now.  Due to budget restrictions, we cannot continue to provide this free service to the standardization community any more, but have to ask for a partly compensation of our efforts.  The codec will be sold for US$1000.  After each Q.15 meeting we plan to include new functionality of the test model as well as any new agreed features of H.263V3, and offer an update for US$500.  The license agreement restricts the use of the codec under this license on evaluation and testing purposes, but UBC/ECE/SPMG will be happy to license the code  for commercial purposes, too.

Release 3.2 of the public H.263 version 2 codec, developed and maintained by UBC from March 1997 until present, which was based on the H.263 codec from Telenor, will remain freely available from our web page http://www.ee.ubc.ca/spmg/research/motion/h263plus and ftp site ftp://dspftp.ubc.ca/pub/tmn/ver-3.2/. No further releases of the public software will be made. 
Design Philosophy
The coder was designed as a library, with well-defined interfaces for the configuration (e.g. coding modes, rate control attributes etc.) and the Input and Output.  The data structures of those interfaces allow the easy integration of the library into prototypes of new products.  This library is delivered completely in C source code, to allow the integration of new features by the user.  The library allows changing coding parameters on a picture-to-picture basis when allowed by the syntax and the test model.  Each layer in case of layered coding will have its own configuration file, and up to 16 layers can be used.
In addition to this library, front-ends are provided.  A command-line driven front-end, using a configuration file similar to the one used in the MoMuSys MPEG-4 coder, can be used on both MS-Windows and UNIX machines.  The syntax of the configuration file is designed to allow easy automatic editing using tools like sed(1).  The generation of a large set of similar simulations, (e.g. for anchor generation) is thus as simple as with the old command line interface.  For MS-Windows users, a GUI is provided which gives on-the-spot information about PSNR, motion vectors, macroblock coding modes and similar along with a display of the original and the reconstructed picture.  Both configuration file and GUI frontends are designed to allow the easy integration of new features into the codec library without any changes at the frontends themselves, thus freeing the user from those tasks.
Some tools, especially for off-line PSNR measurement and for error-resilience related testing, are also included, as is an offline decoder.
Features and Functionality
The whole software package consists of the following modules
•	H.263V2 coder library C source code
•	H.263V2 fast coder library, MS-Windows object code only
•	Input and Output Modules, C source code
•	Configuration file parser/interpreter, C source code
•	Graphical User Interface, MS-Windows object code only
•	Support tools, C source code
•	All necessary header and resource files 
•	Makefiles and Project files for UNIX and MS Developer Studio
•	Executables for MS-Windows
In the following section, some features of the modules are described.  All modules share a significant improvement in terms of functionality, ease of use (e.g. the integration of new features) and speed compared to the freely available codec.   
H.263V2 coder library
The H.263V2 coder in this module implements all the functionality of the latest public domain coder version 3.2.0.  This includes
•	Coding-efficiency oriented optional modes D, E, F, G, I, J, M, S, T
•	Error resilience support, especially configurable I-Frame, I-GOB and I-MB frequency, and Video Redundancy Coding based on Annex N
•	All rate control mechanisms defined in TMN10, plus a ‘fixed frame rate’ rate control model developed for VQEG
•	Rate-distortion optimized source coding algorithms for motion estimation, mode selection, and quantization
Please note that some of these algorithms are not yet fully functional in the software release available during this meeting.
In addition we will release, after our debugging process is completed
•	Layered codec support for up to 16 layers, with the user option of multiplexing those layers into a single bitstream or delivering them in multiple bit streams.  
This update will be available in early December and will be free of charge.
In the next release, we will gladly add reasonable suggestions from users.
H.263V2 fast code library
This library, which will be delivered only as object code, contains a similar coder as the ‘slow code’ above, but with a speed increase of a factor of 1.5 to 4 depending on the sequence, bitrate, and machine type.  Optimizations contain a significant faster motion vector search, fast DCT algorithms with integrated quantization, and others.  The fast codes generate bitstreams that have a small measurable (but invisible) quality decrease due to some tradeoffs between accuracy of calculations and performance.
The fast code is able to encoder typical QCIF camera images (from a frame-grabber) at full frame-rate on a current high-end PC, making it a perfect tool for rapid prototyping of a terminal product.  We will gladly license C source code of this library for product developments to anybody interested, at very reasonable cost.
Configuration File parser and interpreter
This module is a replacement of the command-line-only user interface of the public domain code.  The advantage of using a configuration file are it’s easier use, better documentation, and the chance to add a significantly higher amount of control information in the future (we were running out of letters for controlling all the command-line options of the old coder  ).  Since one main use of the software package will be to integrate new coding schemes into the library, the configuration file includes custom code-points which allow the control of newly implemented features in the library.  The configuration file module compiles under MS-Windows and UNIX.
Graphical User Interface
The GUI, which is delivered only in MS-Windows object format, features two main functionalities: The coder interface, and the configuration file editor.
The coder interface starts the coder based on the information in a configuration file.  Both the source picture and the reconstructed picture can be displayed, the latter with information about motion vectors and mode decisions.  In addition a plot of the PSNR is generated and displayed.  This yield very fast turn-around times when checking the efficiency of coding mode combinations, or newly integrated features.
The configuration file editor can be used to quickly set up a set of  coding options in a configuration file, without the use of text editors.  While an expert user has not to rely on this, it is surely helpful for demo purposes.  It is also faster than to manually edit a configuration file.
The GUI proved to be a very useful tool even in a university’s research lab, because changes in coding options are now readily and quickly visible.  It’s nice enough for demonstrations within companies, or even to the public on conferences, in the back-stage of trade-show booths and similar.  We will gladly license the sources of the GUI to interested parties.
Support tools
A set of support tools will be available shortly, after some clean-up of the source code.  This includes
•	H.263V2 command-line decoder (similar to the public domain version), featuring some error resilience optimizations, and TCON error concealment
•	PSNR measurement both regular and “mobile” (as defined in Q15-E-50)
•	Packetization, De-packetization, and error simulator tools.
Makefiles, project files, resource files and header files
These files enable the experienced programmer not only to compile the coder, but also to implement their own configuration file or command-line frontend, new file formats, and similar.
Executables
MS-Windows executables are included that help to get a ‘running start’ in the use of the codec.  We might also be able to provide UNIX executables (at least for SUN Workstations under Solaris), if this is deemed to be helpful. 
Licensing and prices
As already mentioned, we cannot continue to provide the codec free of charge.  The license fees are as follows:

•	US$1000 for the use of the coder by a single person on a unlimited number of machines, including servers and
•	US$500 for any major updates of the initial software.  Updates will be available for download from a password-protected ftp-site

The license is restricted to evaluation and testing purposes only.  Product developments based on the source code are prohibited, unless an additional license agreement is signed that allows for the commercial use of the codec.  Details can be found in the attached copy of a license agreement.
Contacts and Support
UBC will provide support for the experienced user (such as a standardization expert) on a best effort basis.  There will be an Email account at UBC for all support queries.  Please understand that we are unable to provide a level of support usually found by hotlines from end-user software producers.

Any commercial inquires (including purchase orders) should be directed to

Stephan Wenger
Signal Processing and Multimedia Group
UBC / CICSR
2356 Main Mall
Vancouver V6T 1Z4

Fax.: +1-604-822-9013
Email: stewe@ece.ubc.ca

 

THIS SOFTWARE IS NOT FOR SALE
The software and documentation contained in this package are owned by the University of British Columbia and are subject to the following license terms and conditions.  Please read this license before you open the package.  If you do not agree to the terms and conditions of this License, you may return the software and documentation to the University of British Columbia for a full refund.
SOFTWARE LICENSE
This Software License is granted by the University of British Columbia ("UBC"), of 2075 Wesbrook Mall, Vancouver, British Columbia V6T 1W5, Canada to you as end user (the "Licensee") on the following terms and conditions:
1.	Grant of License
By paying the invoiced amount for the enclosed software package, mailing back the completed registration form and by abiding by the terms and conditions specified herein, the Licensee is granted the non-exclusive non-transferable right to use the enclosed software (the "Software") and documentation (the "Documentation") on a single computer at a single location.  Payment in full is due within THIRTY (30) days of receipt of the  Software Package.  The Licensee must pay for additional copies of the software and Documentation if more than one person will be using the Software at the same time on one or more computers.
2.	Ownership 
UBC retains all property, right, title and interest in and to the Software and Documentation, including, without limitation, all trade-marks, trade names, copyrights, patents and other intellectual property rights in the Software and Documentation.  UBC specifically retains the right to grant licenses of the Software and Documentation to other persons.
3.	Copy and Use Restriction 
The Licensee is permitted to make one backup copy and/or to make a single copy of the Software program on a hard disk, and any such copy together with the original must be kept in the Licensee's possession or control.  The Licensee shall reproduce and include the copyright notice of UBC on any and all copies, whether in whole or in part, in any form.  The Software and/or Documentation may not be rented or leased to others.  The Licensee may not modify, adapt, translate, reverse engineer, decompile, disassemble those parts of the Software that are distributed in object code form.  The Licensee may use the Software source code to create derivative work but only for ITU-U related evaluation and testing purposes.  The use of the source code for any purpose other than evaluation and testing, including the use of derivative works for the generation of commercial products, is strictly prohibited.
4.	Transfer Restriction
The Software and Documentation is licensed only to the Licensee, and may not be transferred, and this License may not be assigned to anyone else without the prior written permission of UBC.
5.	Termination
This License is in force until terminated.  This License will be terminated automatically if the Licensee fails to abide by any provisions of this Agreement, or if any petition, assignment or proposal is made against or by the Licensee under the Bankruptcy Act or if the Licensee is adjudged bankrupt, or makes an assignment for the benefit of  his/its creditors.  Upon termination, the Licensee shall return to UBC or destroy all copies of the Software and Documentation.  Notwithstanding the termination of this License, Article 7 herein shall remain in full force and effect.
6.	Up-date Policy
UBC may produce, from time to time, modifications and/or updates of the Software and/or Documentation.  Such modifications and updates may be made available as appropriate to those Licensees who have paid the appropriate up-date fee.
7.	Confidentiality
All  information, documentation, or object code which UBC may have imparted, or may from time to time impart to the Licensee relating to the Software or Documentation is proprietary and confidential.  The Licensee agrees that it shall use the same solely and in accordance with the provisions of this License and that it shall not at any time during or after expiry or termination of this License disclose the same, whether directly or indirectly, to any third party without UBC's prior written consent.
8.	Limited Warranty 
a)	The Licensee acknowledges that software in general is not error free and agrees that the existence of such errors shall not constitute a breach of this License.
b)	In the event that the Licensee discovers that the optical / magnetic medium on which the program resides is defective in materials or workmanship under normal use and notifies UBC of the defect within NINETY (90) days of the date of payment of the invoiced amount, then UBC shall at its sole option either refund the invoiced amount or provide a new copy of the Software on an exchange basis within a reasonable time.
(c)	The foregoing warranty is in lieu of all other warranties, express or implied, and UBC disclaims all warranties of merchantability and fitness for a particular purpose, and any other warranty implied at law or in equity.  UBC makes no representations regarding the use or the results of use of the Software and/or Documentation in terms of corrections, accuracy, reliability or otherwise.  Under no circumstances shall UBC be liable for a breach of any warranty, express or implied, if the Licensee alters or modifies the Software in any way, without the express written consent of UBC.
9.	Limitation of Liability	
In no event shall UBC be liable for special, indirect or consequential damages, including those damages arising from lost profits or the Licensee in the use or misuse of the Software and/or Documentation, even if UBC has been advised of the possibility of such damages.  UBC's liability on any other claim for loss or liability, including negligence, arising out of or connected with this License, or the Software or Documentation, shall in no case exceed the invoiced amount paid for the right to use the Software and Documentation.
10.	Miscellaneous
(a)	This License shall be governed by and construed in accordance with the laws of the Province of British Columbia, Canada.
(b)	This License contains the entire agreement and understanding between the Licensee and UBC with respect to the subject matter hereof and supersedes any prior agreement or understanding whether oral or written, relating to the subject matter of this License.  This License may only be modified by a written agreement signed by UBC.