1/* 2 * Copyright (C) 2011 Apple Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 26#ifndef MediaPlayerPrivateAVFoundationObjC_h 27#define MediaPlayerPrivateAVFoundationObjC_h 28 29#if ENABLE(VIDEO) && USE(AVFOUNDATION) 30 31#include "MediaPlayerPrivateAVFoundation.h" 32 33#ifdef __OBJC__ 34@class AVAsset; 35@class AVPlayer; 36@class AVPlayerItem; 37@class AVPlayerLayer; 38@class AVAssetImageGenerator; 39@class WebCoreAVFMovieObserver; 40#else 41class AVAsset; 42class AVPlayer; 43class AVPlayerItem; 44class AVPlayerLayer; 45class AVAssetImageGenerator; 46class WebCoreAVFMovieObserver; 47typedef struct objc_object *id; 48#endif 49 50namespace WebCore { 51 52class ApplicationCacheResource; 53 54class MediaPlayerPrivateAVFoundationObjC : public MediaPlayerPrivateAVFoundation { 55public: 56 57 static void registerMediaEngine(MediaEngineRegistrar); 58 59 void setAsset(id); 60 virtual void tracksChanged(); 61 62private: 63 MediaPlayerPrivateAVFoundationObjC(MediaPlayer*); 64 ~MediaPlayerPrivateAVFoundationObjC(); 65 66 // engine support 67 static MediaPlayerPrivateInterface* create(MediaPlayer* player); 68 static void getSupportedTypes(HashSet<String>& types); 69 static MediaPlayer::SupportsType supportsType(const String& type, const String& codecs); 70 static bool isAvailable(); 71 72 virtual void cancelLoad(); 73 74 virtual PlatformMedia platformMedia() const; 75 76 virtual void platformPlay(); 77 virtual void platformPause(); 78 virtual float currentTime() const; 79 virtual void setVolume(float); 80 virtual void setClosedCaptionsVisible(bool); 81 virtual void paint(GraphicsContext*, const IntRect&); 82 virtual void paintCurrentFrameInContext(GraphicsContext*, const IntRect&); 83 virtual PlatformLayer* platformLayer() const; 84 virtual bool supportsAcceleratedRendering() const { return true; } 85 virtual float mediaTimeForTimeValue(float) const; 86 87 virtual void createAVPlayer(); 88 virtual void createAVPlayerForURL(const String& url); 89#if ENABLE(OFFLINE_WEB_APPLICATIONS) 90 virtual void createAVPlayerForCacheResource(ApplicationCacheResource*); 91#endif 92 virtual MediaPlayerPrivateAVFoundation::ItemStatus playerItemStatus() const; 93 virtual MediaPlayerPrivateAVFoundation::AVAssetStatus assetStatus() const; 94 95 virtual void checkPlayability(); 96 virtual void updateRate(); 97 virtual float rate() const; 98 virtual void seekToTime(float time); 99 virtual unsigned totalBytes() const; 100 virtual PassRefPtr<TimeRanges> platformBufferedTimeRanges() const; 101 virtual float platformMaxTimeSeekable() const; 102 virtual float platformDuration() const; 103 virtual float platformMaxTimeLoaded() const; 104 virtual void beginLoadingMetadata(); 105 virtual void sizeChanged(); 106 107 virtual void createContextVideoRenderer(); 108 virtual void destroyContextVideoRenderer(); 109 110 virtual void createVideoLayer(); 111 virtual void destroyVideoLayer(); 112 virtual bool videoLayerIsReadyToDisplay() const; 113 114 virtual bool hasContextRenderer() const; 115 virtual bool hasLayerRenderer() const; 116 117 RetainPtr<CGImageRef> createImageForTimeInRect(float, const IntRect&); 118 119 MediaPlayer* m_player; 120 RetainPtr<AVAsset> m_avAsset; 121 RetainPtr<AVPlayer> m_avPlayer; 122 RetainPtr<AVPlayerItem> m_avPlayerItem; 123 RetainPtr<AVPlayerLayer> m_videoLayer; 124 RetainPtr<WebCoreAVFMovieObserver> m_objcObserver; 125 RetainPtr<AVAssetImageGenerator> m_imageGenerator; 126 id m_timeObserver; 127}; 128 129} 130 131#endif 132#endif 133