1 // Copyright (c) 2013 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 #ifndef MEDIA_BASE_ANDROID_DEMUXER_STREAM_PLAYER_PARAMS_H_
6 #define MEDIA_BASE_ANDROID_DEMUXER_STREAM_PLAYER_PARAMS_H_
10 #include "media/base/audio_decoder_config.h"
11 #include "media/base/decrypt_config.h"
12 #include "media/base/demuxer_stream.h"
13 #include "media/base/media_export.h"
14 #include "media/base/video_decoder_config.h"
15 #include "ui/gfx/geometry/size.h"
19 struct MEDIA_EXPORT DemuxerConfigs
{
23 AudioCodec audio_codec
;
25 int audio_sampling_rate
;
26 bool is_audio_encrypted
;
27 std::vector
<uint8
> audio_extra_data
;
28 int64 audio_codec_delay_ns
;
29 int64 audio_seek_preroll_ns
;
31 VideoCodec video_codec
;
33 bool is_video_encrypted
;
34 std::vector
<uint8
> video_extra_data
;
36 base::TimeDelta duration
;
39 struct MEDIA_EXPORT AccessUnit
{
43 DemuxerStream::Status status
;
44 bool is_end_of_stream
;
45 // TODO(ycheo): Use the shared memory to transfer the block data.
46 std::vector
<uint8
> data
;
47 base::TimeDelta timestamp
;
48 std::vector
<char> key_id
;
50 std::vector
<media::SubsampleEntry
> subsamples
;
54 struct MEDIA_EXPORT DemuxerData
{
58 DemuxerStream::Type type
;
59 std::vector
<AccessUnit
> access_units
;
60 // If the last entry in |access_units| has a status equal to |kConfigChanged|,
61 // a corresponding DemuxerConfigs is added into this vector. The
62 // DemuxerConfigs should only contain information of the stream that is
63 // specified by |type|. This solves the issue that we need multiple IPCs when
64 // demuxer configs change.
65 std::vector
<DemuxerConfigs
> demuxer_configs
;
72 std::ostream
& operator<<(std::ostream
& os
, media::DemuxerStream::Type type
);
75 std::ostream
& operator<<(std::ostream
& os
, const media::AccessUnit
& au
);
78 std::ostream
& operator<<(std::ostream
& os
, const media::DemuxerConfigs
& conf
);
80 #endif // MEDIA_BASE_ANDROID_DEMUXER_STREAM_PLAYER_PARAMS_H_