1fdc81580c82b445d2d7ceae539b3a78ef56c22dvboxsync * EbmlWriter.h - EBML writer + WebM container.
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync * Copyright (C) 2013-2014 Oracle Corporation
1fdc81580c82b445d2d7ceae539b3a78ef56c22dvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
1fdc81580c82b445d2d7ceae539b3a78ef56c22dvboxsync * available from http://www.virtualbox.org. This file is free software;
1fdc81580c82b445d2d7ceae539b3a78ef56c22dvboxsync * you can redistribute it and/or modify it under the terms of the GNU
1fdc81580c82b445d2d7ceae539b3a78ef56c22dvboxsync * General Public License (GPL) as published by the Free Software
1fdc81580c82b445d2d7ceae539b3a78ef56c22dvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
1fdc81580c82b445d2d7ceae539b3a78ef56c22dvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
1fdc81580c82b445d2d7ceae539b3a78ef56c22dvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
1fdc81580c82b445d2d7ceae539b3a78ef56c22dvboxsync * This code is based on:
1fdc81580c82b445d2d7ceae539b3a78ef56c22dvboxsync * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
1fdc81580c82b445d2d7ceae539b3a78ef56c22dvboxsync * Use of this source code is governed by a BSD-style license
1fdc81580c82b445d2d7ceae539b3a78ef56c22dvboxsync * that can be found in the LICENSE file in the root of the source
1fdc81580c82b445d2d7ceae539b3a78ef56c22dvboxsync * tree. An additional intellectual property rights grant can be found
1fdc81580c82b445d2d7ceae539b3a78ef56c22dvboxsync * in the file PATENTS. All contributing project authors may
1fdc81580c82b445d2d7ceae539b3a78ef56c22dvboxsync * be found in the AUTHORS file in the root of the source tree.
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync /* Creates output file
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync * @param a_pszFilename Name of the file to create.
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync * @returns VBox status code. */
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync /* Closes output file. */
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync /* Writes WebM header to file.
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync * Should be called before any writeBlock call.
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync * @param a_pCfg Pointer to VPX Codec configuration structure.
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync * @param a_pFps Framerate information (frames per second).
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync * @returns VBox status code.
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync int writeHeader(const vpx_codec_enc_cfg_t *a_pCfg, const vpx_rational *a_pFps);
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync /* Writes a block of compressed data
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync * @param a_pCfg Pointer to VPX Codec configuration structure.
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync * @param a_pPkt VPX data packet.
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync * @returns VBox status code.
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync int writeBlock(const vpx_codec_enc_cfg_t *a_pCfg, const vpx_codec_cx_pkt_t *a_pPkt);
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync /* Writes WebM footer.
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync * No other write functions should be called after this one.
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync * @param a_u64Hash Hash value for the data written.
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync * @returns VBox status code.
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync /* Gets current output file size.
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync * @returns File size in bytes.
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync /* Gets current free storage space
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync * available for the file.
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync * @returns Available storage free space.
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync /* WebMWriter implementation.
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync * To isolate some include files */
45aec286e984e04cde6ddea6b9eea66f113fc045vboxsync /* Not defined */