summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/libvpx/source/libvpx/examples/twopass_encoder.txt
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/libvpx/source/libvpx/examples/twopass_encoder.txt')
-rw-r--r--chromium/third_party/libvpx/source/libvpx/examples/twopass_encoder.txt87
1 files changed, 0 insertions, 87 deletions
diff --git a/chromium/third_party/libvpx/source/libvpx/examples/twopass_encoder.txt b/chromium/third_party/libvpx/source/libvpx/examples/twopass_encoder.txt
deleted file mode 100644
index 2f81a9018c9..00000000000
--- a/chromium/third_party/libvpx/source/libvpx/examples/twopass_encoder.txt
+++ /dev/null
@@ -1,87 +0,0 @@
-@TEMPLATE encoder_tmpl.c
-Two Pass Encoder
-================
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ INTRODUCTION
-This is an example of a two pass encoder loop. It takes an input file in
-YV12 format, passes it through the encoder twice, and writes the compressed
-frames to disk in IVF format. It builds upon the simple_encoder example.
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ INTRODUCTION
-
-
-Twopass Variables
------------------
-Twopass mode needs to track the current pass number and the buffer of
-statistics packets.
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TWOPASS_VARS
-int pass;
-vpx_fixed_buf_t stats = {0};
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TWOPASS_VARS
-
-
-Updating The Configuration
----------------------------------
-In two pass mode, the configuration has to be updated on each pass. The
-statistics buffer is passed on the last pass.
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TWOPASS_LOOP_BEGIN
-for(pass=0; pass<2; pass++) {
- frame_cnt = 0;
-
- if(pass == 0)
- cfg.g_pass = VPX_RC_FIRST_PASS;
- else {
- cfg.g_pass = VPX_RC_LAST_PASS;
- cfg.rc_twopass_stats_in = stats;
- }
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TWOPASS_LOOP_BEGIN
-
-
-Encoding A Frame
-----------------
-Encoding a frame in two pass mode is identical to the simple encoder
-example, except the deadline is set to VPX_DL_BEST_QUALITY to get the
-best quality possible. VPX_DL_GOOD_QUALITY could also be used.
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ENCODE_FRAME
-frame_avail = read_frame(infile, &raw);
-if(vpx_codec_encode(&codec, frame_avail? &raw : NULL, frame_cnt,
- 1, flags, VPX_DL_BEST_QUALITY))
- die_codec(&codec, "Failed to encode frame");
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ENCODE_FRAME
-
-
-Processing Statistics Packets
------------------------------
-Each packet of type `VPX_CODEC_CX_FRAME_PKT` contains the encoded data
-for this frame. We write a IVF frame header, followed by the raw data.
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PROCESS_STATS
-case VPX_CODEC_STATS_PKT:
- stats.buf = realloc(stats.buf, stats.sz
- + pkt->data.twopass_stats.sz);
- if(!stats.buf)
- die("Memory reallocation failed.\n");
- memcpy((char*)stats.buf + stats.sz,
- pkt->data.twopass_stats.buf,
- pkt->data.twopass_stats.sz);
- stats.sz += pkt->data.twopass_stats.sz;
- break;
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PROCESS_STATS
-
-
-Pass Progress Reporting
------------------------------
-It's sometimes helpful to see when each pass completes.
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TWOPASS_LOOP_END
- printf("Pass %d complete.\n", pass+1);
- if(vpx_codec_destroy(&codec))
- die_codec(&codec, "Failed to destroy codec");
-}
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TWOPASS_LOOP_END
-
-
-Clean-up
------------------------------
-Destruction of the encoder instance must be done on each pass. The
-raw image should be destroyed at the end as usual.
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DESTROY
-vpx_img_free(&raw);
-free(stats.buf);
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DESTROY