General VP6 settings | |
| |
enum | FE2_CompressMode { COMPRESSMODE_GOOD, COMPRESSMODE_BEST } |
Valid compress modes for VP6, influences encoder speed. More... | |
enum | vp6profile { VP6_E, VP6_S } |
Valid profiles for use with the FE2_VP6_PROFILE parameter. More... | |
typedef enum vp6profile | vp6profile_t |
Valid profiles for use with the FE2_VP6_PROFILE parameter. | |
#define | FE2_VP6_BITRATE |
Alias for FE2_CODECPARAM_BITRATE. | |
#define | FE2_VP6_KFINTTYPE |
Alias for FE2_VCODECPARAM_KFINTTYPE. | |
#define | FE2_VP6_KFFREQ |
Alias for FE2_VCODECPARAM_KFFREQ. | |
#define | FE2_VP6_RC_MODE |
Alias for FE2_VCODECPARAM_RC_MODE. | |
#define | FE2_VP6_CXMODE |
VP6 compress mode. | |
#define | FE2_VP6_SHARPNESS |
Codec parameter for sharpness. | |
#define | FE2_VP6_NOISE_REDUCTION |
Codec parameter for noise reduction. | |
#define | FE2_VP6_PROFILE |
Codec parameter for encoding profile. | |
Codec name | |
| |
#define | FE2_CODEC_VP6 |
Codec name for use with Flix2_AddCodec(). | |
Advanced VP6 settings | |
| |
#define | FE2_VP6_CONCURRENCY |
Codec parameter for concurrency level. | |
#define | FE2_VP6_UNDERSHOOT_PCT |
Codec parameter for undershoot percentage. | |
#define | FE2_VP6_MIN_Q |
Codec parameter for minimum quantizer. | |
#define | FE2_VP6_MAX_Q |
Codec parameter for maximum quantizer. | |
#define | FE2_VP6_TEMPORAL_RESAMPLING |
Codec parameter for temporal resampling. | |
#define | FE2_VP6_TEMPORAL_DOWN_WATERMARK |
Codec parameter for temporal down watermark percentage. | |
CBR-Specific | |
| |
#define | FE2_VP6_STREAM_PEAK_BITRATE |
The maximum bitrate allowed in the stream. | |
#define | FE2_VP6_STREAM_PREBUFFER |
Seconds of preload that are necessary before starting playback. | |
#define | FE2_VP6_STREAM_OPTIMAL_BUFFER |
Buffer size that the encoder strives to reach or maintain in case of specific frame overshoots. | |
#define | FE2_VP6_STREAM_MAX_BUFFER |
The maximum size of the buffer, in seconds. | |
VBR-Specific | |
| |
#define | FE2_VP6_2PASS_MIN_SECTION |
VBR_2PASSControl minimum section datarate | |
#define | FE2_VP6_2PASS_MAX_SECTION |
VBR_2PASSControl maximum section datarate |
The VP6 (Flash 8) video codec.
Example Usage:
sc = Flix2_AddCodec(&codec, flix, FE2_CODEC_VP6); // Use 450kbit if(sc == ON2_OK) sc = Flix2_CodecSetParam(codec, FE2_VP6_BITRATE, 450.0);
Defaults for some encoder parameters are determined based on the bits per pixel, which is determined as follows:
The current defaults are:
| <.03 | <.07 | <.12 | <.20 | >=.20 ================================================================ FE2_VP6_MIN_Q | 25 | 15 | 15 | 5 | 5 FE2_VP6_MAX_Q | 62 | 56 | 50 | 40 | 32 FE2_VP6_SHARPNESS | 1 | 1 | 5 | 7 | 7 FE2_VP6_NOISE_REDUCTION | 3 | 0 | 0 | 0 | 0 FE2_VP6_TEMPORAL_RESAMPLING | 1 | 1 | 0 | 0 | 0
Using the above defaults some material may fail to achieve the requested bitrate. This is highly material dependent, but the result will be a clip with a reduced datarate. If you are intent on achieving a specific datarate and find that your clips are missing it the following settings will help:
===================================== FE2_VP6_MIN_Q | 4 FE2_VP6_NOISE_REDUCTION | 0 FE2_VP6_TEMPORAL_RESAMPLING | 1 FE2_VP6_STREAM_PREBUFFER | 5 FE2_VP6_STREAM_OPTIMAL_BUFFER | 5
Reasoning:
#define FE2_CODEC_VP6 |
Codec name for use with Flix2_AddCodec().
#define FE2_VP6_2PASS_MAX_SECTION |
VBR_2PASSControl maximum section datarate
This value is given as a percentage. The highest datarate, i.e., , that can be streamed, and also the highest datarate that the encoder will allow, no matter how difficult the section is.
#define FE2_VP6_2PASS_MIN_SECTION |
VBR_2PASSControl minimum section datarate
This value is given as a percentage. The lowest datarate, i.e., , that the encoder will allow for any section, no matter how easy the section is. This value is used to prevent difficult sections from stealing too many bits from easy sections.
#define FE2_VP6_BITRATE |
Alias for FE2_CODECPARAM_BITRATE.
Codec parameter for stream bitrate. Compressed stream bitrate in kbits/sec.
#define FE2_VP6_CONCURRENCY |
Codec parameter for concurrency level.
Setting this value to 1 will allow the encode process to take advantage of multiple cores/processors yielding a potentially significant gain in performance.
Resolution | framesiz_bytes | memreq_increase/processor | memreq_increase/2 | memreq_increase/4 | memreq_increase/8 ========================================================================================================================================= 320x240 (QVGA) | 115200 (.11MiB) | 13824000 (13.18MiB) | 27648000 (26.37MiB) | 55296000 (52.73MiB) | 110592000 (105.47MiB) 640x480 (VGA) | 460800 (.44MiB) | 55296000 (52.73MiB) | 110592000 (105.47MiB) | 221184000 (210.94MiB) | 442368000 (421.88MiB) 720x480 (NTSC) | 518400 (.49MiB) | 62208000 (59.33MiB) | 124416000 (118.65MiB) | 248832000 (237.30MiB) | 497664000 (474.61MiB) 720x576 (PAL) | 622080 (.59MiB) | 74649600 (71.19MiB) | 149299200 (142.38MiB) | 298598400 (284.77MiB) | 597196800 (569.53MiB) 1280x720 (720p) | 1382400 (1.32MiB) | 165888000 (158.2MiB) | 331776000 (316.41MiB) | 663552000 (632.81MiB) | 1327104000 (1265.63MiB)
#define FE2_VP6_CXMODE |
#define FE2_VP6_KFFREQ |
Alias for FE2_VCODECPARAM_KFFREQ.
Video codec parameter for keyframe frequency. Value is in video frames. The interpretation depends on the setting of FE2_VCODECPARAM_KFINTTYPE
#define FE2_VP6_KFINTTYPE |
Alias for FE2_VCODECPARAM_KFINTTYPE.
Video codec parameter for the keyframe interval type. Valid values are defined by FE2_VideoKeyframeTypes.
#define FE2_VP6_MAX_Q |
Codec parameter for maximum quantizer.
Determines the quality of the output. A lower maximum number produces higher quality output.
#define FE2_VP6_MIN_Q |
Codec parameter for minimum quantizer.
Determines the quality of the output. A lower minimum number produces higher quality output.
#define FE2_VP6_NOISE_REDUCTION |
Codec parameter for noise reduction.
Determines the level of noise filtering to apply in the preprocessor. 0 is no preprocessing, 6 is extreme preprocessing.
#define FE2_VP6_PROFILE |
Codec parameter for encoding profile.
#define FE2_VP6_RC_MODE |
Alias for FE2_VCODECPARAM_RC_MODE.
Video codec parameter for the rate control mode. Valid values are defined by FE2_VideoBitrateControls.
#define FE2_VP6_SHARPNESS |
Codec parameter for sharpness.
Controls the sharpness of the image in the output. This setting does not impact any other setting and is largely a matter of personal preference. A low sharpness setting will result in fewer visible artifacts but may blur the image somewhat; a high sharpness will result in a sharper image but may result in more visible artifacts.
#define FE2_VP6_STREAM_MAX_BUFFER |
#define FE2_VP6_STREAM_OPTIMAL_BUFFER |
#define FE2_VP6_STREAM_PEAK_BITRATE |
#define FE2_VP6_STREAM_PREBUFFER |
#define FE2_VP6_TEMPORAL_DOWN_WATERMARK |
Codec parameter for temporal down watermark percentage.
Specifies the percentage of the datarate buffer remaining below which the encoder is allowed to start dropping frames. Only used if FE2_VP6_TEMPORAL_RESAMPLING is enabled.
#define FE2_VP6_TEMPORAL_RESAMPLING |
Codec parameter for temporal resampling.
In particularly difficult regions, if enabled, the encoder will drop frames to achieve the target the data rate. The value of FE2_VP6_TEMPORAL_DOWN_WATERMARK determines the percentage of the datarate buffer below which the encoder is enabled to start dropping frames.
#define FE2_VP6_UNDERSHOOT_PCT |
typedef enum vp6profile vp6profile_t |
Valid profiles for use with the FE2_VP6_PROFILE parameter.
enum FE2_CompressMode |
Valid compress modes for VP6, influences encoder speed.
For use in calls to Flix2_CodecSetParam() and Flix2_CodecGetParam() for the FE2_VP6_CXMODE and FE2_VP6A_CXMODE. For general transcoding (i.e. decoding from one compressed format and encoding to VP6) COMPRESSMODE_GOOD
will provide adequate results and the best possible encode time. The quality gain using COMPRESSMODE_BEST
will only be visible when using clean raw source or compressing to extremely low bitrates.
enum vp6profile |
Valid profiles for use with the FE2_VP6_PROFILE parameter.