=============================================
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 : ....... .......... |
没有合适的资源?快使用搜索试试~ 我知道了~
JRTPlib+FFMPEG
共912个文件
c:469个
h:241个
cpp:42个
4星 · 超过85%的资源 需积分: 9 116 下载量 119 浏览量
2010-01-20
15:22:18
上传
评论
收藏 3.67MB RAR 举报
温馨提示
最新3.7JRTPLIB库内有五个参考examples,还有最新的FFMPEG库,Linux,VC下均能通过编译,个人感觉很有价值,上传上去和大家一块分享,也希望目前正在做这方面研究的朋友也能上传您的资料! 人人为我,我为人人!
资源推荐
资源详情
资源评论
收起资源包目录
JRTPlib+FFMPEG (912个子文件)
Makefile.am 2KB
Makefile.am 859B
Makefile.am 670B
Makefile.am 367B
Makefile.am 367B
Makefile.am 316B
Makefile.am 286B
Makefile.am 36B
Makefile.am 27B
Makefile.am 24B
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
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
msmpeg4.c 63KB
h264dsp_mmx.c 59KB
vorbis_dec.c 58KB
dsputil_altivec.c 58KB
mov.c 56KB
movenc.c 54KB
adpcm.c 53KB
postprocess_altivec_template.c 52KB
huffyuv.c 48KB
mjpegdec.c 47KB
rtsp.c 46KB
postprocess.c 45KB
motion_est_template.c 45KB
dv.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
vp3dsp_sse2.c 36KB
h264pred.c 36KB
avidec.c 35KB
mpeg12enc.c 35KB
vorbis_enc.c 34KB
ratecontrol.c 33KB
svq3.c 32KB
atrac3.c 32KB
mpegvideo_mmx.c 32KB
roqvideoenc.c 31KB
ffv1.c 31KB
v4l.c 29KB
asf-enc.c 29KB
flicvideo.c 29KB
interplayvideo.c 28KB
apedec.c 28KB
wmadec.c 28KB
matroskaenc.c 28KB
truemotion1.c 28KB
4xm.c 27KB
nutdec.c 27KB
h263dec.c 26KB
wmv2.c 26KB
yuv2rgb.c 26KB
imgresample.c 26KB
rv10.c 26KB
truemotion2.c 26KB
mpegvideo_altivec.c 26KB
lcldec.c 25KB
共 912 条
- 1
- 2
- 3
- 4
- 5
- 6
- 10
zhqxm1983
- 粉丝: 7
- 资源: 19
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Matlab的运动目标跟踪系统+源代码+全部数据+文档说明+详细注释(高分课程设计)
- 基于Matlab的人脸考勤系统+源代码+全部数据+文档说明+详细注释(高分课程设计)
- 基于Matlab的异常行为检测+源代码+全部数据+文档说明+详细注释(高分课程设计)
- 基于MATLAB的条形码识别系统源码+全部数据+文档说明+详细注释+文档(高分课程设计)(带GUI界面)
- 基于C#,Winform,SQL SERVER的条形码识别操作系统+源代码+文档说明(期末大作业)
- 10_base.apk.1
- matlab-great-drawing-输出月份英文名pta
- My-Graduation-母亲节祝福python
- My-Graduation-Project华中农业大学python
- 摄像头图像采集系统.pages
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页