1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#ifndef MEDIA_BASE_ANDROID_DEMUXER_STREAM_PLAYER_PARAMS_H_ 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define MEDIA_BASE_ANDROID_DEMUXER_STREAM_PLAYER_PARAMS_H_ 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <vector> 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "media/base/audio_decoder_config.h" 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "media/base/decrypt_config.h" 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "media/base/demuxer_stream.h" 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "media/base/media_export.h" 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "media/base/video_decoder_config.h" 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ui/gfx/size.h" 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace media { 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 19424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)struct MEDIA_EXPORT DemuxerConfigs { 20424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) DemuxerConfigs(); 21424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ~DemuxerConfigs(); 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AudioCodec audio_codec; 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int audio_channels; 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int audio_sampling_rate; 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool is_audio_encrypted; 27b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) std::vector<uint8> audio_extra_data; 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) VideoCodec video_codec; 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gfx::Size video_size; 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool is_video_encrypted; 32b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) std::vector<uint8> video_extra_data; 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 340529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch base::TimeDelta duration; 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 37a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)struct MEDIA_EXPORT AccessUnit { 38a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) AccessUnit(); 39a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) ~AccessUnit(); 40a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 41a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) DemuxerStream::Status status; 42a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) bool end_of_stream; 43a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // TODO(ycheo): Use the shared memory to transfer the block data. 44a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) std::vector<uint8> data; 45a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) base::TimeDelta timestamp; 46a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) std::vector<char> key_id; 47a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) std::vector<char> iv; 48a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) std::vector<media::SubsampleEntry> subsamples; 49a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}; 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 51424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)struct MEDIA_EXPORT DemuxerData { 52424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) DemuxerData(); 53424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ~DemuxerData(); 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DemuxerStream::Type type; 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::vector<AccessUnit> access_units; 57cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // If the last entry in |access_units| has a status equal to |kConfigChanged|, 58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // a corresponding DemuxerConfigs is added into this vector. The 59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // DemuxerConfigs should only contain information of the stream that is 60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // specified by |type|. This solves the issue that we need multiple IPCs when 61cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // demuxer configs change. 62cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) std::vector<DemuxerConfigs> demuxer_configs; 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; // namespace media 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif // MEDIA_BASE_ANDROID_DEMUXER_STREAM_PLAYER_PARAMS_H_ 68