MPEG4-FGS
所属分类:流媒体/Mpeg4/MP4
开发工具:Visual C++
文件大小:4376KB
下载次数:92
上传日期:2006-06-26 11:04:07
上 传 者:
alexkong
说明: 一个MPEG4-FGS的源代码,包括编解码。该源代码适合应用于网络视频。
(an MPEG4- FGS's source code, including codecs. The source code suitable for use in network video.)
文件列表:
fgs\asp\common\Debug (0, 2006-04-26)
fgs\asp\common\common.dsp (20653, 2006-04-26)
fgs\asp\common\common.plg (30521, 2006-04-26)
fgs\asp\common (0, 2006-04-26)
fgs\asp\Debug (0, 2006-04-26)
fgs\asp\dec\Debug (0, 2006-04-26)
fgs\asp\dec\dec.dsp (8387, 2006-04-26)
fgs\asp\dec\dec.plg (47049, 2006-04-26)
fgs\asp\dec\fgs1.cfg (5458, 2006-04-26)
fgs\asp\dec\fgs1_dec.ctl (794, 2006-04-26)
fgs\asp\dec\fgs2_dec.ctl (792, 2006-04-26)
fgs\asp\dec\pred_mc.seg (25344, 2006-04-26)
fgs\asp\dec (0, 2006-04-26)
fgs\asp\enc\enc.dsp (12434, 2006-04-26)
fgs\asp\enc\enc.plg (68293, 2006-04-26)
fgs\asp\enc\encode.dat (25963, 2006-04-26)
fgs\asp\enc\fgs1.bits (22065, 2006-04-26)
fgs\asp\enc\fgs1.cfg (5509, 2006-04-26)
fgs\asp\enc\fgs1_enc.ctl (504, 2006-04-26)
fgs\asp\enc\fgs2.bits (0, 2006-04-26)
fgs\asp\enc\fgs2.bits_fgs (0, 2006-04-26)
fgs\asp\enc\fgs2.cfg (5498, 2006-04-26)
fgs\asp\enc\fgs2_enc.ctl (504, 2006-04-26)
fgs\asp\enc\fgsstat.dat (1937, 2006-04-26)
fgs\asp\enc (0, 2006-04-26)
fgs\asp\asp.dsw (1092, 2006-04-26)
fgs\asp\asp.ncb (3032064, 2006-04-27)
fgs\asp\fgs1.cfg (5497, 2006-04-26)
fgs\asp\fgs1_enc.ctl (504, 2006-04-26)
fgs\asp\asp.opt (114688, 2006-04-27)
fgs\asp (0, 2006-04-26)
fgs\FGS_server\FGS_FGST_server_P_FRAMES.c (4650, 2006-04-26)
fgs\FGS_server\FGS_server.c (3259, 2006-04-26)
fgs\FGS_server\Makefile (102, 2006-04-26)
fgs\FGS_server\Makefile_debug (104, 2006-04-26)
fgs\FGS_server\Makefile_FGS_FGST_server_P_FRAMES (144, 2006-04-26)
fgs\FGS_server (0, 2006-04-26)
fgs\machines\ALPHA_options (2614, 2006-04-26)
fgs\machines\CONVEX_options (2589, 2006-04-26)
fgs\machines\HP_options (2649, 2006-04-26)
... ...
This file contains seven sections
1. About the Software
2. Compiling the Software
3. Running the Encoder Software
4. Running the Decoder Software
5. Notes/Known Bugs/Problems
6. Using Traces in the Decoder
7. Using Random Access
8. Using software for bitstream exchange
9. Basic flags used in Makefile
Edited by:
Noel Brady & Noel O'Connor
Teltec Ireland
Noel.Brady@Teltec.DCU.ie
Noel.OConnor@Teltec.DCU.ie
wollborn@tnt.uni-hannover.de
ferran@gps.tsc.upc.es
Robert.Danielsen@nta.no
zhou@hhi.de
Aasmund.Sandvand@nta.no
beifrig@nlvl.com
m-frater@adfa.oz.au
jdkim97@hei.co.kr
cspark@super5.hyundai.co.kr
jhkweon@hei.co.kr
brandau@hhi.de
heising@hhi.de
suehring@hhi.de
benzler@tnt.uni-hannover.de
======================================================================
1. ABOUT THE SOFTWARE ------------------------------------------------
======================================================================
This README file accompanies the release of the MPEG-4 VM software as
developed within the framework of the European ACTS project MoMuSys.
The software contains an encoder and decoder compliant as much as
possible with FCD.
Some of these options will be included in future releases.
Nevertheless, we encourage MPEG participants outside of MoMuSys to
provide these modules or some new modules that may have to be
implemented for future releases and we will integrate them. If you
have the intention to implement any new part, state this intention by
sending a mail to majordomo@research.kpn.com. It is still possible to have
some hidden bugs as it is extremely difficult to check all coding
possibilities the encoder has. We are continually working on the
software to enhance it and to implement the MPEG-4 new capabilities.
Any problems or suggestions you have for improving the software should
also be sent to this reflector.
To subscribe to the Software Integration (MPEG4 Visual VM integration) reflector:
Send the following e-mail to majordomo@psl.com.sg :
SUBSCRIBE sw_int your-email-address
To unsubscribe from the Software Integration reflector:
Send the following e-mail to majordomo@psl.com.sg :
UNSUBSCRIBE sw_int your-email-address
If you have some difficulties with subscribing/unsubscribing, please
contact owner-sw_int@psl.com.sg .
In general, by providing this software, we are hoping to encourage
collaboration on software development within MPEG. We have provided
also on the same ftp sites a document covering the data structures and
programming rules which we have used within the software. Please read
the header copyright attached to all files in the vm_common, vm_enc and vm_dec
directories. For data structures used in MoMuSys please refer to the file vm_common/include/momusys.h.
======================================================================
2. COMPILING THE SOFTWARE --------------------------------------------
======================================================================
The software C sources are provided in 3 directories/modules
i.e. vm_enc, vm_common, vm_dec. The vm_enc directory
contains sources for implementing the encoder. The vm_common directory
contains sources which are used in both encoder and decoder
e.g. motion compensation. The vm_dec directory contains sources for
implementing the decoder. It may be integrated into one or more of the
other directories later on. Makefiles and documentation files are
provided in the top level directory.
The software is written to strict ANSI C rules and designed to compile
under a variety of compilers. The software is compiled using the GNU
make utility i.e. gmake. (Warning: the classical make does not work).
During compilation, the sources within each module are compiled into a
library and placed under the lib directory. Due to the module
structure described above, it is necessary always to compile the
vm_common library. If it is necessary only to compile the encoder for
instance, delete the the word vm_dec from line 32 of the Makefile.
Alternatively, the decoder executable only can be produced by deleting
the word vm_enc at the same line number.
The Makefiles provided are designed to maintain several library
versions in parallel. That is, at any one time, the lib directory can
store several library files built for different systems e.g. SOLARIS1,
SOLARIS2, LINUX. Furthermore, libraries with debug information can
coexist with the normal libraries.
Currently, the software has been compiled and tested with the gcc
compiler on several hardware platforms, see the PORTABILITY file. Some
minor adjustments in the Makefiles may be required to compile with
other compilers.
Prior to compiling the software, one may need to edit the files in the
machines directory to set up the correct paths for the compiler and
other utilities.
For example, if your system is running SOLARIS1 then edit the file
machines/SOLARIS1_options and type
> make -e SYSTEM=SOLARIS1
to begin the compilation.
To view all the make options, type
> make usage
Here is a summary of the utilities you will require to use this software:
Requirements
------------
Mandatory: cproto-3pl7
GNU make-3.74 or higher
a GNU gcc compiler (see PORTABILITY file)
Optional : GNU rcs-5.6.0.1 or higher for RCS revision control.
GNU perl version 5.001 for automatic HTML documentation option.
(and of course a HTML Web browser for this latter option)
Please note: In the distributed version the prototype files are already
generated. If you have any problems with them, please touch
all the c-files in the source directory and they will be
created again, using your local cproto tool.
2.1 AUTOMATIC PROTOTYPE GENERATION
The makefiles support automatic prototype generation. For each C
source file in the directory vm_enc/src, there will be one *.p file
produced and placed in the vm_enc/include/proto directory. This *.p
file will contain a function prototype for each function defined in
the source file. It is recommended that this prototype file is
included within a header file (*.h) in the vm_enc/include
directory. The header file is then included within the relevant source
files.
To use this automatic feature, it is required that the 'cproto'
utility is available on your system. The source and makefiles for this
utility can be retrieved from the same ftp site where you downloaded
the VM software. The file is called cproto.tar.gz.
2.2 AUTOMATIC DOCUMENT GENERATION
Requirements: perl and a HTML viewer
* To generate the doc:
- Modify the path of perl in the first line of generate_doc.pl
- Run : make doc
It will create HTML files in the vm_common/doc, vm_enc/doc and vm_dec/doc
directories.
To view the doc , load : vm_enc/doc/vm_enc.html
To produce doc from your own source files :
generate_doc.pl recognizes the following keywords:
HeaderBegin
HeaderEnd
CommentBegin
CommentEnd
--
Usually add a box like this on top on the file :
/*************************************************HeaderBegin****************/
/* */
/* File : vop.c */
/* Module : vm */
/* */
/*************************************************HeaderEnd******************/
Enclose your own comments (anywhere in the source file) between a line
containing "CommentBegin" and a line containing "CommentEnd", like this:
/***********************************************CommentBegin*****************
* -- VOP_CodeInter -- code one image normally or two images as a PB-frame
*
* put here your comments>
*
***********************************************CommentEnd*******************/
The line starting with " --" will also be extracted.
2.3 SUPPORTING IMAGE FILE FORMATS
The software is capable of reading and writing RAW image file
formats. For example, a sequence stored in merged yuv format without
headers can be read and written. Alternatively, the y, u and v data
can be in separate files. The source code for this is provided in
io_generic.c and io_raw.c in vm_common/src. If you wish to customise
the software for use with your own specific image file format, read
the next section
2.3.1 Customising the I/O Software
Each new user of the software must make some small modifications to
allow the software to operate with their specific image file
format. This involves including new code in the file
vm_common/src/io_generic.c and vm_common/include/ io_generic.h. For
example, an organisation named ACME uses a file format which is
unsupported. The lines
#ifdef _ACMEIO_
ReadVopACME(y_file,u_file,v_file,alpha_file,number,format,curr_vop_in);
#endif
are added to the function ReadVopGeneric(), and the lines
#ifdef _ACMEIO_
WriteVopACME(curr_vop_in,y_file,u_file,v_file,alpha_file,number,
format,mode, write_alpha);
#endif
are added to the function WriteVopGeneric() in io_generic.c.
The source for the ACME i/o functions is put in a file io_acme.c and
placed in the vm_common/src directory. The corresponding header file
io_acme.h is placed in the vm_common/include directory
The lines
#ifdef _IO_ACME_
#include "io_acme.h"
#endif
are added to io_generic.h in the include directory.
The software must then be compiled with the directive -D_IO_ACME_.
This is simply done by setting the EXTRA_CFLAGS variable in Makefile
(line 54).
e.g. EXTRA_CFLAGS = -D_IO_ACME_
In order to write compliant site-specific I/O routines, see the
prototypes below or the HTML documentation for ReadVopGeneric() and
WriteVopGeneric() i.e. doc/io_generic.c.html.
The prototypes of these IO functions are:
Void ReadVopGeneric(Char *y_file,
Char *u_file,
Char *v_file,
Char *alpha_file,
Int number,
Char *format,
Vop *vop)
Void WriteVopGeneric(Vop *vop,
Char *y_file,
Char *u_file,
Char *v_file,
Char *alpha_file,
Int number,
Char *format,
Char *mode
Int write_alpha)
where : y_file - name of vop Y file on disk
u_file - name of vop U file on disk
v_file - name of vop V file on disk
alpha_file - name of vop alpha map on disk
number - Temporal location of image fields (i.e.
number = 0, is first frame in disk sequence,
number = 1, is second, and so on)
format - Partners preferred image format (defined
in io_generic.h)
mode - For writing, either "APPEND" or "OVERWRITE"
vop - pointer to vop to be filled
write_alpha - a flag to indicate whether the alpha plane
of the vop is written to disk.
*** n.b. *** For ReadVopGeneric(), the vop to be filled is assumed
to be allocated outside this function. MoMuSys vops are allocated
with the dimensions of U & V half that of Y & Alpha (when coding
a vop this is assumed in numerous places). Therefore this function
should fill the image fields of the vop in this manner i.e.
whatever way the sequences are stored on disk, any up/down
sampling should be performed within this function.
======================================================================
3. RUNNING THE ENCODER SOFTWARE --------------------------------------
======================================================================
The encoder is controlled by a control file and some
arguments passed to it.
To run : vm_enc.exe control file [stats file]
control_file - Name of control file
stats_file - Name of file on disk to store the encoding statistics
If the user does not specify a parameter for stats file the encoding
statistics will be written to the file 'encode.dat'.
3.1 CONTROL FILE
The control file contains high level control information required for
running the encoder. Some example control files (*.ctl) are supplied
with the software. A .ctl file must contain:
n1 <-- Number of Video Objects (VOs) to code
n2 <-- Number of Video Objects (VTCs) to code
display.y <-- The name of the composited display seq. on disk (Y comp.)
display.u <-- The name of the composited display seq. on disk (U comp.)
display.v <-- The name of the composited display seq. on disk (V comp.)
width <-- Width in pixels of the display
height <-- Height in pixels of the display
0 <-- {post-filter type: 0 - disabled, 1 - deblock,
2 - deringing, 3 - combined}
BitsPerPixel <-- pixel depth
VO0.cfg <-- Name of first VO configuration file
.
.
VOn1.cfg <-- Name of N1th VO configuration file
VTC0.cfg <-- Name of first VTC configuration file
.
.
VTCn2.cfg <-- Name of N2th VTC configuration file
n <-- {Type of rate control: 0-NONE, 1-VM4, 2-VM5+, 3-TM5}
n|n|n|n|n|n <-- {RC String: Alg|rate_mod|dist_mod|Target|buffer|mode}
3.2 VO and VTC CONFIGURATION FILE
A configuration file contains all information required for coding all
Video Object Layers (VOLs) of a particular VO. Some example
configuration files (*.cfg) are supplied with the
software. A .cfg file must contain:
*****************************************************************
* VO Configuration Information *
*****************************************************************
VO Id <-- VO Id
n <-- Number of layers (1, single layer coding,
2, temporally, Spatial scalable coding)
*****************************************************************
* BASE VOL Configuration Information *
*****************************************************************
ident <---MPEG-4 Version identifier : 1-Version1 , 2:Version2
VOL Id <-- VOL Id
VOL Type <-- VOL Type indication 1-Simple, 2-Simple Scalable,
3-Core, 4-Main, etc.
Frame Rate <-- VOL frame rate (Hz)
M <-- Number of B-VOPs (M-1) between two consecutive P-VOPs
VOL dim x <-- These are the dimensions (of Y (= Alpha)) of the VOPs
VOL dim y to be used in encoding this VOL (before bounding
rectangle extraction.
disk seq frame rate <-- This is the frame rate of the VOL sequence (all
components) on disk.
alpha type <-- Type of alpha channel to be used 0-RECTANGULAR, 1-BINARY,
2-GREY LEVEL, 3- BINARY SHAPE CODING ONLY
mac_enable <-- Enable MAC
only if mac_enble
alpha_extension <-- in case of GRAY LEVEL:video_object_layer_shape_extension
(0-15), otherwise ignored
OBMC disable <-- OBMC disable: 1-disable, 0 -enable}
quantizer precision <-- number of bits used to transmit quantiser
pixel depth <-- number of bits per pixel
VOL.y <-- This is the name of the file containing the Y image data for the VOL
VOL.u <-- This is the name of the file containing the U image data for the VOL
VOL.v <-- This is the name of the file containing the V image data for the VOL
VOL.a <-- This is the name of the file containing the alpha map for the VOL
only if mac_enable and Gray Level for each VOP GREY LEVEL file
VOL.a1 <-- This is the name of the file containing the VOP GREY LEVEL
for the VOL
write coded <-- Write the coded VOPs to disk, 0 - no write, 1 - write
CODED.y <-- This is the name of the file containing the coded Y component
CODED.u <-- This is the name of the file containing the coded U component
CODED.v <-- This is the name of the file containing the coded V component
CODED.a <-- This is the name of the file containing the coded alpha component
only if mac_enable and Gray Level for each VOP GRAY LEVEL file:
CODED.a1 <-- This is the name of the file containing the coded
VOP GREY LEVEL
VOL.bits <-- Name of bitstream file on disk for this VOL
start frame <-- VOL start frame
end frame <-- VOL end frame
start time <-- Time (in ms) at which VOL first appears
target bit-rate <-- Target bit-rate for VOL
1.|1.|1. <-- Global RC Parameters: I|P|B for UPM1, position|max_dist for UPM2
alpha th <-- Alpha coding threshold (for binary alpha mask)
change_CR_disable<-- change_CR_disable: 0 - enable, 1 - disable
quant type <-- VOL quant. type select: 0 - H.263 quant, 1 - MPEG2 quant.
0 <-- VOL load_intra_quant_mat: 0-no, 1-userdefined,
2-MPEG4 VM7, 3- MPEG2 Default,
4-MPEG2 TM5
iqmat.dat <-- file name for userdefined intra_quant_mat if userdefined
3 <-- VOL load_nonintra_quant_mat: 0-no, 1-userdefined,
2-MPEG4 VM7 3-MPEG2 Default
4-MPEG2 TM5
nqmat.dat <-- file name for userdefined nonintra_quant_mat if userdefined
0 <-- VOL load_gray_intra_quant_mat: 0-no, 1-userdefined,
2-MPEG4 VM7, 3-MPEG2 Default,
4-MPEG2 TM5
giqmat.dat <-- file name for userdefined gray_intra_quant_mat if
userdefined
0 <-- VOL load_gray_nonintra_quant_mat: 0-no, 1-userdefined,
2-MPEG4 VM7, 3-MPEG2
Default, 4-MPEG2 TM5
gnqmat.dat <-- file name for userdefined gray_nonintra_quant_mat if
userdefined
quant_Intra <-- Initial value for quantizer - INTRA
quant_Inter <-- Initial value for quantizer - P_VOPs
quant_Inter <-- Initial value for quantizer - B_VOPs
quant_GL_intra <-- Quantizer for gray level alpha maps - I-VOPS
quant_GL_inter <-- Quantizer for gray level alpha maps - P-VOPS
quant_GL_inter <-- Quantizer for gray level alpha maps - B-VOPS
quant_GL_update <-- Quantizer update disable flag for gray level quantization
rounding control<-- Flag to disable rounding control: 0 - enabled, 1 - disabled
initial rounding<-- Initial value for rounding control: 0/1
error resilience<-- Flag to disable error r ... ...
近期下载者:
相关文件:
收藏者: