=============================================
SNOW Video Codec Specification Draft 20070103
=============================================
Intro:
======
This Specification describes the snow syntax and semmantics as well as
how to decode snow.
The decoding process is precissely described and any compliant decoder
MUST produce the exactly same output for a spec conformant snow stream.
For encoding though any process which generates a stream compliant to
the syntactical and semmantical requirements and which is decodeable by
the process described in this spec shall be considered a conformant
snow encoder.
Definitions:
============
MUST the specific part must be done to conform to this standard
SHOULD it is recommended to be done that way, but not strictly required
ilog2(x) is the rounded down logarithm of x with basis 2
ilog2(0) = 0
Type definitions:
=================
b 1-bit range coded
u unsigned scalar value range coded
s signed scalar value range coded
Bitstream syntax:
=================
frame:
header
prediction
residual
header:
keyframe b MID_STATE
if(keyframe || always_reset)
reset_contexts
if(keyframe){
version u header_state
always_reset b header_state
temporal_decomposition_type u header_state
temporal_decomposition_count u header_state
spatial_decomposition_count u header_state
colorspace_type u header_state
chroma_h_shift u header_state
chroma_v_shift u header_state
spatial_scalability b header_state
max_ref_frames-1 u header_state
qlogs
}
if(!keyframe){
update_mc b header_state
if(update_mc){
for(plane=0; plane<2; plane++){
diag_mc b header_state
htaps/2-1 u header_state
for(i= p->htaps/2; i; i--)
|hcoeff[i]| u header_state
}
}
update_qlogs b header_state
if(update_qlogs){
spatial_decomposition_count u header_state
qlogs
}
}
spatial_decomposition_type s header_state
qlog s header_state
mv_scale s header_state
qbias s header_state
block_max_depth s header_state
qlogs:
for(plane=0; plane<2; plane++){
quant_table[plane][0][0] s header_state
for(level=0; level < spatial_decomposition_count; level++){
quant_table[plane][level][1]s header_state
quant_table[plane][level][3]s header_state
}
}
reset_contexts
*_state[*]= MID_STATE
prediction:
for(y=0; y<block_count_vertical; y++)
for(x=0; x<block_count_horizontal; x++)
block(0)
block(level):
mvx_diff=mvy_diff=y_diff=cb_diff=cr_diff=0
if(keyframe){
intra=1
}else{
if(level!=max_block_depth){
s_context= 2*left->level + 2*top->level + topleft->level + topright->level
leaf b block_state[4 + s_context]
}
if(level==max_block_depth || leaf){
intra b block_state[1 + left->intra + top->intra]
if(intra){
y_diff s block_state[32]
cb_diff s block_state[64]
cr_diff s block_state[96]
}else{
ref_context= ilog2(2*left->ref) + ilog2(2*top->ref)
if(ref_frames > 1)
ref u block_state[128 + 1024 + 32*ref_context]
mx_context= ilog2(2*abs(left->mx - top->mx))
my_context= ilog2(2*abs(left->my - top->my))
mvx_diff s block_state[128 + 32*(mx_context + 16*!!ref)]
mvy_diff s block_state[128 + 32*(my_context + 16*!!ref)]
}
}else{
block(level+1)
block(level+1)
block(level+1)
block(level+1)
}
}
residual:
residual2(luma)
residual2(chroma_cr)
residual2(chroma_cb)
residual2:
for(level=0; level<spatial_decomposition_count; level++){
if(level==0)
subband(LL, 0)
subband(HL, level)
subband(LH, level)
subband(HH, level)
}
subband:
FIXME
Tag description:
----------------
version
0
this MUST NOT change within a bitstream
always_reset
if 1 then the range coder contexts will be reset after each frame
temporal_decomposition_type
0
temporal_decomposition_count
0
spatial_decomposition_count
FIXME
colorspace_type
0
this MUST NOT change within a bitstream
chroma_h_shift
log2(luma.width / chroma.width)
this MUST NOT change within a bitstream
chroma_v_shift
log2(luma.height / chroma.height)
this MUST NOT change within a bitstream
spatial_scalability
0
max_ref_frames
maximum number of reference frames
this MUST NOT change within a bitstream
update_mc
indicates that motion compensation filter parameters are stored in the
header
diag_mc
flag to enable faster diagonal interpolation
this SHOULD be 1 unless it turns out to be covered by a valid patent
htaps
number of half pel interpolation filter taps, MUST be even, >0 and <10
hcoeff
half pel interpolation filter coefficients, hcoeff[0] are the 2 middle
coefficients [1] are the next outer ones and so on, resulting in a filter
like: ...eff[2], hcoeff[1], hcoeff[0], hcoeff[0], hcoeff[1], hcoeff[2] ...
the sign of the coefficients is not explicitly stored but alternates
after each coeff and coeff[0] is positive, so ...,+,-,+,-,+,+,-,+,-,+,...
hcoeff[0] is not explicitly stored but found by subtracting the sum
of all stored coefficients with signs from 32
hcoeff[0]= 32 - hcoeff[1] - hcoeff[2] - ...
a good choice for hcoeff and htaps is
htaps= 6
hcoeff={40,-10,2}
an alternative which requires more computations at both encoder and
decoder side and may or may not be better is
htaps= 8
hcoeff={42,-14,6,-2}
ref_frames
minimum of the number of available reference frames and max_ref_frames
for example the first frame after a key frame always has ref_frames=1
spatial_decomposition_type
wavelet type
0 is a 9/7 symmetric compact integer wavelet
1 is a 5/3 symmetric compact integer wavelet
others are reserved
stored as delta from last, last is reset to 0 if always_reset || keyframe
qlog
quality (logarthmic quantizer scale)
stored as delta from last, last is reset to 0 if always_reset || keyframe
mv_scale
stored as delta from last, last is reset to 0 if always_reset || keyframe
FIXME check that everything works fine if this changes between frames
qbias
dequantization bias
stored as delta from last, last is reset to 0 if always_reset || keyframe
block_max_depth
maximum depth of the block tree
stored as delta from last, last is reset to 0 if always_reset || keyframe
quant_table
quantiztation table
Highlevel bitstream structure:
=============================
--------------------------------------------
| Header |
--------------------------------------------
| ------------------------------------ |
| | Block0 | |
| | split? | |
| | yes no | |
| | ......... intra? | |
| | : Block01 : yes no | |
| | : Block02 : ....... .......... |
没有合适的资源?快使用搜索试试~ 我知道了~
ffmpeg_x264
共871个文件
c:520个
h:241个
asm:21个
4星 · 超过85%的资源 需积分: 24 90 下载量 155 浏览量
2008-02-22
15:04:54
上传
评论
收藏 3.29MB RAR 举报
温馨提示
FFmpeg is a complete solution to record, convert and stream audio and video. <br>It includes libavcodec, the leading audio/video codec library. FFmpeg is developed <br>under Linux, but it can compiled under most operating systems, including Windows.
资源推荐
资源详情
资源评论
收起资源包目录
ffmpeg_x264 (871个子文件)
pixel-a.asm 43KB
pixel-a.asm 30KB
pixel-sse2.asm 22KB
dct-a.asm 22KB
mc-a.asm 20KB
mc-a.asm 19KB
pixel.asm 19KB
pixel-sse2.asm 18KB
dct-a.asm 17KB
predict-a.asm 15KB
predict-a.asm 14KB
deblock-a.asm 13KB
deblock-a.asm 13KB
mc-a2.asm 9KB
mc-a2.asm 9KB
quant-a.asm 8KB
amd64inc.asm 7KB
quant-a.asm 6KB
i386inc.asm 5KB
cpu-a.asm 3KB
cpu-a.asm 3KB
AUTHORS 2KB
build_avopt 396B
h264.c 311KB
h263.c 216KB
postprocess_template.c 190KB
snow.c 186KB
dsputil.c 153KB
ffserver.c 152KB
vc1.c 147KB
dsputil_mmx.c 147KB
mpegvideo_enc.c 141KB
ffmpeg.c 138KB
swscale_template.c 136KB
vorbis_data.c 131KB
dsputil_vis.c 123KB
swscale.c 104KB
rgb2rgb_template.c 101KB
analyse.c 97KB
vp3.c 96KB
utils.c 93KB
mpegvideo.c 92KB
matroskadec.c 91KB
msmpeg4data.c 85KB
mpeg12.c 85KB
mpegaudiodec.c 83KB
imgconvert.c 80KB
ffplay.c 79KB
motion_est.c 79KB
simple_idct_mmx.c 72KB
utils.c 71KB
qpel.c 71KB
qdm2.c 69KB
encoder.c 67KB
msmpeg4.c 63KB
pixel.c 62KB
h264dsp_mmx.c 59KB
vorbis_dec.c 58KB
dsputil_altivec.c 58KB
macroblock.c 57KB
ratecontrol.c 57KB
mov.c 56KB
movenc.c 54KB
adpcm.c 53KB
postprocess_altivec_template.c 52KB
huffyuv.c 48KB
mjpegdec.c 47KB
x264_gtk.c 46KB
rtsp.c 46KB
postprocess.c 45KB
motion_est_template.c 45KB
dv.c 44KB
cabac.c 44KB
jrevdct.c 44KB
h264_altivec.c 44KB
flacenc.c 44KB
dca.c 44KB
mpegts.c 43KB
mpegenc.c 43KB
mxf.c 41KB
asf.c 41KB
ac3dec.c 40KB
indeo3.c 40KB
cook.c 40KB
ac3enc.c 40KB
dvbsubdec.c 40KB
yuv2rgb_altivec.c 40KB
error_resilience.c 40KB
snowdsp_mmx.c 39KB
rtp.c 38KB
cabac.c 37KB
vp3dsp_sse2.c 36KB
h264pred.c 36KB
x264.c 36KB
avidec.c 35KB
mpeg12enc.c 35KB
vorbis_enc.c 34KB
ratecontrol.c 33KB
svq3.c 32KB
frame.c 32KB
共 871 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9
gisfun
- 粉丝: 1
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页