=============================================
Snow Video Codec Specification Draft 20080110
=============================================
Introduction:
=============
This specification describes the Snow bitstream syntax and semantics as
well as the formal Snow decoding process.
The decoding process is described precisely and any compliant decoder
MUST produce the exact same output for a spec-conformant Snow stream.
For encoding, though, any process which generates a stream compliant to
the syntactical and semantic requirements and which is decodable 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 | |
| | : Bl
没有合适的资源?快使用搜索试试~ 我知道了~
ffmpeg-checkout-2008-11-26.rar_26/11_FFmpeg checkout_FFmpeg-chec
共2000个文件
svn-base:1467个
c:585个
h:252个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 14 浏览量
2022-09-19
14:20:29
上传
评论
收藏 28.16MB RAR 举报
温馨提示
资源推荐
资源详情
资源评论
收起资源包目录
ffmpeg-checkout-2008-11-26.rar_26/11_FFmpeg checkout_FFmpeg-chec (2000个子文件)
x86inc.asm 14KB
fft_mmx.asm 11KB
dsputil_yasm.asm 3KB
build_avopt 387B
h264.c 310KB
h263.c 211KB
snow.c 180KB
postprocess_template.c 162KB
dsputil.c 161KB
vc1.c 152KB
ffserver.c 149KB
mpegvideo_enc.c 139KB
ffmpeg.c 138KB
vorbis_data.c 129KB
swscale_template.c 126KB
dsputil_vis.c 119KB
dsputil_mmx.c 119KB
swscale.c 107KB
utils.c 99KB
rgb2rgb_template.c 98KB
mpegvideo.c 87KB
h264dsp_mmx.c 85KB
mpeg12.c 85KB
msmpeg4data.c 83KB
vp3.c 81KB
ffplay.c 79KB
mpegaudiodec.c 78KB
imgconvert.c 77KB
utils.c 72KB
simple_idct_mmx.c 71KB
motion_est.c 71KB
mov.c 70KB
qdm2.c 68KB
matroskadec.c 63KB
qpel.c 61KB
msmpeg4.c 60KB
adpcm.c 60KB
movenc.c 59KB
ac3dec_data.c 59KB
aac.c 58KB
vorbis_dec.c 57KB
dsputil_altivec.c 56KB
postprocess_altivec_template.c 53KB
rtsp.c 52KB
aactab.c 49KB
rv34.c 49KB
dv.c 48KB
dca.c 48KB
huffyuv.c 47KB
dsputil_iwmmxt_rnd_template.c 47KB
ac3dec.c 47KB
indeo3.c 46KB
mjpegdec.c 46KB
motion_est_template.c 44KB
mpegts.c 44KB
dsputilenc_mmx.c 43KB
h264_altivec.c 43KB
jrevdct.c 43KB
dnxhddata.c 42KB
mpegenc.c 42KB
asf.c 40KB
flacenc.c 40KB
ac3enc.c 39KB
snowdsp_mmx.c 39KB
error_resilience.c 39KB
cook.c 38KB
dvbsubdec.c 38KB
yuv2rgb_altivec.c 38KB
dsputil_mmx_avg_template.c 37KB
postprocess.c 37KB
svq3.c 37KB
mxfdec.c 37KB
h264pred.c 37KB
avidec.c 36KB
mlpdec.c 35KB
mpeg12enc.c 34KB
vorbis_enc.c 33KB
atrac3.c 33KB
ratecontrol.c 32KB
matroskaenc.c 32KB
roqvideoenc.c 31KB
mxfenc.c 31KB
ffv1.c 30KB
nutdec.c 29KB
dnxhdenc.c 29KB
asf-enc.c 28KB
raw.c 28KB
flicvideo.c 28KB
mpegvideo_mmx.c 27KB
interplayvideo.c 27KB
wmadec.c 27KB
apedec.c 27KB
truemotion1.c 27KB
rmdec.c 26KB
4xm.c 26KB
h263dec.c 26KB
rv10.c 26KB
nutenc.c 25KB
cavs.c 25KB
mpegvideo_altivec.c 25KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
林当时
- 粉丝: 98
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功