Index: media/base/mac/videotoolbox_helpers.h |
diff --git a/media/base/media_tracks.h b/media/base/mac/videotoolbox_helpers.h |
similarity index 11% |
copy from media/base/media_tracks.h |
copy to media/base/mac/videotoolbox_helpers.h |
index 4e0fbb0fc1f88195ce14cc05d14a424924be4d5d..87d769eef816020c81a1d3b8f11a10390517d34a 100644 |
--- a/media/base/media_tracks.h |
+++ b/media/base/mac/videotoolbox_helpers.h |
@@ -2,61 +2,68 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#ifndef MEDIA_BASE_MEDIA_TRACKS_H_ |
-#define MEDIA_BASE_MEDIA_TRACKS_H_ |
+#ifndef MEDIA_BASE_MAC_VIDEOTOOLBOX_HELPERS_H_ |
+#define MEDIA_BASE_MAC_VIDEOTOOLBOX_HELPERS_H_ |
-#include <map> |
-#include <string> |
-#include <vector> |
- |
-#include "base/macros.h" |
-#include "base/memory/scoped_ptr.h" |
+#include "base/mac/scoped_cftyperef.h" |
+#include "media/base/mac/videotoolbox_glue.h" |
#include "media/base/media_export.h" |
-#include "media/base/media_track.h" |
namespace media { |
-class AudioDecoderConfig; |
-class VideoDecoderConfig; |
+namespace video_toolbox { |
+ |
+// Create a CFDictionaryRef with the given keys and values. |
+MEDIA_EXPORT base::ScopedCFTypeRef<CFDictionaryRef> |
+DictionaryWithKeysAndValues(CFTypeRef* keys, CFTypeRef* values, size_t size); |
+ |
+// Create a CFDictionaryRef with the given key and value. |
+MEDIA_EXPORT base::ScopedCFTypeRef<CFDictionaryRef> DictionaryWithKeyValue( |
+ CFTypeRef key, |
+ CFTypeRef value); |
+ |
+// Create a CFArrayRef with the given array of integers. |
+MEDIA_EXPORT base::ScopedCFTypeRef<CFArrayRef> ArrayWithIntegers(const int* v, |
+ size_t size); |
+ |
+// Create a CFArrayRef with the given int and float values. |
+MEDIA_EXPORT base::ScopedCFTypeRef<CFArrayRef> ArrayWithIntegerAndFloat( |
+ int int_val, |
+ float float_val); |
-class MEDIA_EXPORT MediaTracks { |
+// Copy a H.264 frame stored in a CM sample buffer to an Annex B buffer. Copies |
+// parameter sets for keyframes before the frame data as well. |
+MEDIA_EXPORT bool CopySampleBufferToAnnexBBuffer( |
+ CoreMediaGlue::CMSampleBufferRef sbuf, |
+ bool keyframe, |
+ std::string* annexb_buffer); |
+MEDIA_EXPORT bool CopySampleBufferToAnnexBBuffer( |
+ CoreMediaGlue::CMSampleBufferRef sbuf, |
+ bool keyframe, |
+ size_t annexb_buffer_size, |
+ char* annexb_buffer, |
+ size_t* used_buffer_size); |
+ |
+// Helper class to add session properties to a VTCompressionSessionRef. |
+class MEDIA_EXPORT SessionPropertySetter { |
public: |
- typedef std::vector<scoped_ptr<MediaTrack>> MediaTracksCollection; |
- |
- MediaTracks(); |
- ~MediaTracks(); |
- |
- // Callers need to ensure that track id is unique. |
- void AddAudioTrack(const AudioDecoderConfig& config, |
- const std::string& id, |
- const std::string& kind, |
- const std::string& label, |
- const std::string& language); |
- // Callers need to ensure that track id is unique. |
- void AddVideoTrack(const VideoDecoderConfig& config, |
- const std::string& id, |
- const std::string& kind, |
- const std::string& label, |
- const std::string& language); |
- |
- const MediaTracksCollection& tracks() const { return tracks_; } |
- |
- const AudioDecoderConfig& getAudioConfig(const std::string& id) const; |
- const VideoDecoderConfig& getVideoConfig(const std::string& id) const; |
- |
- // TODO(servolk): These are temporary helpers useful until all code paths are |
- // converted to properly handle multiple media tracks. |
- const AudioDecoderConfig& getFirstAudioConfig() const; |
- const VideoDecoderConfig& getFirstVideoConfig() const; |
+ SessionPropertySetter( |
+ base::ScopedCFTypeRef<VideoToolboxGlue::VTCompressionSessionRef> session, |
+ const VideoToolboxGlue* const glue); |
+ ~SessionPropertySetter(); |
- private: |
- MediaTracksCollection tracks_; |
- std::map<std::string, AudioDecoderConfig> audio_configs_; |
- std::map<std::string, VideoDecoderConfig> video_configs_; |
+ bool Set(CFStringRef key, int32_t value); |
+ bool Set(CFStringRef key, bool value); |
+ bool Set(CFStringRef key, CFStringRef value); |
+ bool Set(CFStringRef key, CFArrayRef value); |
- DISALLOW_COPY_AND_ASSIGN(MediaTracks); |
+ private: |
+ base::ScopedCFTypeRef<VideoToolboxGlue::VTCompressionSessionRef> session_; |
+ const VideoToolboxGlue* glue_; |
}; |
+} // namespace video_toolbox |
+ |
} // namespace media |
-#endif // MEDIA_BASE_MEDIA_TRACKS_H_ |
+#endif // MEDIA_BASE_MAC_VIDEOTOOLBOX_HELPERS_H_ |