diff options
Diffstat (limited to 'chromium/media/webm/chromeos/webm_encoder.h')
-rw-r--r-- | chromium/media/webm/chromeos/webm_encoder.h | 106 |
1 files changed, 0 insertions, 106 deletions
diff --git a/chromium/media/webm/chromeos/webm_encoder.h b/chromium/media/webm/chromeos/webm_encoder.h deleted file mode 100644 index 126c0d20758..00000000000 --- a/chromium/media/webm/chromeos/webm_encoder.h +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef MEDIA_WEBM_CHROMEOS_WEBM_ENCODER_H_ -#define MEDIA_WEBM_CHROMEOS_WEBM_ENCODER_H_ - -#include <stdio.h> -#include <stack> - -#include "base/files/file_path.h" -#include "media/base/media_export.h" -#include "media/webm/chromeos/ebml_writer.h" - -extern "C" { -#define VPX_CODEC_DISABLE_COMPAT 1 -#include "third_party/libvpx/source/libvpx/vpx/vpx_encoder.h" -#include "third_party/libvpx/source/libvpx/vpx/vp8cx.h" -} - -class SkBitmap; - -namespace base { -class FilePath; -} - -namespace media { - -namespace chromeos { - -// WebM encoder using libvpx. Currently only supports one-pass, constant bitrate -// encoding of short files consisting of a single video track. Seek info and -// cues are not supported, so generated .webm file does not strictly adhere to -// WebM standard (http://www.webmproject.org/code/specs/container/). -class MEDIA_EXPORT WebmEncoder { - public: - // Create new instance for writing to |output_path|. If |realtime| is |true|, - // uses realtime deadline, otherwise - "good quality" deadline. - WebmEncoder(const base::FilePath& output_path, int bitrate, bool realtime); - ~WebmEncoder(); - - // Encodes video from a Nx(N*M) sprite, having M frames of size NxN with FPS - // |fps_n/fps_d|. Must be called on a thread that allows disk IO. - // Returns |true| iff encoding and writing to file is successful. - bool EncodeFromSprite(const SkBitmap& sprite, int fps_n, int fps_d); - - private: - // Writes global WebM header and starts a single video track. Returns |false| - // if there was an error opening file for writing. - bool WriteWebmHeader(); - - // Writes VPX packet to output file. - void WriteWebmBlock(const vpx_codec_cx_pkt_t* packet); - - // Finishes video track and closes output file. Returns |false| if there were - // any error during encoding/writing file. - bool WriteWebmFooter(); - - // Starts a new WebM sub-element of given type. Those can be nested. - void StartSubElement(unsigned long class_id); - - // Closes current top-level sub-element. - void EndSubElement(); - - // libmkv callbacks. - void EbmlWrite(const void* buffer, unsigned long len); - void EbmlSerialize(const void* buffer, int buffer_size, unsigned long len); - - template <typename T> - void EbmlSerializeHelper(const T* buffer, unsigned long len); - - // Video dimensions and FPS. - size_t width_; - size_t height_; - vpx_rational_t fps_; - - // Number of frames in video. - size_t frame_count_; - - // VPX config in use. - vpx_codec_enc_cfg_t config_; - - // VPX parameters. - int bitrate_; - unsigned long deadline_; - - // EbmlWriter context. - EbmlGlobal ebml_writer_; - - // Stack with start offsets of currently open sub-elements. - std::stack<long int> ebml_sub_elements_; - - base::FilePath output_path_; - FILE* output_; - - // True if an error occured while encoding/writing to file. - bool has_errors_; - - DISALLOW_COPY_AND_ASSIGN(WebmEncoder); -}; - -} // namespace chromeos - -} // namespace media - -#endif // MEDIA_WEBM_CHROMEOS_WEBM_ENCODER_H_ |