| 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_
 | 
| 
 |