1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "media/filters/decoder_stream_traits.h"
7 #include "base/logging.h"
8 #include "media/base/audio_buffer.h"
9 #include "media/base/audio_decoder.h"
10 #include "media/base/audio_decoder_config.h"
11 #include "media/base/video_decoder.h"
12 #include "media/base/video_decoder_config.h"
13 #include "media/base/video_frame.h"
17 std::string DecoderStreamTraits<DemuxerStream::AUDIO>::ToString() {
21 void DecoderStreamTraits<DemuxerStream::AUDIO>::Initialize(
23 const DecoderConfigType& config,
25 const PipelineStatusCB& status_cb,
26 const OutputCB& output_cb) {
27 decoder->Initialize(config, status_cb, output_cb);
30 bool DecoderStreamTraits<DemuxerStream::AUDIO>::FinishInitialization(
31 const StreamInitCB& init_cb,
33 DemuxerStream* stream) {
43 void DecoderStreamTraits<DemuxerStream::AUDIO>::ReportStatistics(
44 const StatisticsCB& statistics_cb,
46 PipelineStatistics statistics;
47 statistics.audio_bytes_decoded = bytes_decoded;
48 statistics_cb.Run(statistics);
51 DecoderStreamTraits<DemuxerStream::AUDIO>::DecoderConfigType
52 DecoderStreamTraits<DemuxerStream::AUDIO>::GetDecoderConfig(
53 DemuxerStream& stream) {
54 return stream.audio_decoder_config();
57 scoped_refptr<DecoderStreamTraits<DemuxerStream::AUDIO>::OutputType>
58 DecoderStreamTraits<DemuxerStream::AUDIO>::CreateEOSOutput() {
59 return OutputType::CreateEOSBuffer();
62 std::string DecoderStreamTraits<DemuxerStream::VIDEO>::ToString() {
66 void DecoderStreamTraits<DemuxerStream::VIDEO>::Initialize(
68 const DecoderConfigType& config,
70 const PipelineStatusCB& status_cb,
71 const OutputCB& output_cb) {
72 decoder->Initialize(config, low_delay, status_cb, output_cb);
75 bool DecoderStreamTraits<DemuxerStream::VIDEO>::FinishInitialization(
76 const StreamInitCB& init_cb,
78 DemuxerStream* stream) {
84 if (decoder->NeedsBitstreamConversion())
85 stream->EnableBitstreamConverter();
90 void DecoderStreamTraits<DemuxerStream::VIDEO>::ReportStatistics(
91 const StatisticsCB& statistics_cb,
93 PipelineStatistics statistics;
94 statistics.video_bytes_decoded = bytes_decoded;
95 statistics_cb.Run(statistics);
98 DecoderStreamTraits<DemuxerStream::VIDEO>::DecoderConfigType
99 DecoderStreamTraits<DemuxerStream::VIDEO>::GetDecoderConfig(
100 DemuxerStream& stream) {
101 return stream.video_decoder_config();
104 scoped_refptr<DecoderStreamTraits<DemuxerStream::VIDEO>::OutputType>
105 DecoderStreamTraits<DemuxerStream::VIDEO>::CreateEOSOutput() {
106 return OutputType::CreateEOSFrame();