tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

ivfenc.c (1880B)


      1 /*
      2 * Copyright (c) 2016, Alliance for Open Media. All rights reserved.
      3 *
      4 * This source code is subject to the terms of the BSD 2 Clause License and
      5 * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
      6 * was not distributed with this source code in the LICENSE file, you can
      7 * obtain it at www.aomedia.org/license/software. If the Alliance for Open
      8 * Media Patent License 1.0 was not distributed with this source code in the
      9 * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
     10 */
     11 
     12 #include "common/ivfenc.h"
     13 
     14 #include "aom/aom_encoder.h"
     15 #include "aom_ports/mem_ops.h"
     16 
     17 void ivf_write_file_header(FILE *outfile, const struct aom_codec_enc_cfg *cfg,
     18                           unsigned int fourcc, int frame_cnt) {
     19  char header[32];
     20 
     21  header[0] = 'D';
     22  header[1] = 'K';
     23  header[2] = 'I';
     24  header[3] = 'F';
     25  mem_put_le16(header + 4, 0);                     // version
     26  mem_put_le16(header + 6, 32);                    // header size
     27  mem_put_le32(header + 8, fourcc);                // fourcc
     28  mem_put_le16(header + 12, cfg->g_w);             // width
     29  mem_put_le16(header + 14, cfg->g_h);             // height
     30  mem_put_le32(header + 16, cfg->g_timebase.den);  // rate
     31  mem_put_le32(header + 20, cfg->g_timebase.num);  // scale
     32  mem_put_le32(header + 24, frame_cnt);            // length
     33  mem_put_le32(header + 28, 0);                    // unused
     34 
     35  fwrite(header, 1, 32, outfile);
     36 }
     37 
     38 void ivf_write_frame_header(FILE *outfile, int64_t pts, size_t frame_size) {
     39  char header[12];
     40 
     41  mem_put_le32(header, (int)frame_size);
     42  mem_put_le32(header + 4, (int)(pts & 0xFFFFFFFF));
     43  mem_put_le32(header + 8, (int)(pts >> 32));
     44  fwrite(header, 1, 12, outfile);
     45 }
     46 
     47 void ivf_write_frame_size(FILE *outfile, size_t frame_size) {
     48  char header[4];
     49 
     50  mem_put_le32(header, (int)frame_size);
     51  fwrite(header, 1, 4, outfile);
     52 }