找回密码
 注册

新浪微博登陆

只需一步, 快速开始

QQ登录

只需一步,快速开始

快捷导航
事务所专题-柯南20周年纪念事件簿
搜索
查看: 1002|回复: 5

[转贴] 关于RV10的新消息

[复制链接]

名侦探

发表于 2004-3-9 12:13:44 | 显示全部楼层 |阅读模式
英文好的翻译一下巴~~~~~~~
RealVideo 10 codecProperties
I wrote the following documentation for all the existing RealVideo 9/10 encoder codecProperties (and a macro to convert from Wiki to vBulletin), so here we go:

Audience

To use these options, include the following in the
videoStream section of the audience:


code:--------------------------------------------------------------------------------
<videoStream>

  <codecProperties type="bag">
    <customProperty type="mytype">setting</customProperty>
  </codecProperties>

</videoStream>
--------------------------------------------------------------------------------


Registry

All the options also have their corresponding registry
equivalent. The registry settings are meant as an
alternative to enable features when using GUIs that do
not (yet, or will ever) support some or all the custom features.
For instance, when a new codec is used in GUI Helix Producer,
Adobe Premiere, or Vegas Video, neither of which supports
custom codec options. If you edit your audiences by hand anyway,
or use a GUI that supports the custom options you would like to
use, you do not need registry settings at all.

The location is HKEY_LOCAL_MACHINE\SOFTWARE\RealNetworks\RV9.
For type="uint", use DWORD. Remember to use convert between
decimal and hex. For type="bool" also use DWORD, where 1 is
true, and 0 is false. For type='string' use String. An
example registry file would for instance be:


Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\RealNetworks\RV9]
"encoderComplexity"=dword:0000005a
"rcEnableCurveCompression"=dword:00000001
"rcAnalysisFileName"="\realvideo.pass"
"rcAnalysisLogFileName"="\realvideo.log"


Encoder general options

encoderComplexity

<encoderComplexity type="uint">[0-100]</encoderComplexity>

Set encoder complexity. This over-rides the setting passed
in from Producer.


100: Very High (95-100)
90 : High (85-94) ** Recommended
80 : Medium-High (78-84) ** 2nd Recommended
70 : Medium (70-77)
60 : Low (60-69)
50 : Very Low (50-59)

Default: 85

firstPassComplexity

<firstPassComplexity type="uint">[0-100]</firstPassComplexity>

Set encoder complexity to use for 1st pass in a 2-pass encode.

Default: Normally 65, or 50 when new
vbrUnconstrainedBitrate *) rate control is used.
*): This corresponds to the new rcEnableCurveCompression described below.

customPacketSize

<customPacketSize type="uint">[0-16000]</customPacketSize>

Force codec to use a certain packet (slice) size. Any number
can be specified, but larger than 16000 is not going to be
decodable by RealOne V2 and older, due to a bug in
interpreting the RM information.

Default : passed in from Producer (15000 for VBR with
bitrate greater than 450 kbps, otherwise 1352 or lower,
depending on bitrate)

calcPSNR

<calcPSNR type="bool">[true|false]</calcPSNR>

Enable or disable PSNR and other information being printed
in the rv9log.txt file

Default : false

enableRPR

<enableRPR type="bool">[true|false]</enableRPR>

Enable or disable the use of RPR (Reference Picture
Resampling) in the codec. Sometimes it may be desirable to
have the codec encode at the native resolution, no matter
how low the bitrate is. One good example is screen capture
video clips.

Default : true

enableAutoKeyFrames

<enableAutoKeyFrames type="bool">[true|false]</enableAutoKeyFrames>

Enable or disable the insertion of key frames at scene
changes. Since the encoder will have to re-encode the whole
frame, when it detects a scene change, this can be CPU
intensive for very high action sequences with frequent scene
changes.

Default : true, unless in Live mode under CPU duress.



noisyEdgeFilter

<noisyEdgeFilter type="bool">[true|false]</noisyEdgeFilter>

Enable or disable the noisy edge filter, i.e. the filter
that corrects single or double lines along the edge of the
video, resulting from bad capture or crop settings. The
noisy edge filter is bad for PSNR).

Default : true, unless calcPSNR is enabled.

useThreads

<useThreads type="bool">[true|false]</useThreads>

Enable or disable the use of threads in the encoder.

Default : use threads when more than one CPU, virtual or
real, is available.


writePreviewToFile

<writePreviewToFile type="string">filename</writePreviewToFile>

The encoder will save its reconstructed frames as
uncompressed I420. Will create and write an AVI file, if the
filename has .avi extension. This corresponds to the frames
shown in the "preview" window of the GUI RealProducer.

Default: off

exactPreview

<exactPreview type="bool">[true|false]</exactPreview>

Normally the encoder does not inloop B frames accurately,
since these are not used for future prediction. However,
with this option set to true, the frames will be inloop
deblocked just like the player/decoder will do.

Default: false

New Rate Control Options

rcEnableCurveCompression

<rcEnableCurveCompression type="bool">true</rcEnableCurveCompression>

Enables new curve compression based rate control This
disables all other RC modes, MSL and maxBitrate ignored
Still, include maxBitrate and MSL; needed for stream
properties

The new RC's goal is constant quality throughout the encode.
It works great at high bitrates, and is much more accurate
than the old rate control. For low bitrates, until more
advanced parameters are added, the old rate control, or an
external scaler is recommended. Specifically useful for low
bitrates would have been High bitrate scenes degradation (%)
and Low bitrate scenes improvement (%). These are not yet
implemented

Also, this constant quality is not the best solution for
highest overall or average PSNR. For my sample test clip, I
got a reduction of 0.3 dB average PSNR, but 6.5 dB better
minimum PSNR, corresponding to a huge visual improvement
When above params are added and used, this will help avg
PSNR

Other news about this RC, is that it allows 1st pass to be
run at the lowest possible complexity (50), with inloop
filter off This makes the 1st pass run even faster than
before

Since the analysis file is the same format as XviD uses, it
can be read, plotted, and analyzed with some of the same
tools. External scaler tools can be used as well Finally,
with this new RC, the 2nd pass can be re-run at different
target bitrates than the 1st pass.

WARNING: This rate control works only in 2-pass mode.
If you enable rcEnableCurveCompression, and run
a 1-pass encode, the encoder will run the 1st pass of
a 2-pass encode, and you will end up with a very large
output file. If you like, you can then run the 2nd
pass separately, using the rcPassNumber option below.

rcAnalysisFileName

<rcAnalysisFileName type="string">realvideo.pass</rcAnalysisFileName>

First pass analysis file, ASCII text, same format as XviD
This is possible, since all it contains are: frame types,
quants, MBs, frame sizes, (scalable and un-scalable part)
Can be read by XviD stats analysis tools, like this one :
http://atlas2.tgv.net/~media-video/...opic.php?t=3594
http://forum.doom9.org/showthread.php?s=&threadid=67639
An external scaler would add a last column (desired frame
size) The binary .stats format is not supported

rcLogFileName

<rcLogFileName type="string">realvideo.log</rcLogFileName>

Rate control log file from 2nd pass Useful only if problems
occur, and for the curious

rcTargetVideoSize

<rcTargetVideoSize type="uint">585728</rcTargetVideoSize>

Target filesize is kilobytes for /VIDEO ONLY/, over-rides
target bitrate If this option is used, rcSourceFrameRate is
not needed

rcKeyFrameBoost

<rcKeyFrameBoost type="uint">0</rcKeyFrameBoost>

Boost keyframes by rcKeyFrameBoost %

rcHighBitrateReduce

<rcHighBitrateReduce type="uint">0</rcHighBitrateReduce>

Reduce larger than average frames by rcHighBitrateReduce %
Usually good for average PSNR, and/or low/medium bitrate
streams, where the largest frames cost too many bits
compared to the PSNR achieved

rcLowBitrateBoost

<rcLowBitrateBoost type="uint">0</rcLowBitrateBoost>

Boost smaller than average frames by rcLowBitrateBoost %

rcPassNumber

<rcPassNumber type="uint">2</rcPassNumber>

Specify pass # to run, requires cmd line -dt or jobfile
enableTwoPass to 'false'. 2nd pass can be re-run with any
target bitrate changes, other parameters should be the same
When pass #1 is run by itself, Producer will appear to be
encoding normally, and also output a large RMVB, but it will
also output .pass file correctly.

Default: not used for 2-pass encodes.

Reference Quantizers

<rcPFrameRefQuant type="uint">6</rcPFrameRefQuant>
<rcBFrameRefQuant type="uint">10</rcBFrameRefQuant>

Quantizers to use for the 1st pass reference encoding Range
[0-30] Leave alone unless you know what you are doing Quants
do not correspond to MPEG-4 quants and do not scale the same
way either.

RC fine tuning

<rcOverFlowControlStrength type="uint">5</rcOverFlowControlStrength>
<rcMaxOverflowImprovement type="uint">50</rcMaxOverflowImprovement>
<rcMaxOverflowDegradation type="uint">50</rcMaxOverflowDegradation>

B Frames Control

maxConsecutiveBFrames

<maxConsecutiveBFrames type="uint">3</maxConsecutiveBFrames>

Leave B frame adaptivity ON, but sets the max number of B frames Only 3, 1, and
0 are allowed, due to current impl. restriction




更多内容见
http://forum.doom9.org/showthread.php?threadid=72321

杯户中学生

发表于 2004-3-9 14:51:53 | 显示全部楼层

回复:

完全看不懂
大概是写些什么
回复 喝彩 无视

使用道具 举报

觉醒的小五郎

发表于 2004-3-13 19:47:53 | 显示全部楼层

回复:

rv10 代码属性
我写以下的文档适用所有已经存在的rv9/10编码代码属性(以及一个宏把wiki转换成vbulletin),我们开始吧

视频(这个翻大不来的说,观众?)
用这些选项,包括audience的以下视频流部分

一段代码

注册表

所有的选项也有它们相关的注册对应。注册表设置意味着可以选择性的使用功能,当你使用不支持或还没支持一些或所有自定义的gui的话。
比如,当一段新的代码在Helix Producer,Adobe Premiere, 或Vegas Video中使用的话,它们都不支持自定义编码选项。如果你一定要手动编辑audience,或使用支持自定义选项  gui,你根本不需要进行注册表设置
位置在HKEY_LOCAL_MACHINE\SOFTWARE\RealNetworks\RV9.
如果type是uint,那么就用dword,记得使用十进制和16进制转换。
如果type是bool,也用dword,1是真,0是假
如果type是string,就用string,一个注册表的样板文件在下面
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\RealNetworks\RV9]
"encoderComplexity"=dword:0000005a
"rcEnableCurveCompression"=dword:00000001
"rcAnalysisFileName"="\realvideo.pass"
"rcAnalysisLogFileName"="\realvideo.log"

编码普通设置
编码复杂度
<encoderComplexity type="uint">[0-100]</encoderComplexity>
设置编码复杂度。这里参考了producer里的设置
100: 非常高 (95-100)
90 : 高 (85-94) ** 推荐
80 : 中高 (78-84) ** 第二推荐
70 : 中 (70-77)
60 : 低 (60-69)
50 : 非常低 (50-59)

缺省: 85
1pass复杂度

<firstPassComplexity type="uint">[0-100]</firstPassComplexity>

设置编码复杂度来给2pass中的1pass用.

缺省: 通常 65,新建的话 50
使用动态比特率编码.
这个和下面说的新的 rc曲线压缩 也相关.

自定义包大小

<customPacketSize type="uint">[0-16000]</customPacketSize>

强制代码使用特定的包大小. 任何数字都行,但大于16000将不能被ro2或老版本解码,因为rm文件会有终止错误

缺省 :从producer继承(15000,450k以上的VBR,或1352更低,取决于比特率)

计算PSNR

<calcPSNR type="bool">[true|false]</calcPSNR>

使或不使用pSNR 以及其他下面的在rv9log.txt打印信息

缺省 :不使用

使用RPR

<enableRPR type="bool">[true|false]</enableRPR>

使用或不使用rpr (参考画面重新取样)在代码中.有时我们可能需要有原始采样大小的编码,不管比特率多低.一个好的例子就是对视频剪辑屏幕截图.

缺省 :使用

使用自动关键帧

<enableAutoKeyFrames type="bool">[true|false]</enableAutoKeyFrames>

使用或不使用 在场景切换的时候插入关键帧.由于编码器会重新编码整个帧,当它检测到一个场景切换, 这将成为处理器准备非常高的频率场景切换动作队

缺省 :使用,除非在处理器胁迫下的在线模式.
(to be continued)
回复 喝彩 无视

使用道具 举报

名侦探

 楼主| 发表于 2004-3-13 20:07:45 | 显示全部楼层

回复:

Inloop filter options

inloopCutOffQuant

<inloopCutOffQuant type="uint">[0-30]</inloopCutOffQuant>

Inloop filter is turned off below this quant. Set to 0 to
always use inloop (this is the default, but in reality, the
default level is around 9 Set to 31, to completely disable
inloop postfilter When quant is below the threshold, the
encoder will skip the inloop filter, and put a bit in the
bitstream so the decoder will do the same. Use with caution
for low to medium bitrates. No inloop will lower PSNR as
well These quants do not correspond to MPEG-4 quants

Default: 0

inloopCutOffCompatible

<inloopCutOffCompatible type="bool">[true|false]</inloopCutOffCompatible>

Make bitstream 100% compatible with earlier*) decoders What
this means is that /key/frames will always be inloop
filtered with the default quant threshold. This is a bug in
old decoders, they always inloop filter keyframes. When set
to false, the threshold applies to all frame types. When an
old decoder tries to decode such a bitstream there will be a
very minor decoder mismatch, in most cases not visible. *:
RV8/9/10 decoders prior to RealPlayer 10 Gold

Default: false

inloopCutOffBUseRefQuant

<inloopCutOffBUseRefQuant type="bool">[true|false]</inloopCutOffBUseRefQuant>

If true, the threshold to enable the inloop filter for B
frames, will use the reference frame's quant. If false, the B
frame's quant is used.

Default: false

Inloop defaults for 'Sharp' setting in latest Producer

inloopCutOffQuant = 10
inloopCutOffCompatible = false
inloopCutOffBUseRefQuant = true
回复 喝彩 无视

使用道具 举报

名侦探

 楼主| 发表于 2004-3-13 20:09:16 | 显示全部楼层

回复:

Options rarely needed any more

patternAdaptivity

<patternAdaptivity type="uint">[0,1,2,3]</patternAdaptivity>

This parameter sets the number of discardable frames (B
frames) to be encoded in between each non-discardable (P or
I) frame. The pattern will then be fixed and non-adaptive.
For adaptive number of B frames, use maxConsecutiveBFrames,
as described above.

Default: adaptive, when property is not present.

scalingFactor

<scalingFactor type="uint">[0-199]</scalingFactor>

This parameter sets the quantization scaling factor for the
discardable frames, compared to the P/I frames. 0 means same
quantization. Ignored when used with
vbrUnconstrainedBitrate 2-pass rate control.

Default: adaptive, when property is not present.

rcSourceFrameRate

<rcSourceFrameRate type="uint">25000</rcSourceFrameRate>

If source != 30fps, this is temporarily needed, due to a bug
in Producer which sends the wrong framerate to the codec,
which needs the framerate to calculate target file size,
from bitrate Note that this param is an integer: fps * 1000
No longer needed in latest Producer.

Separable 2-pass with old rate control

firstPassFile

<firstPassFile type="uint">MyAnalysisFile.rva</firstPassFile>

Use extension .rva for the filename. Run producer in normal
2-pass mode. Now you can CTRL-C out of the 2nd pass, or let
it finish normally. In any case, you can then view
MyAnalysisFile.rva in the current directory, and
potentially edit it. Currently I would suggest only to touch
MinSuggestedQP, MaxSuggestedQP, and NumBFrames, or just
view the file out of curiosity. I have not tested any
changes to this file, so anything may happen. The same
applies if you change any other settings between the two
passes, for instance pre-filters or bitrates.

The default filename for the analysis file is
ENCsomerandomstring.rva. This can be renamed and/or used for
the 2nd pass as well, even if you did not specify a
FirstPassFile option. In production build codecs, this file
is stored in the $TEMP directory, or producer's tmp
directory, and needs to be copied to another filename before
Producer finishes the 2nd pass, or you press CTRL-C to exit
the 2nd pass.

secondPassFile

<secondPassFile type="uint">MyAnalysisFile.rva</secondPassFile>

Now encode with the '-dt' option to disable 2-pass. Include
filename extension .rva. If you do not add the -dt option,
producer will run two passes as it normally would, but with
a wasted 1st pass. The reason this is necessary, is that
this separable encoding mechanism is implemented in the
codec itself, without producer knowing about it.
回复 喝彩 无视

使用道具 举报

觉醒的小五郎

发表于 2004-3-13 22:33:38 | 显示全部楼层

回复:

噪音边界过滤

<noisyEdgeFilter type="bool">[true|false]</noisyEdgeFilter>

使用或不使用噪音边界过滤, 比如过滤器修正单或双线视频边缘,从坏的截取或截断设置中来.这个噪音边界过滤对psnr有害.

缺省: 使用,除非 calcPSNR使用中.

使用多线程

<useThreads type="bool">[true|false]</useThreads>

使用或不使用多线程编码.

缺省 : 多cpu下多线程 使用.

写到文件预览

<writePreviewToFile type="string">filename</writePreviewToFile>

编码器将保存重新构筑的帧为未压缩的i420.将创造和写一个AVI文件,如果文件名有avi扩展名的话.这和帧在realproducer预览窗口的显示有关.

缺省: 关闭

确切预览

<exactPreview type="bool">[true|false]</exactPreview>

基本上编码器不会精确的包揽b帧,因为这不用来预测以后.然而,有了这个设置开放后,帧将不会被阻挡的循环就想播放器/解码器那样.

缺省: 否

新的比率控制选项

rc使动曲线压缩

<rcEnableCurveCompression type="bool">true</rcEnableCurveCompression>

使用新的曲线压缩法基本比率控制。这将关闭所有rc模式,msl和最大比特率仍然忽略;需要流属性

新的rc的目标是整个编码的平均的质量.
它在高比特率工作很好,比旧的比率控制精确的多. 对于低比特率, 在更先进的元件被加进来前,旧的比特率控制或外部规划被推荐. 尤其对低比特率将得到高比特率的场景degradation (%)
and Low bitrate scenes improvement (%).这还没完成
Also, this constant quality is not the best solution for
highest overall or average PSNR. For my sample test clip, I
got a reduction of 0.3 dB average PSNR, but 6.5 dB better
minimum PSNR, corresponding to a huge visual improvement
When above params are added and used, this will help avg
PSNR

Other news about this RC, is that it allows 1st pass to be
run at the lowest possible complexity (50), with inloop
filter off This makes the 1st pass run even faster than
before

Since the analysis file is the same format as XviD uses, it
can be read, plotted, and analyzed with some of the same
tools. External scaler tools can be used as well Finally,
with this new RC, the 2nd pass can be re-run at different
target bitrates than the 1st pass.

WARNING: This rate control works only in 2-pass mode.
If you enable rcEnableCurveCompression, and run
a 1-pass encode, the encoder will run the 1st pass of
a 2-pass encode, and you will end up with a very large
output file. If you like, you can then run the 2nd
pass separately, using the rcPassNumber option below.

rcAnalysisFileName

<rcAnalysisFileName type="string">realvideo.pass</rcAnalysisFileName>

First pass analysis file, ASCII text, same format as XviD
This is possible, since all it contains are: frame types,
quants, MBs, frame sizes, (scalable and un-scalable part)
Can be read by XviD stats analysis tools, like this one :
http://atlas2.tgv.net/~media-video/...opic.php?t=3594
http://forum.doom9.org/showthread.php?s=&threadid=67639
An external scaler would add a last column (desired frame
size) The binary .stats format is not supported

rcLogFileName

<rcLogFileName type="string">realvideo.log</rcLogFileName>

Rate control log file from 2nd pass Useful only if problems
occur, and for the curious

rcTargetVideoSize

<rcTargetVideoSize type="uint">585728</rcTargetVideoSize>

Target filesize is kilobytes for /VIDEO ONLY/, over-rides
target bitrate If this option is used, rcSourceFrameRate is
not needed

rcKeyFrameBoost

<rcKeyFrameBoost type="uint">0</rcKeyFrameBoost>

Boost keyframes by rcKeyFrameBoost %

rcHighBitrateReduce

<rcHighBitrateReduce type="uint">0</rcHighBitrateReduce>

Reduce larger than average frames by rcHighBitrateReduce %
Usually good for average PSNR, and/or low/medium bitrate
streams, where the largest frames cost too many bits
compared to the PSNR achieved

rcLowBitrateBoost

<rcLowBitrateBoost type="uint">0</rcLowBitrateBoost>

Boost smaller than average frames by rcLowBitrateBoost %

rcPassNumber

<rcPassNumber type="uint">2</rcPassNumber>

Specify pass # to run, requires cmd line -dt or jobfile
enableTwoPass to 'false'. 2nd pass can be re-run with any
target bitrate changes, other parameters should be the same
When pass #1 is run by itself, Producer will appear to be
encoding normally, and also output a large RMVB, but it will
also output .pass file correctly.

Default: not used for 2-pass encodes.

Reference Quantizers

<rcPFrameRefQuant type="uint">6</rcPFrameRefQuant>
<rcBFrameRefQuant type="uint">10</rcBFrameRefQuant>

Quantizers to use for the 1st pass reference encoding Range
[0-30] Leave alone unless you know what you are doing Quants
do not correspond to MPEG-4 quants and do not scale the same
way either.

RC fine tuning

<rcOverFlowControlStrength type="uint">5</rcOverFlowControlStrength>
<rcMaxOverflowImprovement type="uint">50</rcMaxOverflowImprovement>
<rcMaxOverflowDegradation type="uint">50</rcMaxOverflowDegradation>

B Frames Control

maxConsecutiveBFrames

<maxConsecutiveBFrames type="uint">3</maxConsecutiveBFrames>

Leave B frame adaptivity ON, but sets the max number of B frames Only 3, 1, and
0 are allowed, due to current impl. restriction

先翻到这里。。会修改成完整版的。。
回复 喝彩 无视

使用道具 举报

您需要登录后才可以回帖 登录 | 注册 新浪微博登陆

本版积分规则

Archiver|手机版|小黑屋|名侦探柯南事务所 ( 沪ICP备05038770号 )

GMT+8, 2025-2-2 11:56 , Processed in 0.073028 second(s), 15 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表