Index: source/libvpx/examples/vp9_spatial_svc_encoder.c |
diff --git a/source/libvpx/examples/vp9_spatial_svc_encoder.c b/source/libvpx/examples/vp9_spatial_svc_encoder.c |
index 5a6097665615e27270f94497a15abdfe81069099..af8aa86485cabff76dea8ceaea95cf757a1761a9 100644 |
--- a/source/libvpx/examples/vp9_spatial_svc_encoder.c |
+++ b/source/libvpx/examples/vp9_spatial_svc_encoder.c |
@@ -25,6 +25,7 @@ |
#include "../tools_common.h" |
#include "../video_writer.h" |
+#include "../vpx_ports/vpx_timer.h" |
#include "vpx/svc_context.h" |
#include "vpx/vp8cx.h" |
#include "vpx/vpx_encoder.h" |
@@ -564,6 +565,8 @@ int main(int argc, const char **argv) { |
double sum_bitrate2 = 0.0; |
double framerate = 30.0; |
#endif |
+ struct vpx_usec_timer timer; |
+ int64_t cx_time = 0; |
memset(&svc_ctx, 0, sizeof(svc_ctx)); |
svc_ctx.log_print = 1; |
exec_name = argv[0]; |
@@ -632,6 +635,9 @@ int main(int argc, const char **argv) { |
vpx_codec_control(&codec, VP8E_SET_CPUUSED, svc_ctx.speed); |
if (svc_ctx.threads) |
vpx_codec_control(&codec, VP9E_SET_TILE_COLUMNS, (svc_ctx.threads >> 1)); |
+ if (svc_ctx.speed >= 5) |
+ vpx_codec_control(&codec, VP9E_SET_AQ_MODE, 3); |
+ |
// Encode frames |
while (!end_of_stream) { |
@@ -643,9 +649,12 @@ int main(int argc, const char **argv) { |
end_of_stream = 1; |
} |
+ vpx_usec_timer_start(&timer); |
res = vpx_svc_encode(&svc_ctx, &codec, (end_of_stream ? NULL : &raw), |
pts, frame_duration, svc_ctx.speed >= 5 ? |
VPX_DL_REALTIME : VPX_DL_GOOD_QUALITY); |
+ vpx_usec_timer_mark(&timer); |
+ cx_time += vpx_usec_timer_elapsed(&timer); |
printf("%s", vpx_svc_get_message(&svc_ctx)); |
if (res != VPX_CODEC_OK) { |
@@ -784,6 +793,10 @@ int main(int argc, const char **argv) { |
} |
} |
#endif |
+ printf("Frame cnt and encoding time/FPS stats for encoding: %d %f %f \n", |
+ frame_cnt, |
+ 1000 * (float)cx_time / (double)(frame_cnt * 1000000), |
+ 1000000 * (double)frame_cnt / (double)cx_time); |
vpx_img_free(&raw); |
// display average size, psnr |
printf("%s", vpx_svc_dump_statistics(&svc_ctx)); |