| Index: media/filters/ffmpeg_h264_bitstream_converter.cc
|
| diff --git a/media/filters/ffmpeg_h264_bitstream_converter.cc b/media/filters/ffmpeg_h264_bitstream_converter.cc
|
| deleted file mode 100644
|
| index 2995083cb4a35f8a862b87a1a0916eb088983eb0..0000000000000000000000000000000000000000
|
| --- a/media/filters/ffmpeg_h264_bitstream_converter.cc
|
| +++ /dev/null
|
| @@ -1,101 +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.
|
| -
|
| -#include "media/filters/ffmpeg_h264_bitstream_converter.h"
|
| -
|
| -#include "base/logging.h"
|
| -#include "media/ffmpeg/ffmpeg_common.h"
|
| -
|
| -namespace media {
|
| -
|
| -FFmpegH264BitstreamConverter::FFmpegH264BitstreamConverter(
|
| - AVCodecContext* stream_context)
|
| - : configuration_processed_(false),
|
| - stream_context_(stream_context) {
|
| - CHECK(stream_context_);
|
| -}
|
| -
|
| -FFmpegH264BitstreamConverter::~FFmpegH264BitstreamConverter() {}
|
| -
|
| -bool FFmpegH264BitstreamConverter::Initialize() {
|
| - return true;
|
| -}
|
| -
|
| -bool FFmpegH264BitstreamConverter::ConvertPacket(AVPacket* packet) {
|
| - uint32 output_packet_size = 0;
|
| - uint32 configuration_size = 0;
|
| - uint32 io_size = 0;
|
| - if (packet == NULL) {
|
| - return false;
|
| - }
|
| -
|
| - // Calculate the needed output buffer size.
|
| - if (!configuration_processed_) {
|
| - // FFmpeg's AVCodecContext's extradata field contains the Decoder
|
| - // Specific Information from MP4 headers that contain the H.264 SPS and
|
| - // PPS members. See ISO/IEC 14496-15 Chapter 5.2.4
|
| - // AVCDecoderConfigurationRecord for exact specification.
|
| - // Extradata must be at least 7 bytes long.
|
| - if (stream_context_->extradata == NULL ||
|
| - stream_context_->extradata_size <= 7) {
|
| - return false; // Can't go on with conversion without configuration.
|
| - }
|
| - configuration_size += converter_.ParseConfigurationAndCalculateSize(
|
| - stream_context_->extradata,
|
| - stream_context_->extradata_size);
|
| - if (configuration_size == 0) {
|
| - return false; // Not possible to parse the configuration.
|
| - }
|
| - }
|
| - uint32 output_nal_size =
|
| - converter_.CalculateNeededOutputBufferSize(packet->data, packet->size);
|
| - if (output_nal_size == 0) {
|
| - return false; // Invalid input packet.
|
| - }
|
| - output_packet_size = configuration_size + output_nal_size;
|
| -
|
| - // Allocate new packet for the output.
|
| - AVPacket dest_packet;
|
| - if (av_new_packet(&dest_packet, output_packet_size) != 0) {
|
| - return false; // Memory allocation failure.
|
| - }
|
| - // This is a bit tricky: since the interface does not allow us to replace
|
| - // the pointer of the old packet with a new one, we will initially copy the
|
| - // metadata from old packet to new bigger packet.
|
| - dest_packet.pts = packet->pts;
|
| - dest_packet.dts = packet->dts;
|
| - dest_packet.pos = packet->pos;
|
| - dest_packet.duration = packet->duration;
|
| - dest_packet.convergence_duration = packet->convergence_duration;
|
| - dest_packet.flags = packet->flags;
|
| - dest_packet.stream_index = packet->stream_index;
|
| -
|
| - // Process the configuration if not done earlier.
|
| - if (!configuration_processed_) {
|
| - if (!converter_.ConvertAVCDecoderConfigurationRecordToByteStream(
|
| - stream_context_->extradata, stream_context_->extradata_size,
|
| - dest_packet.data, &configuration_size)) {
|
| - return false; // Failed to convert the buffer.
|
| - }
|
| - configuration_processed_ = true;
|
| - }
|
| -
|
| - // Proceed with the conversion of the actual in-band NAL units, leave room
|
| - // for configuration in the beginning.
|
| - io_size = dest_packet.size - configuration_size;
|
| - if (!converter_.ConvertNalUnitStreamToByteStream(
|
| - packet->data, packet->size,
|
| - dest_packet.data + configuration_size, &io_size)) {
|
| - return false;
|
| - }
|
| -
|
| - // At the end we must destroy the old packet.
|
| - av_free_packet(packet);
|
| - *packet = dest_packet; // Finally, replace the values in the input packet.
|
| -
|
| - return true;
|
| -}
|
| -
|
| -} // namespace media
|
| -
|
|
|