|
@@ -106,11 +106,9 @@ static av_cold int encode_init(AVCodecContext* avc_context) |
|
|
} |
|
|
} |
|
|
t_info.colorspace = OC_CS_UNSPECIFIED; |
|
|
t_info.colorspace = OC_CS_UNSPECIFIED; |
|
|
t_info.pixelformat = OC_PF_420; |
|
|
t_info.pixelformat = OC_PF_420; |
|
|
t_info.target_bitrate = avc_context->bit_rate; |
|
|
|
|
|
t_info.keyframe_frequency = avc_context->gop_size; |
|
|
t_info.keyframe_frequency = avc_context->gop_size; |
|
|
t_info.keyframe_frequency_force = avc_context->gop_size; |
|
|
t_info.keyframe_frequency_force = avc_context->gop_size; |
|
|
t_info.keyframe_mindistance = avc_context->keyint_min; |
|
|
t_info.keyframe_mindistance = avc_context->keyint_min; |
|
|
t_info.quality = 0; |
|
|
|
|
|
|
|
|
|
|
|
t_info.quick_p = 1; |
|
|
t_info.quick_p = 1; |
|
|
t_info.dropframes_p = 0; |
|
|
t_info.dropframes_p = 0; |
|
@@ -120,6 +118,19 @@ static av_cold int encode_init(AVCodecContext* avc_context) |
|
|
t_info.noise_sensitivity = 1; |
|
|
t_info.noise_sensitivity = 1; |
|
|
t_info.sharpness = 0; |
|
|
t_info.sharpness = 0; |
|
|
|
|
|
|
|
|
|
|
|
if (avc_context->flags & CODEC_FLAG_QSCALE) { |
|
|
|
|
|
/* to be constant with the libvorbis implementation, clip global_quality to 0 - 10 |
|
|
|
|
|
Theora accepts a quality parameter p, which is: |
|
|
|
|
|
* 0 <= p <=63 |
|
|
|
|
|
* an int value |
|
|
|
|
|
*/ |
|
|
|
|
|
t_info.quality = av_clip(avc_context->global_quality / (float)FF_QP2LAMBDA, 0, 10) * 6.3; |
|
|
|
|
|
t_info.target_bitrate = 0; |
|
|
|
|
|
} else { |
|
|
|
|
|
t_info.target_bitrate = avc_context->bit_rate; |
|
|
|
|
|
t_info.quality = 0; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
/* Now initialise libtheora */ |
|
|
/* Now initialise libtheora */ |
|
|
if (theora_encode_init( &(h->t_state), &t_info ) != 0) { |
|
|
if (theora_encode_init( &(h->t_state), &t_info ) != 0) { |
|
|
av_log(avc_context, AV_LOG_ERROR, "theora_encode_init failed\n"); |
|
|
av_log(avc_context, AV_LOG_ERROR, "theora_encode_init failed\n"); |
|
|