diff options
72 files changed, 221 insertions, 144 deletions
diff --git a/content/browser/speech/speech_recognizer_unittest.cc b/content/browser/speech/speech_recognizer_unittest.cc index d70df62..76133b3d 100644 --- a/content/browser/speech/speech_recognizer_unittest.cc +++ b/content/browser/speech/speech_recognizer_unittest.cc @@ -75,11 +75,12 @@ class SpeechRecognizerTest : public SpeechRecognizerDelegate, // testing::Test methods. virtual void SetUp() { - AudioInputController::set_factory(&audio_input_controller_factory_); + AudioInputController::set_factory_for_testing( + &audio_input_controller_factory_); } virtual void TearDown() { - AudioInputController::set_factory(NULL); + AudioInputController::set_factory_for_testing(NULL); } void FillPacketWithTestWaveform() { diff --git a/media/audio/audio_buffers_state.h b/media/audio/audio_buffers_state.h index e3a2faf..796c081 100644 --- a/media/audio/audio_buffers_state.h +++ b/media/audio/audio_buffers_state.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 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. @@ -6,11 +6,12 @@ #define MEDIA_AUDIO_AUDIO_BUFFERS_STATE_H_ #include "base/time.h" +#include "media/base/media_export.h" // AudioBuffersState struct stores current state of audio buffers along with // the timestamp of the moment this state corresponds to. It is used for audio // synchronization. -struct AudioBuffersState { +struct MEDIA_EXPORT AudioBuffersState { AudioBuffersState(); AudioBuffersState(int pending_bytes, int hardware_delay_bytes); diff --git a/media/audio/audio_input_controller.h b/media/audio/audio_input_controller.h index 164b09f..22f6ffe 100644 --- a/media/audio/audio_input_controller.h +++ b/media/audio/audio_input_controller.h @@ -35,7 +35,7 @@ // namespace media { -class AudioInputController +class MEDIA_EXPORT AudioInputController : public base::RefCountedThreadSafe<AudioInputController>, public AudioInputStream::AudioInputCallback { public: @@ -99,10 +99,8 @@ class AudioInputController // Sets the factory used by the static method Create. AudioInputController // does not take ownership of |factory|. A value of NULL results in an // AudioInputController being created directly. -#if defined(UNIT_TEST) - static void set_factory(Factory* factory) { factory_ = factory; } - AudioInputStream* stream() { return stream_; } -#endif + static void set_factory_for_testing(Factory* factory) { factory_ = factory; } + AudioInputStream* stream_for_testing() { return stream_; } // Starts recording in this audio input stream. virtual void Record(); diff --git a/media/audio/audio_input_controller_unittest.cc b/media/audio/audio_input_controller_unittest.cc index d7ce4db..090d97f4 100644 --- a/media/audio/audio_input_controller_unittest.cc +++ b/media/audio/audio_input_controller_unittest.cc @@ -139,7 +139,7 @@ TEST(AudioInputControllerTest, RecordAndError) { event.Reset(); // Wait for the stream to be stopped. - AudioInputStream* stream = controller->stream(); + AudioInputStream* stream = controller->stream_for_testing(); stream->Stop(); event.Wait(); diff --git a/media/audio/audio_io.h b/media/audio/audio_io.h index 787020c..74b5c47 100644 --- a/media/audio/audio_io.h +++ b/media/audio/audio_io.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 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. @@ -45,13 +45,13 @@ // as the data is written to the audio device. Size of each packet is determined // by |samples_per_packet| specified in AudioParameters when the stream is // created. -class AudioOutputStream { +class MEDIA_EXPORT AudioOutputStream { public: // Audio sources must implement AudioSourceCallback. This interface will be // called in a random thread which very likely is a high priority thread. Do // not rely on using this thread TLS or make calls that alter the thread // itself such as creating Windows or initializing COM. - class AudioSourceCallback { + class MEDIA_EXPORT AudioSourceCallback { public: virtual ~AudioSourceCallback() {} @@ -104,7 +104,7 @@ class AudioOutputStream { // Models an audio sink receiving recorded audio from the audio driver. class AudioInputStream { public: - class AudioInputCallback { + class MEDIA_EXPORT AudioInputCallback { public: virtual ~AudioInputCallback() {} diff --git a/media/audio/audio_manager.h b/media/audio/audio_manager.h index 29cc23d..d80026d 100644 --- a/media/audio/audio_manager.h +++ b/media/audio/audio_manager.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 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. @@ -21,7 +21,7 @@ class MessageLoop; // Manages all audio resources. In particular it owns the AudioOutputStream // objects. Provides some convenience functions that avoid the need to provide // iterators over the existing streams. -class AudioManager { +class MEDIA_EXPORT AudioManager { public: // Returns true if the OS reports existence of audio devices. This does not // guarantee that the existing devices support all formats and sample rates. diff --git a/media/audio/audio_output_controller.h b/media/audio/audio_output_controller.h index 29fb0a7..ac4fea7 100644 --- a/media/audio/audio_output_controller.h +++ b/media/audio/audio_output_controller.h @@ -49,7 +49,7 @@ class Task; // namespace media { -class AudioOutputController +class MEDIA_EXPORT AudioOutputController : public base::RefCountedThreadSafe<AudioOutputController>, public AudioOutputStream::AudioSourceCallback { public: diff --git a/media/audio/audio_output_dispatcher.h b/media/audio/audio_output_dispatcher.h index 18e1b28..7a4d019 100644 --- a/media/audio/audio_output_dispatcher.h +++ b/media/audio/audio_output_dispatcher.h @@ -33,7 +33,7 @@ class AudioOutputStream; class MessageLoop; -class AudioOutputDispatcher +class MEDIA_EXPORT AudioOutputDispatcher : public base::RefCountedThreadSafe<AudioOutputDispatcher> { public: // |close_delay_ms| specifies delay after the stream is paused until diff --git a/media/audio/audio_output_proxy.h b/media/audio/audio_output_proxy.h index 4835cc8..c9f7d6f 100644 --- a/media/audio/audio_output_proxy.h +++ b/media/audio/audio_output_proxy.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 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. @@ -20,7 +20,7 @@ class AudioOutputDispatcher; // // AudioOutputProxy uses AudioOutputDispatcher to open and close // physical output streams. -class AudioOutputProxy : public AudioOutputStream { +class MEDIA_EXPORT AudioOutputProxy : public AudioOutputStream { public: // Caller keeps ownership of |dispatcher|. AudioOutputProxy(AudioOutputDispatcher* dispatcher); diff --git a/media/audio/audio_parameters.h b/media/audio/audio_parameters.h index 26204b0..8b6bb4b 100644 --- a/media/audio/audio_parameters.h +++ b/media/audio/audio_parameters.h @@ -7,10 +7,11 @@ #include "base/basictypes.h" #include "media/base/audio_decoder_config.h" +#include "media/base/media_export.h" -struct AudioParameters { +struct MEDIA_EXPORT AudioParameters { // Compare is useful when AudioParameters is used as a key in std::map. - class Compare { + class MEDIA_EXPORT Compare { public: bool operator()(const AudioParameters& a, const AudioParameters& b) const; }; diff --git a/media/audio/audio_util.h b/media/audio/audio_util.h index 0d65e19..a78fdf1 100644 --- a/media/audio/audio_util.h +++ b/media/audio/audio_util.h @@ -8,6 +8,7 @@ #include <vector> #include "base/basictypes.h" +#include "media/base/media_export.h" namespace media { @@ -26,11 +27,11 @@ namespace media { // formats. // The buffer is modified in-place to avoid memory management, as this // function may be called in performance critical code. -bool AdjustVolume(void* buf, - size_t buflen, - int channels, - int bytes_per_sample, - float volume); +MEDIA_EXPORT bool AdjustVolume(void* buf, + size_t buflen, + int channels, + int bytes_per_sample, + float volume); // FoldChannels() does a software multichannel folding down to stereo. // Channel order is assumed to be 5.1 Dolby standard which is @@ -45,11 +46,11 @@ bool AdjustVolume(void* buf, // volume. // The buffer is modified in-place to avoid memory management, as this // function may be called in performance critical code. -bool FoldChannels(void* buf, - size_t buflen, - int channels, - int bytes_per_sample, - float volume); +MEDIA_EXPORT bool FoldChannels(void* buf, + size_t buflen, + int channels, + int bytes_per_sample, + float volume); // DeinterleaveAudioChannel() takes interleaved audio buffer |source| // of the given |sample_fmt| and |number_of_channels| and extracts @@ -70,12 +71,12 @@ bool DeinterleaveAudioChannel(void* source, // The size of the |source| vector determines the number of channels. // The |destination| buffer is assumed to be large enough to hold the // result. Thus it must be at least size: number_of_frames * source.size() -void InterleaveFloatToInt16(const std::vector<float*>& source, - int16* destination, - size_t number_of_frames); +MEDIA_EXPORT void InterleaveFloatToInt16(const std::vector<float*>& source, + int16* destination, + size_t number_of_frames); // Returns the default audio hardware sample-rate. -double GetAudioHardwareSampleRate(); +MEDIA_EXPORT double GetAudioHardwareSampleRate(); } // namespace media diff --git a/media/audio/fake_audio_output_stream.h b/media/audio/fake_audio_output_stream.h index 82453ef..ac53db5 100644 --- a/media/audio/fake_audio_output_stream.h +++ b/media/audio/fake_audio_output_stream.h @@ -15,7 +15,7 @@ #include "media/audio/audio_io.h" #include "media/audio/audio_parameters.h" -class FakeAudioOutputStream : public AudioOutputStream { +class MEDIA_EXPORT FakeAudioOutputStream : public AudioOutputStream { public: static AudioOutputStream* MakeFakeStream(const AudioParameters& params); static FakeAudioOutputStream* GetLastFakeStream(); diff --git a/media/audio/simple_sources.h b/media/audio/simple_sources.h index 5ea1fee..de70601 100644 --- a/media/audio/simple_sources.h +++ b/media/audio/simple_sources.h @@ -11,7 +11,8 @@ #include "media/base/seekable_buffer.h" // An audio source that produces a pure sinusoidal tone. -class SineWaveAudioSource : public AudioOutputStream::AudioSourceCallback { +class MEDIA_EXPORT SineWaveAudioSource + : public AudioOutputStream::AudioSourceCallback { public: enum Format { FORMAT_8BIT_LINEAR_PCM, @@ -39,7 +40,7 @@ class SineWaveAudioSource : public AudioOutputStream::AudioSourceCallback { // Defines an interface for pushing audio output. In contrast, the interfaces // defined by AudioSourceCallback are pull model only. -class PushAudioOutput { +class MEDIA_EXPORT PushAudioOutput { public: virtual ~PushAudioOutput() {} @@ -56,7 +57,7 @@ class PushAudioOutput { // a pull model provider AudioSourceCallback. Fundamentally it manages a series // of audio buffers and is unaware of the actual audio format. // Note that the PushSource is not thread safe and user need to provide locking. -class PushSource +class MEDIA_EXPORT PushSource : public AudioOutputStream::AudioSourceCallback, public PushAudioOutput { public: diff --git a/media/base/async_filter_factory_base.h b/media/base/async_filter_factory_base.h index 34ff831..c4a76a2 100644 --- a/media/base/async_filter_factory_base.h +++ b/media/base/async_filter_factory_base.h @@ -46,7 +46,7 @@ namespace media { // the BuildRequest should be in a state where it can be deleted from inside // this call. If an error occurs during the build process, RequestComplete() // can also be called to signal the error. -class AsyncDataSourceFactoryBase : public DataSourceFactory { +class MEDIA_EXPORT AsyncDataSourceFactoryBase : public DataSourceFactory { public: AsyncDataSourceFactoryBase(); virtual ~AsyncDataSourceFactoryBase(); @@ -64,7 +64,7 @@ class AsyncDataSourceFactoryBase : public DataSourceFactory { virtual DataSourceFactory* Clone() const = 0; protected: - class BuildRequest { + class MEDIA_EXPORT BuildRequest { public: BuildRequest(const std::string& url, BuildCallback* callback); virtual ~BuildRequest(); diff --git a/media/base/buffers.h b/media/base/buffers.h index 8c5c219..a97d8dd 100644 --- a/media/base/buffers.h +++ b/media/base/buffers.h @@ -30,13 +30,15 @@ #include "base/basictypes.h" #include "base/memory/ref_counted.h" #include "base/time.h" +#include "media/base/media_export.h" namespace media { // Indicates an invalid or missing timestamp. -extern const base::TimeDelta kNoTimestamp; +MEDIA_EXPORT extern const base::TimeDelta kNoTimestamp; -class StreamSample : public base::RefCountedThreadSafe<StreamSample> { +class MEDIA_EXPORT StreamSample + : public base::RefCountedThreadSafe<StreamSample> { public: // Returns the timestamp of this buffer in microseconds. base::TimeDelta GetTimestamp() const { @@ -76,7 +78,7 @@ class StreamSample : public base::RefCountedThreadSafe<StreamSample> { }; -class Buffer : public StreamSample { +class MEDIA_EXPORT Buffer : public StreamSample { public: // Returns a read only pointer to the buffer data. virtual const uint8* GetData() const = 0; diff --git a/media/base/callback.h b/media/base/callback.h index 4948829..336ffb7 100644 --- a/media/base/callback.h +++ b/media/base/callback.h @@ -24,10 +24,11 @@ #include "base/callback_old.h" #include "base/memory/scoped_ptr.h" #include "base/task.h" +#include "media/base/media_export.h" namespace media { -class AutoCallbackRunner { +class MEDIA_EXPORT AutoCallbackRunner { public: // Takes ownership of the callback. explicit AutoCallbackRunner(Callback0::Type* callback) diff --git a/media/base/channel_layout.h b/media/base/channel_layout.h index 3fa84ba..7dd1ec8 100644 --- a/media/base/channel_layout.h +++ b/media/base/channel_layout.h @@ -5,6 +5,8 @@ #ifndef MEDIA_BASE_CHANNEL_LAYOUT_H_ #define MEDIA_BASE_CHANNEL_LAYOUT_H_ +#include "media/base/media_export.h" + enum ChannelLayout { CHANNEL_LAYOUT_NONE = 0, CHANNEL_LAYOUT_UNSUPPORTED, @@ -84,6 +86,6 @@ enum Channels { extern const int kChannelOrderings[CHANNEL_LAYOUT_MAX][CHANNELS_MAX]; // Returns the number of channels in a given ChannelLayout. -int ChannelLayoutToChannelCount(ChannelLayout layout); +MEDIA_EXPORT int ChannelLayoutToChannelCount(ChannelLayout layout); #endif // MEDIA_BASE_CHANNEL_LAYOUT_H_ diff --git a/media/base/clock.h b/media/base/clock.h index fb45b95..0acf71b 100644 --- a/media/base/clock.h +++ b/media/base/clock.h @@ -8,6 +8,7 @@ #include "base/basictypes.h" #include "base/memory/scoped_ptr.h" #include "base/time.h" +#include "media/base/media_export.h" namespace media { @@ -24,7 +25,7 @@ namespace media { // TODO(scherkus): Clock will some day be responsible for executing callbacks // given a media time. This will be used primarily by video renderers. For now // we'll keep using a poll-and-sleep solution. -class Clock { +class MEDIA_EXPORT Clock { public: // Type for a static function pointer that acts as a time source. typedef base::Time(TimeProvider)(); diff --git a/media/base/composite_data_source_factory.h b/media/base/composite_data_source_factory.h index 799960d..d2ead5b 100644 --- a/media/base/composite_data_source_factory.h +++ b/media/base/composite_data_source_factory.h @@ -13,7 +13,8 @@ namespace media { -class CompositeDataSourceFactory : public AsyncDataSourceFactoryBase { +class MEDIA_EXPORT CompositeDataSourceFactory + : public AsyncDataSourceFactoryBase { public: CompositeDataSourceFactory(); virtual ~CompositeDataSourceFactory(); diff --git a/media/base/composite_filter.h b/media/base/composite_filter.h index 38d52c8..8e1ec4a 100644 --- a/media/base/composite_filter.h +++ b/media/base/composite_filter.h @@ -15,7 +15,7 @@ class MessageLoop; namespace media { -class CompositeFilter : public Filter { +class MEDIA_EXPORT CompositeFilter : public Filter { public: explicit CompositeFilter(MessageLoop* message_loop); diff --git a/media/base/data_buffer.h b/media/base/data_buffer.h index 2e9551a..de1eb35 100644 --- a/media/base/data_buffer.h +++ b/media/base/data_buffer.h @@ -15,7 +15,7 @@ namespace media { -class DataBuffer : public Buffer { +class MEDIA_EXPORT DataBuffer : public Buffer { public: // Takes ownership of the passed |buffer|, assumes valid data of size // |buffer_size|. diff --git a/media/base/djb2.h b/media/base/djb2.h index 2b696fa..598f9d1 100644 --- a/media/base/djb2.h +++ b/media/base/djb2.h @@ -1,4 +1,4 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 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. @@ -6,6 +6,7 @@ #define MEDIA_BASE_DJB2_H_ #include "base/basictypes.h" +#include "media/base/media_export.h" // DJB2 is a hash algorithm with excellent distribution and speed // on many different sets. @@ -34,7 +35,7 @@ static const uint32 kDJB2HashSeed = 5381u; // For the given buffer of data, compute the DJB2 hash of // the data. You can call this any number of times during the computation. -uint32 DJB2Hash(const void* buf, size_t len, uint32 seed); +MEDIA_EXPORT uint32 DJB2Hash(const void* buf, size_t len, uint32 seed); #endif // MEDIA_BASE_DJB2_H_ diff --git a/media/base/filter_collection.h b/media/base/filter_collection.h index aadd2f1d..97e7232 100644 --- a/media/base/filter_collection.h +++ b/media/base/filter_collection.h @@ -15,7 +15,7 @@ namespace media { // This is a collection of Filter objects used to form a media playback // pipeline. See src/media/base/pipeline.h for more information. -class FilterCollection { +class MEDIA_EXPORT FilterCollection { public: FilterCollection(); ~FilterCollection(); diff --git a/media/base/filter_factories.h b/media/base/filter_factories.h index 5286b3f..4e34c0f 100644 --- a/media/base/filter_factories.h +++ b/media/base/filter_factories.h @@ -8,6 +8,7 @@ #include<string> #include "base/callback_old.h" +#include "media/base/media_export.h" #include "media/base/pipeline_status.h" namespace media { @@ -15,7 +16,7 @@ namespace media { class DataSource; // Asynchronous factory interface for building DataSource objects. -class DataSourceFactory { +class MEDIA_EXPORT DataSourceFactory { public: // Ownership of the DataSource is transferred through this callback. typedef Callback2<PipelineStatus, DataSource*>::Type BuildCallback; @@ -33,7 +34,7 @@ class DataSourceFactory { class Demuxer; // Asynchronous factory interface for building Demuxer objects. -class DemuxerFactory { +class MEDIA_EXPORT DemuxerFactory { public: // Ownership of the Demuxer is transferred through this callback. typedef Callback2<PipelineStatus, Demuxer*>::Type BuildCallback; diff --git a/media/base/filter_host.h b/media/base/filter_host.h index 4bdad9f..510e333 100644 --- a/media/base/filter_host.h +++ b/media/base/filter_host.h @@ -22,7 +22,7 @@ namespace media { -class FilterHost { +class MEDIA_EXPORT FilterHost { public: // Stops execution of the pipeline due to a fatal error. Do not call this // method with PIPELINE_OK. diff --git a/media/base/filters.h b/media/base/filters.h index 1ce8682..f0c95ff 100644 --- a/media/base/filters.h +++ b/media/base/filters.h @@ -32,6 +32,7 @@ #include "base/memory/scoped_ptr.h" #include "base/time.h" #include "media/base/audio_decoder_config.h" +#include "media/base/media_export.h" #include "media/base/pipeline_status.h" #include "media/base/video_frame.h" @@ -67,12 +68,12 @@ typedef base::Callback<void(PipelineStatus)> FilterStatusCB; // This function copies |cb|, calls Reset() on |cb|, and then calls Run() // on the copy. This is used in the common case where you need to clear // a callback member variable before running the callback. -void ResetAndRunCB(FilterStatusCB* cb, PipelineStatus status); +MEDIA_EXPORT void ResetAndRunCB(FilterStatusCB* cb, PipelineStatus status); // Used for updating pipeline statistics. typedef Callback1<const PipelineStatistics&>::Type StatisticsCallback; -class Filter : public base::RefCountedThreadSafe<Filter> { +class MEDIA_EXPORT Filter : public base::RefCountedThreadSafe<Filter> { public: Filter(); @@ -130,7 +131,7 @@ class Filter : public base::RefCountedThreadSafe<Filter> { DISALLOW_COPY_AND_ASSIGN(Filter); }; -class DataSource : public Filter { +class MEDIA_EXPORT DataSource : public Filter { public: typedef Callback1<size_t>::Type ReadCallback; static const size_t kReadError = static_cast<size_t>(-1); @@ -155,7 +156,8 @@ class DataSource : public Filter { virtual void SetPreload(Preload preload) = 0; }; -class DemuxerStream : public base::RefCountedThreadSafe<DemuxerStream> { +class MEDIA_EXPORT DemuxerStream + : public base::RefCountedThreadSafe<DemuxerStream> { public: typedef base::Callback<void(Buffer*)> ReadCallback; @@ -183,7 +185,7 @@ class DemuxerStream : public base::RefCountedThreadSafe<DemuxerStream> { virtual ~DemuxerStream(); }; -class Demuxer : public Filter { +class MEDIA_EXPORT Demuxer : public Filter { public: // Returns the given stream type, or NULL if that type is not present. virtual scoped_refptr<DemuxerStream> GetStream(DemuxerStream::Type type) = 0; @@ -196,7 +198,7 @@ class Demuxer : public Filter { }; -class VideoDecoder : public Filter { +class MEDIA_EXPORT VideoDecoder : public Filter { public: // Initialize a VideoDecoder with the given DemuxerStream, executing the // callback upon completion. @@ -245,7 +247,7 @@ class VideoDecoder : public Filter { }; -class AudioDecoder : public Filter { +class MEDIA_EXPORT AudioDecoder : public Filter { public: // Initialize a AudioDecoder with the given DemuxerStream, executing the // callback upon completion. @@ -280,7 +282,7 @@ class AudioDecoder : public Filter { }; -class VideoRenderer : public Filter { +class MEDIA_EXPORT VideoRenderer : public Filter { public: // Initialize a VideoRenderer with the given VideoDecoder, executing the // callback upon completion. @@ -293,7 +295,7 @@ class VideoRenderer : public Filter { }; -class AudioRenderer : public Filter { +class MEDIA_EXPORT AudioRenderer : public Filter { public: // Initialize a AudioRenderer with the given AudioDecoder, executing the // callback upon completion. diff --git a/media/base/h264_bitstream_converter.h b/media/base/h264_bitstream_converter.h index bce1e23b..4ef0966 100644 --- a/media/base/h264_bitstream_converter.h +++ b/media/base/h264_bitstream_converter.h @@ -6,13 +6,14 @@ #define MEDIA_BASE_H264_BITSTREAM_CONVERTER_H_ #include "base/basictypes.h" +#include "media/base/media_export.h" namespace media { // H264BitstreamConverter is a class to convert H.264 bitstream from // MP4 format (as specified in ISO/IEC 14496-15) into H.264 bytestream // (as specified in ISO/IEC 14496-10 Annex B). -class H264BitstreamConverter { +class MEDIA_EXPORT H264BitstreamConverter { public: H264BitstreamConverter(); ~H264BitstreamConverter(); diff --git a/media/base/media.h b/media/base/media.h index 6bbad4c..54e9662 100644 --- a/media/base/media.h +++ b/media/base/media.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 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. @@ -8,6 +8,8 @@ #ifndef MEDIA_BASE_MEDIA_H_ #define MEDIA_BASE_MEDIA_H_ +#include "media/base/media_export.h" + class FilePath; namespace media { @@ -23,11 +25,11 @@ namespace media { // of the process. // // Returns true if everything was successfully initialized, false otherwise. -bool InitializeMediaLibrary(const FilePath& module_dir); +MEDIA_EXPORT bool InitializeMediaLibrary(const FilePath& module_dir); // Use this if you need to check whether the media library is initialized // for the this process, without actually trying to initialize it. -bool IsMediaLibraryInitialized(); +MEDIA_EXPORT bool IsMediaLibraryInitialized(); // Attempts to initialize OpenMAX library. // diff --git a/media/base/media_export.h b/media/base/media_export.h new file mode 100644 index 0000000..58a99d3 --- /dev/null +++ b/media/base/media_export.h @@ -0,0 +1,29 @@ +// Copyright (c) 2011 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_BASE_MEDIA_EXPORT_H_ +#define MEDIA_BASE_MEDIA_EXPORT_H_ +#pragma once + +// Defines MEDIA_EXPORT so that functionality implemented by the Media module +// can be exported to consumers. + +#if defined(COMPONENT_BUILD) +#if defined(WIN32) + +#if defined(MEDIA_IMPLEMENTATION) +#define MEDIA_EXPORT __declspec(dllexport) +#else +#define MEDIA_EXPORT __declspec(dllimport) +#endif // defined(MEDIA_IMPLEMENTATION) + +#else // defined(WIN32) +#define MEDIA_EXPORT __attribute__((visibility("default"))) +#endif + +#else // defined(COMPONENT_BUILD) +#define MEDIA_EXPORT +#endif + +#endif // MEDIA_BASE_MEDIA_EXPORT_H_ diff --git a/media/base/media_switches.h b/media/base/media_switches.h index dcef120..72005df 100644 --- a/media/base/media_switches.h +++ b/media/base/media_switches.h @@ -8,6 +8,7 @@ #define MEDIA_BASE_MEDIA_SWITCHES_H_ #include "build/build_config.h" +#include "media/base/media_export.h" namespace switches { @@ -16,8 +17,8 @@ extern const char kAlsaOutputDevice[]; extern const char kAlsaInputDevice[]; #endif -extern const char kEnableAdaptive[]; -extern const char kVideoThreads[]; +MEDIA_EXPORT extern const char kEnableAdaptive[]; +MEDIA_EXPORT extern const char kVideoThreads[]; } // namespace switches diff --git a/media/base/message_loop_factory.h b/media/base/message_loop_factory.h index 35078ed..7227840 100644 --- a/media/base/message_loop_factory.h +++ b/media/base/message_loop_factory.h @@ -10,13 +10,14 @@ #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "base/message_loop_proxy.h" +#include "media/base/media_export.h" class MessageLoop; namespace media { // Factory object that manages named MessageLoops. -class MessageLoopFactory { +class MEDIA_EXPORT MessageLoopFactory { public: // Get the message loop associated with |name|. A new MessageLoop // is created if the factory doesn't have one associated with |name|. diff --git a/media/base/message_loop_factory_impl.h b/media/base/message_loop_factory_impl.h index 821cd66..f5b5c06 100644 --- a/media/base/message_loop_factory_impl.h +++ b/media/base/message_loop_factory_impl.h @@ -13,7 +13,7 @@ namespace media { -class MessageLoopFactoryImpl : public MessageLoopFactory { +class MEDIA_EXPORT MessageLoopFactoryImpl : public MessageLoopFactory { public: MessageLoopFactoryImpl(); diff --git a/media/base/pipeline.h b/media/base/pipeline.h index 9686bb6..9488526 100644 --- a/media/base/pipeline.h +++ b/media/base/pipeline.h @@ -21,7 +21,7 @@ class TimeDelta; namespace media { -extern const char kRawMediaScheme[]; +MEDIA_EXPORT extern const char kRawMediaScheme[]; struct PipelineStatistics { PipelineStatistics() : @@ -39,7 +39,7 @@ struct PipelineStatistics { class FilterCollection; -class Pipeline : public base::RefCountedThreadSafe<Pipeline> { +class MEDIA_EXPORT Pipeline : public base::RefCountedThreadSafe<Pipeline> { public: // Initializes pipeline. Pipeline takes ownership of all callbacks passed // into this method. diff --git a/media/base/pipeline_impl.h b/media/base/pipeline_impl.h index caf4e19f..d8b4da2 100644 --- a/media/base/pipeline_impl.h +++ b/media/base/pipeline_impl.h @@ -33,7 +33,7 @@ namespace media { // the callback to get fired and call status() to see what the callback's // argument was. This object is for one-time use; call |Callback()| exactly // once. -class PipelineStatusNotification { +class MEDIA_EXPORT PipelineStatusNotification { public: PipelineStatusNotification(); ~PipelineStatusNotification(); @@ -91,7 +91,7 @@ class PipelineStatusNotification { // If any error ever happens, this object will transition to the "Error" state // from any state. If Stop() is ever called, this object will transition to // "Stopped" state. -class PipelineImpl : public Pipeline, public FilterHost { +class MEDIA_EXPORT PipelineImpl : public Pipeline, public FilterHost { public: explicit PipelineImpl(MessageLoop* message_loop); diff --git a/media/base/pts_heap.h b/media/base/pts_heap.h index 11a3dbc..5e7f3be 100644 --- a/media/base/pts_heap.h +++ b/media/base/pts_heap.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 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. @@ -31,10 +31,11 @@ #include <vector> #include "base/time.h" +#include "media/base/media_export.h" namespace media { -class PtsHeap { +class MEDIA_EXPORT PtsHeap { public: PtsHeap(); ~PtsHeap(); diff --git a/media/base/pts_stream.h b/media/base/pts_stream.h index f3a6e95..095ae7f 100644 --- a/media/base/pts_stream.h +++ b/media/base/pts_stream.h @@ -25,7 +25,7 @@ namespace media { class StreamSample; -class PtsStream { +class MEDIA_EXPORT PtsStream { public: PtsStream(); ~PtsStream(); diff --git a/media/base/seekable_buffer.h b/media/base/seekable_buffer.h index cad9be5..b32abfe 100644 --- a/media/base/seekable_buffer.h +++ b/media/base/seekable_buffer.h @@ -41,7 +41,7 @@ namespace media { -class SeekableBuffer { +class MEDIA_EXPORT SeekableBuffer { public: // Constructs an instance with |forward_capacity| and |backward_capacity|. // The values are in bytes. diff --git a/media/base/state_matrix.h b/media/base/state_matrix.h index 779646f..07ce514 100644 --- a/media/base/state_matrix.h +++ b/media/base/state_matrix.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 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. @@ -8,10 +8,11 @@ #include <map> #include "base/logging.h" +#include "media/base/media_export.h" namespace media { -class StateMatrix { +class MEDIA_EXPORT StateMatrix { public: StateMatrix(); ~StateMatrix(); diff --git a/media/base/video_decoder_config.h b/media/base/video_decoder_config.h index a077312..31aa12c 100644 --- a/media/base/video_decoder_config.h +++ b/media/base/video_decoder_config.h @@ -7,6 +7,7 @@ #include "base/basictypes.h" #include "base/memory/scoped_ptr.h" +#include "media/base/media_export.h" namespace media { @@ -25,7 +26,7 @@ enum VideoCodec { // that uses said codec in the same CL. }; -class VideoDecoderConfig { +class MEDIA_EXPORT VideoDecoderConfig { public: VideoDecoderConfig(VideoCodec codec, int width, int height, int surface_width, int surface_height, diff --git a/media/base/video_frame.h b/media/base/video_frame.h index 529b9ee..50ea32b 100644 --- a/media/base/video_frame.h +++ b/media/base/video_frame.h @@ -9,7 +9,7 @@ namespace media { -class VideoFrame : public StreamSample { +class MEDIA_EXPORT VideoFrame : public StreamSample { public: static const size_t kMaxPlanes = 3; diff --git a/media/base/video_util.h b/media/base/video_util.h index fa40984..7ffef74 100644 --- a/media/base/video_util.h +++ b/media/base/video_util.h @@ -6,6 +6,7 @@ #define MEDIA_BASE_VIDEO_UTIL_H_ #include "base/basictypes.h" +#include "media/base/media_export.h" namespace media { @@ -15,9 +16,12 @@ class VideoFrame; // source and destinations dimensions. // // NOTE: rows is *not* the same as height! -void CopyYPlane(const uint8* source, int stride, int rows, VideoFrame* frame); -void CopyUPlane(const uint8* source, int stride, int rows, VideoFrame* frame); -void CopyVPlane(const uint8* source, int stride, int rows, VideoFrame* frame); +MEDIA_EXPORT void CopyYPlane(const uint8* source, int stride, int rows, + VideoFrame* frame); +MEDIA_EXPORT void CopyUPlane(const uint8* source, int stride, int rows, + VideoFrame* frame); +MEDIA_EXPORT void CopyVPlane(const uint8* source, int stride, int rows, + VideoFrame* frame); } // namespace media diff --git a/media/base/yuv_convert.h b/media/base/yuv_convert.h index 12dab83..20ba0aa 100644 --- a/media/base/yuv_convert.h +++ b/media/base/yuv_convert.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 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. @@ -93,6 +93,7 @@ void ConvertYUY2ToYUV(const uint8* src, uint8* vplane, int width, int height); + } // namespace media #endif // MEDIA_BASE_YUV_CONVERT_H_ diff --git a/media/ffmpeg/ffmpeg_common.h b/media/ffmpeg/ffmpeg_common.h index 5ac0607..dec47df 100644 --- a/media/ffmpeg/ffmpeg_common.h +++ b/media/ffmpeg/ffmpeg_common.h @@ -12,6 +12,7 @@ #include "base/memory/singleton.h" #include "base/time.h" #include "media/base/channel_layout.h" +#include "media/base/media_export.h" #include "media/video/video_decode_engine.h" // Include FFmpeg header files. @@ -54,15 +55,15 @@ class ScopedPtrAVFreePacket { // For example if |timestamp| equals 11025 and |time_base| equals {1, 44100} // then the return value will be a base::TimeDelta for 0.25 seconds since that // is how much time 11025/44100ths of a second represents. -base::TimeDelta ConvertFromTimeBase(const AVRational& time_base, - int64 timestamp); +MEDIA_EXPORT base::TimeDelta ConvertFromTimeBase(const AVRational& time_base, + int64 timestamp); // Converts a base::TimeDelta into an int64 timestamp in |time_base| units. // For example if |timestamp| is 0.5 seconds and |time_base| is {1, 44100}, then // the return value will be 22050 since that is how many 1/44100ths of a second // represent 0.5 seconds. -int64 ConvertToTimeBase(const AVRational& time_base, - const base::TimeDelta& timestamp); +MEDIA_EXPORT int64 ConvertToTimeBase(const AVRational& time_base, + const base::TimeDelta& timestamp); VideoCodec CodecIDToVideoCodec(CodecID codec_id); CodecID VideoCodecToCodecID(VideoCodec video_codec); @@ -80,9 +81,9 @@ base::TimeDelta GetFrameDuration(AVStream* stream); // Returns true if a valid seek point was found after |timestamp| and // |seek_time| was set. Returns false if a seek point could not be // found or the parameters are invalid. -bool GetSeekTimeAfter(AVStream* stream, - const base::TimeDelta& timestamp, - base::TimeDelta* seek_time); +MEDIA_EXPORT bool GetSeekTimeAfter(AVStream* stream, + const base::TimeDelta& timestamp, + base::TimeDelta* seek_time); // Get the number of bytes required to play the stream over a specified // time range. This is an estimate based on the available index data. @@ -97,12 +98,12 @@ bool GetSeekTimeAfter(AVStream* stream, // |range_end| - The end time for the range covered by |bytes|. This may be // different than |end_time| if the index doesn't have data for // that exact time. |range_end| >= |end_time| -bool GetStreamByteCountOverRange(AVStream* stream, - const base::TimeDelta& start_time, - const base::TimeDelta& end_time, - int64* bytes, - base::TimeDelta* range_start, - base::TimeDelta* range_end); +MEDIA_EXPORT bool GetStreamByteCountOverRange(AVStream* stream, + const base::TimeDelta& start_time, + const base::TimeDelta& end_time, + int64* bytes, + base::TimeDelta* range_start, + base::TimeDelta* range_end); // Calculates the width and height of the video surface using the video's // encoded dimensions and sample_aspect_ratio. diff --git a/media/ffmpeg/file_protocol.h b/media/ffmpeg/file_protocol.h index ed37467..7c16c4b 100644 --- a/media/ffmpeg/file_protocol.h +++ b/media/ffmpeg/file_protocol.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 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. // @@ -8,7 +8,9 @@ #ifndef MEDIA_FFMPEG_FILE_PROTOCOL_H_ #define MEDIA_FFMPEG_FILE_PROTOCOL_H_ +#include "media/base/media_export.h" + struct URLProtocol; -extern URLProtocol kFFmpegFileProtocol; +MEDIA_EXPORT extern URLProtocol kFFmpegFileProtocol; #endif // MEDIA_FFMPEG_FILE_PROTOCOL_H_ diff --git a/media/filters/adaptive_demuxer.h b/media/filters/adaptive_demuxer.h index 73fd7b6..2a52b11 100644 --- a/media/filters/adaptive_demuxer.h +++ b/media/filters/adaptive_demuxer.h @@ -242,7 +242,7 @@ class AdaptiveDemuxer : public Demuxer { // DemuxerFactory's Build() method individually. For backward-compatibility, // the manifest URL may also simply be a regular URL in which case an implicit // "x-adaptive:0:0:" is prepended. -class AdaptiveDemuxerFactory : public DemuxerFactory { +class MEDIA_EXPORT AdaptiveDemuxerFactory : public DemuxerFactory { public: // Takes a reference to |demuxer_factory|. AdaptiveDemuxerFactory(DemuxerFactory* delegate_factory); @@ -260,6 +260,11 @@ class AdaptiveDemuxerFactory : public DemuxerFactory { DISALLOW_IMPLICIT_CONSTRUCTORS(AdaptiveDemuxerFactory); }; +// See AdaptiveDemuxerFactory's class-level comment for |url|'s format. +MEDIA_EXPORT bool ParseAdaptiveUrl( + const std::string& url, int* audio_index, int* video_index, + std::vector<std::string>* urls); + } // namespace media #endif // MEDIA_FILTERS_ADAPTIVE_DEMUXER_H_ diff --git a/media/filters/adaptive_demuxer_unittest.cc b/media/filters/adaptive_demuxer_unittest.cc index 3d8b31a..a6fcf79 100644 --- a/media/filters/adaptive_demuxer_unittest.cc +++ b/media/filters/adaptive_demuxer_unittest.cc @@ -8,10 +8,6 @@ namespace media { -bool ParseAdaptiveUrl( - const std::string& url, int* audio_index, int* video_index, - std::vector<std::string>* urls); - TEST(ParseAdaptiveUrlTest, BackwardsCompatible) { std::string manifest = "http://youtube.com/video.webm"; int audio_index; diff --git a/media/filters/audio_file_reader.h b/media/filters/audio_file_reader.h index 88a484c..6a3fd89 100644 --- a/media/filters/audio_file_reader.h +++ b/media/filters/audio_file_reader.h @@ -18,7 +18,7 @@ namespace media { class FFmpegURLProtocol; -class AudioFileReader { +class MEDIA_EXPORT AudioFileReader { public: // Audio file data will be read using the given protocol. // The AudioFileReader does not take ownership of |protocol| and diff --git a/media/filters/audio_renderer_algorithm_base.h b/media/filters/audio_renderer_algorithm_base.h index f6ead0d..e35e209 100644 --- a/media/filters/audio_renderer_algorithm_base.h +++ b/media/filters/audio_renderer_algorithm_base.h @@ -34,7 +34,7 @@ namespace media { class Buffer; -class AudioRendererAlgorithmBase { +class MEDIA_EXPORT AudioRendererAlgorithmBase { public: // Used to simplify callback declarations. typedef Callback0::Type RequestReadCallback; diff --git a/media/filters/audio_renderer_algorithm_ola.h b/media/filters/audio_renderer_algorithm_ola.h index ac98f684..88fd305 100644 --- a/media/filters/audio_renderer_algorithm_ola.h +++ b/media/filters/audio_renderer_algorithm_ola.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 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. @@ -19,7 +19,8 @@ namespace media { -class AudioRendererAlgorithmOLA : public AudioRendererAlgorithmBase { +class MEDIA_EXPORT AudioRendererAlgorithmOLA + : public AudioRendererAlgorithmBase { public: AudioRendererAlgorithmOLA(); virtual ~AudioRendererAlgorithmOLA(); diff --git a/media/filters/audio_renderer_base.h b/media/filters/audio_renderer_base.h index 1882743..5305c7b 100644 --- a/media/filters/audio_renderer_base.h +++ b/media/filters/audio_renderer_base.h @@ -27,7 +27,7 @@ namespace media { -class AudioRendererBase : public AudioRenderer { +class MEDIA_EXPORT AudioRendererBase : public AudioRenderer { public: AudioRendererBase(); virtual ~AudioRendererBase(); diff --git a/media/filters/audio_renderer_impl.h b/media/filters/audio_renderer_impl.h index 1e33822..f52913d 100644 --- a/media/filters/audio_renderer_impl.h +++ b/media/filters/audio_renderer_impl.h @@ -24,7 +24,7 @@ namespace media { -class AudioRendererImpl +class MEDIA_EXPORT AudioRendererImpl : public AudioRendererBase, public AudioOutputStream::AudioSourceCallback { public: diff --git a/media/filters/bitstream_converter.h b/media/filters/bitstream_converter.h index a1ca3c6..d7b553f 100644 --- a/media/filters/bitstream_converter.h +++ b/media/filters/bitstream_converter.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 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. @@ -14,6 +14,7 @@ #include "base/basictypes.h" #include "base/gtest_prod_util.h" +#include "media/base/media_export.h" // FFmpeg types. struct AVBitStreamFilterContext; @@ -22,7 +23,7 @@ struct AVPacket; namespace media { -class BitstreamConverter { +class MEDIA_EXPORT BitstreamConverter { public: BitstreamConverter() {} virtual ~BitstreamConverter() {} @@ -53,7 +54,7 @@ class IdentityBitstreamConverter : public BitstreamConverter { DISALLOW_COPY_AND_ASSIGN(IdentityBitstreamConverter); }; -class FFmpegBitstreamConverter : public BitstreamConverter { +class MEDIA_EXPORT FFmpegBitstreamConverter : public BitstreamConverter { public: // Creates FFmpegBitstreamConverter based on the FFmpeg bistream filter // corresponding to |filter_name|. diff --git a/media/filters/chunk_demuxer.h b/media/filters/chunk_demuxer.h index 84e224d..298fecd 100644 --- a/media/filters/chunk_demuxer.h +++ b/media/filters/chunk_demuxer.h @@ -21,7 +21,7 @@ class FFmpegURLProtocol; // Demuxer implementation that allows chunks of WebM media data to be passed // from JavaScript to the media stack. -class ChunkDemuxer : public Demuxer { +class MEDIA_EXPORT ChunkDemuxer : public Demuxer { public: explicit ChunkDemuxer(ChunkDemuxerClient* client); virtual ~ChunkDemuxer(); diff --git a/media/filters/chunk_demuxer_factory.h b/media/filters/chunk_demuxer_factory.h index a3d004a..6eba933 100644 --- a/media/filters/chunk_demuxer_factory.h +++ b/media/filters/chunk_demuxer_factory.h @@ -18,7 +18,7 @@ class ChunkDemuxerClient; // All other URLs are delegated to |delegate_factory_|. The url passed to // the constructor represents the "special" URL that indicates that the // ChunkDemuxer should be used for playback. -class ChunkDemuxerFactory : public DemuxerFactory { +class MEDIA_EXPORT ChunkDemuxerFactory : public DemuxerFactory { public: // Takes ownership of |delegate_factory|. ChunkDemuxerFactory(const std::string& url, DemuxerFactory* delegate_factory, diff --git a/media/filters/ffmpeg_audio_decoder.h b/media/filters/ffmpeg_audio_decoder.h index 72978bc..1025083 100644 --- a/media/filters/ffmpeg_audio_decoder.h +++ b/media/filters/ffmpeg_audio_decoder.h @@ -14,7 +14,8 @@ namespace media { // Forward declaration for scoped_ptr_malloc. class ScopedPtrAVFree; -class FFmpegAudioDecoder : public DecoderBase<AudioDecoder, Buffer> { +class MEDIA_EXPORT FFmpegAudioDecoder + : public DecoderBase<AudioDecoder, Buffer> { public: explicit FFmpegAudioDecoder(MessageLoop* message_loop); virtual ~FFmpegAudioDecoder(); diff --git a/media/filters/ffmpeg_demuxer.h b/media/filters/ffmpeg_demuxer.h index 4ab7690..7dea4b5 100644 --- a/media/filters/ffmpeg_demuxer.h +++ b/media/filters/ffmpeg_demuxer.h @@ -125,7 +125,7 @@ class FFmpegDemuxerStream : public DemuxerStream { DISALLOW_COPY_AND_ASSIGN(FFmpegDemuxerStream); }; -class FFmpegDemuxer : public Demuxer, public FFmpegURLProtocol { +class MEDIA_EXPORT FFmpegDemuxer : public Demuxer, public FFmpegURLProtocol { public: explicit FFmpegDemuxer(MessageLoop* message_loop); virtual ~FFmpegDemuxer(); diff --git a/media/filters/ffmpeg_demuxer_factory.h b/media/filters/ffmpeg_demuxer_factory.h index b467d75..37a5f43 100644 --- a/media/filters/ffmpeg_demuxer_factory.h +++ b/media/filters/ffmpeg_demuxer_factory.h @@ -15,7 +15,7 @@ class MessageLoop; namespace media { -class FFmpegDemuxerFactory : public DemuxerFactory { +class MEDIA_EXPORT FFmpegDemuxerFactory : public DemuxerFactory { public: // Takes ownership of |data_source_factory|, but not of |loop|. FFmpegDemuxerFactory(DataSourceFactory* data_source_factory, diff --git a/media/filters/ffmpeg_glue.h b/media/filters/ffmpeg_glue.h index a98c502..c51000a 100644 --- a/media/filters/ffmpeg_glue.h +++ b/media/filters/ffmpeg_glue.h @@ -31,10 +31,11 @@ #include "base/memory/singleton.h" #include "base/synchronization/lock.h" +#include "media/base/media_export.h" namespace media { -class FFmpegURLProtocol { +class MEDIA_EXPORT FFmpegURLProtocol { public: FFmpegURLProtocol() { } @@ -64,7 +65,7 @@ class FFmpegURLProtocol { DISALLOW_COPY_AND_ASSIGN(FFmpegURLProtocol); }; -class FFmpegGlue { +class MEDIA_EXPORT FFmpegGlue { public: // Returns the singleton instance. static FFmpegGlue* GetInstance(); diff --git a/media/filters/ffmpeg_h264_bitstream_converter.h b/media/filters/ffmpeg_h264_bitstream_converter.h index 69d8e4c..e27cc60 100644 --- a/media/filters/ffmpeg_h264_bitstream_converter.h +++ b/media/filters/ffmpeg_h264_bitstream_converter.h @@ -35,7 +35,7 @@ namespace media { // FFmpegH264BitstreamConverter uses FFmpeg allocation methods for buffer // allocation to ensure compatibility with FFmpeg's memory management. -class FFmpegH264BitstreamConverter : public BitstreamConverter { +class MEDIA_EXPORT FFmpegH264BitstreamConverter : public BitstreamConverter { public: // The |stream_context| will be used during conversion and should be the // AVCodecContext for the stream sourcing these packets. A reference to diff --git a/media/filters/ffmpeg_video_decoder.h b/media/filters/ffmpeg_video_decoder.h index fbf6210..7458ff7 100644 --- a/media/filters/ffmpeg_video_decoder.h +++ b/media/filters/ffmpeg_video_decoder.h @@ -19,7 +19,7 @@ namespace media { class VideoDecodeEngine; -class FFmpegVideoDecoder +class MEDIA_EXPORT FFmpegVideoDecoder : public VideoDecoder, public VideoDecodeEngine::EventHandler { public: diff --git a/media/filters/file_data_source.h b/media/filters/file_data_source.h index 10e61aa..d463f4d 100644 --- a/media/filters/file_data_source.h +++ b/media/filters/file_data_source.h @@ -15,7 +15,7 @@ namespace media { // Basic data source that treats the URL as a file path, and uses the file // system to read data for a media pipeline. -class FileDataSource : public DataSource { +class MEDIA_EXPORT FileDataSource : public DataSource { public: FileDataSource(); virtual ~FileDataSource(); diff --git a/media/filters/file_data_source_factory.h b/media/filters/file_data_source_factory.h index 18c0587..94b056c 100644 --- a/media/filters/file_data_source_factory.h +++ b/media/filters/file_data_source_factory.h @@ -9,7 +9,7 @@ namespace media { -class FileDataSourceFactory : public DataSourceFactory { +class MEDIA_EXPORT FileDataSourceFactory : public DataSourceFactory { public: FileDataSourceFactory(); virtual ~FileDataSourceFactory(); diff --git a/media/filters/in_memory_url_protocol.h b/media/filters/in_memory_url_protocol.h index 7bad5e3..7a5c468 100644 --- a/media/filters/in_memory_url_protocol.h +++ b/media/filters/in_memory_url_protocol.h @@ -5,9 +5,8 @@ #ifndef MEDIA_FILTERS_IN_MEMORY_URL_PROTOCOL_H_ #define MEDIA_FILTERS_IN_MEMORY_URL_PROTOCOL_H_ -#include "media/filters/ffmpeg_glue.h" - #include "base/basictypes.h" +#include "media/filters/ffmpeg_glue.h" namespace media { @@ -16,7 +15,7 @@ namespace media { // buffer pointer passed into the constructor // needs to remain valid for the entire lifetime of // this object. -class InMemoryUrlProtocol : public FFmpegURLProtocol { +class MEDIA_EXPORT InMemoryUrlProtocol : public FFmpegURLProtocol { public: InMemoryUrlProtocol(const uint8* buf, int64 size, bool streaming); virtual ~InMemoryUrlProtocol(); diff --git a/media/filters/null_audio_renderer.h b/media/filters/null_audio_renderer.h index 28e79b5..f330c77 100644 --- a/media/filters/null_audio_renderer.h +++ b/media/filters/null_audio_renderer.h @@ -23,7 +23,7 @@ namespace media { -class NullAudioRenderer +class MEDIA_EXPORT NullAudioRenderer : public AudioRendererBase, public base::PlatformThread::Delegate { public: diff --git a/media/filters/video_renderer_base.h b/media/filters/video_renderer_base.h index d4a064c..3dd12bc 100644 --- a/media/filters/video_renderer_base.h +++ b/media/filters/video_renderer_base.h @@ -29,7 +29,7 @@ namespace media { // TODO(scherkus): to avoid subclasses, consider using a peer/delegate interface // and pass in a reference to the constructor. -class VideoRendererBase +class MEDIA_EXPORT VideoRendererBase : public VideoRenderer, public base::PlatformThread::Delegate { public: diff --git a/media/media.gyp b/media/media.gyp index efcb8a6..c828319 100644 --- a/media/media.gyp +++ b/media/media.gyp @@ -9,7 +9,7 @@ 'targets': [ { 'target_name': 'media', - 'type': 'static_library', + 'type': '<(component)', 'dependencies': [ 'yuv_convert', '../base/base.gyp:base', @@ -17,6 +17,10 @@ '../build/temp_gyp/googleurl.gyp:googleurl', '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg', '../third_party/openmax/openmax.gyp:il', + '../ui/ui.gyp:ui', + ], + 'defines': [ + 'MEDIA_IMPLEMENTATION', ], 'include_dirs': [ '..', @@ -104,6 +108,7 @@ 'base/h264_bitstream_converter.cc', 'base/h264_bitstream_converter.h', 'base/media.h', + 'base/media_export.h', 'base/media_posix.cc', 'base/media_switches.cc', 'base/media_switches.h', @@ -389,6 +394,7 @@ 'dependencies': [ 'media', 'media_test_support', + 'yuv_convert', '../base/base.gyp:base', '../base/base.gyp:base_i18n', '../base/base.gyp:test_support_base', @@ -497,6 +503,7 @@ 'type': 'executable', 'dependencies': [ 'media', + 'yuv_convert', '../base/base.gyp:base', '../skia/skia.gyp:skia', ], @@ -543,7 +550,9 @@ 'type': 'executable', 'dependencies': [ 'media', + 'yuv_convert', '../base/base.gyp:base', + '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations', ], 'include_dirs': [ '<(DEPTH)/third_party/wtl/include', @@ -595,6 +604,7 @@ 'type': 'executable', 'dependencies': [ 'media', + 'yuv_convert', '../base/base.gyp:base', ], 'include_dirs': [ @@ -620,6 +630,7 @@ 'type': 'executable', 'dependencies': [ 'media', + 'yuv_convert', '../base/base.gyp:base', '../ui/gfx/gl/gl.gyp:gl', ], diff --git a/media/video/capture/fake_video_capture_device.h b/media/video/capture/fake_video_capture_device.h index 582e55f..d73000d 100644 --- a/media/video/capture/fake_video_capture_device.h +++ b/media/video/capture/fake_video_capture_device.h @@ -16,7 +16,7 @@ namespace media { -class FakeVideoCaptureDevice : public VideoCaptureDevice { +class MEDIA_EXPORT FakeVideoCaptureDevice : public VideoCaptureDevice { public: static VideoCaptureDevice* Create(const Name& device_name); virtual ~FakeVideoCaptureDevice(); diff --git a/media/video/capture/video_capture_device.h b/media/video/capture/video_capture_device.h index a2d4ddd..5069fc4 100644 --- a/media/video/capture/video_capture_device.h +++ b/media/video/capture/video_capture_device.h @@ -16,10 +16,11 @@ #include <string> #include "base/time.h" +#include "media/base/media_export.h" namespace media { -class VideoCaptureDevice { +class MEDIA_EXPORT VideoCaptureDevice { public: struct Name { diff --git a/media/video/ffmpeg_video_decode_engine.h b/media/video/ffmpeg_video_decode_engine.h index 32eac45..ebea8df 100644 --- a/media/video/ffmpeg_video_decode_engine.h +++ b/media/video/ffmpeg_video_decode_engine.h @@ -17,7 +17,7 @@ struct AVFrame; namespace media { -class FFmpegVideoDecodeEngine : public VideoDecodeEngine { +class MEDIA_EXPORT FFmpegVideoDecodeEngine : public VideoDecodeEngine { public: FFmpegVideoDecodeEngine(); virtual ~FFmpegVideoDecodeEngine(); diff --git a/media/video/picture.h b/media/video/picture.h index 10cf47c..e3ecb9e 100644 --- a/media/video/picture.h +++ b/media/video/picture.h @@ -6,6 +6,7 @@ #define MEDIA_VIDEO_PICTURE_H_ #include "base/basictypes.h" +#include "media/base/media_export.h" #include "ui/gfx/gl/gl_context.h" #include "ui/gfx/size.h" @@ -13,7 +14,7 @@ namespace media { // A picture buffer that is composed of a GLES2 texture. // This is the media-namespace equivalent of PP_PictureBuffer_Dev. -class PictureBuffer { +class MEDIA_EXPORT PictureBuffer { public: PictureBuffer(int32 id, gfx::Size size, uint32 texture_id); @@ -42,7 +43,7 @@ class PictureBuffer { // A decoded picture frame. // This is the media-namespace equivalent of PP_Picture_Dev. -class Picture { +class MEDIA_EXPORT Picture { public: Picture(int32 picture_buffer_id, int32 bitstream_buffer_id); diff --git a/media/video/video_decode_accelerator.h b/media/video/video_decode_accelerator.h index 6ac1c0e..46d9326 100644 --- a/media/video/video_decode_accelerator.h +++ b/media/video/video_decode_accelerator.h @@ -164,7 +164,7 @@ enum VideoColorFormat { // // No thread-safety guarantees are implied by the use of RefCountedThreadSafe // below. -class VideoDecodeAccelerator +class MEDIA_EXPORT VideoDecodeAccelerator : public base::RefCountedThreadSafe<VideoDecodeAccelerator> { public: // Enumeration of potential errors generated by the API. diff --git a/media/video/video_decode_engine.h b/media/video/video_decode_engine.h index fb6933d..43af3cb 100644 --- a/media/video/video_decode_engine.h +++ b/media/video/video_decode_engine.h @@ -7,6 +7,7 @@ #include "base/callback.h" #include "base/memory/scoped_ptr.h" +#include "media/base/media_export.h" #include "media/base/video_decoder_config.h" #include "media/base/video_frame.h" @@ -30,9 +31,9 @@ struct VideoCodecInfo { uint32 surface_height; }; -class VideoDecodeEngine { +class MEDIA_EXPORT VideoDecodeEngine { public: - struct EventHandler { + struct MEDIA_EXPORT EventHandler { public: virtual ~EventHandler() {} virtual void OnInitializeComplete(const VideoCodecInfo& info) = 0; |