18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 2d0825bca7fe65beaee391d30da42e937db621564Steve Block * Copyright (C) 2007, 2008, 2009, 2010 Apple, Inc. All rights reserved. 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 266c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#ifndef QTMovie_h 276c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#define QTMovie_h 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2968513a70bcd92384395513322f1b801e7bf9c729Steve Block#include "QTTrack.h" 3068513a70bcd92384395513322f1b801e7bf9c729Steve Block#include <WTF/Vector.h> 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef QTMOVIEWIN_EXPORTS 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define QTMOVIEWIN_API __declspec(dllexport) 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#else 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define QTMOVIEWIN_API __declspec(dllimport) 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 386c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenclass QTMovie; 396c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenclass QTMoviePrivate; 406c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsentypedef struct MovieType** Movie; 4168513a70bcd92384395513322f1b801e7bf9c729Steve Blocktypedef Vector<RefPtr<QTTrack>> QTTrackArray; 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 436c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenclass QTMovieClient { 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic: 456c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen virtual void movieEnded(QTMovie*) = 0; 466c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen virtual void movieLoadStateChanged(QTMovie*) = 0; 476c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen virtual void movieTimeChanged(QTMovie*) = 0; 48d0825bca7fe65beaee391d30da42e937db621564Steve Block}; 49d0825bca7fe65beaee391d30da42e937db621564Steve Block 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectenum { 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QTMovieLoadStateError = -1L, 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QTMovieLoadStateLoaded = 2000L, 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QTMovieLoadStatePlayable = 10000L, 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QTMovieLoadStatePlaythroughOK = 20000L, 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QTMovieLoadStateComplete = 100000L 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochtypedef const struct __CFURL * CFURLRef; 590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 606c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenclass QTMOVIEWIN_API QTMovie : public RefCounted<QTMovie> { 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic: 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static bool initializeQuickTime(); 63231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block static void taskTimerFired(); 64231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 6568513a70bcd92384395513322f1b801e7bf9c729Steve Block static void disableComponent(uint32_t[5]); 6668513a70bcd92384395513322f1b801e7bf9c729Steve Block 676c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen QTMovie(QTMovieClient*); 686c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen ~QTMovie(); 696c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 706c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen void addClient(QTMovieClient*); 716c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen void removeClient(QTMovieClient*); 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 732bde8e466a4451c7319e3a072d118917957d6554Steve Block void loadPath(const UChar* url, int len, bool preservesPitch); 740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void load(const UChar* url, int len, bool preservesPitch); 756c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen void load(CFURLRef, bool preservesPitch); 766c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project long loadState() const; 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project float maxTimeLoaded() const; 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void play(); 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void pause(); 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project float rate() const; 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setRate(float); 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project float duration() const; 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project float currentTime() const; 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setCurrentTime(float) const; 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setVolume(float); 910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void setPreservesPitch(bool); 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project unsigned dataSize() const; 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void getNaturalSize(int& width, int& height); 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 975f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void disableUnsupportedTracks(unsigned& enabledTrackCount, unsigned& totalTrackCount); 986c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 996c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen bool isDisabled() const; 1005f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void setDisabled(bool); 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 102635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project bool hasVideo() const; 103231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block bool hasAudio() const; 104635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 10568513a70bcd92384395513322f1b801e7bf9c729Steve Block QTTrackArray videoTracks() const; 10668513a70bcd92384395513322f1b801e7bf9c729Steve Block 107643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool hasClosedCaptions() const; 108643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void setClosedCaptionsVisible(bool); 109643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static unsigned countSupportedTypes(); 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static void getSupportedType(unsigned index, const UChar*& str, unsigned& len); 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11368513a70bcd92384395513322f1b801e7bf9c729Steve Block CGAffineTransform getTransform() const; 11468513a70bcd92384395513322f1b801e7bf9c729Steve Block void setTransform(CGAffineTransform); 11568513a70bcd92384395513322f1b801e7bf9c729Steve Block void resetTransform(); 11668513a70bcd92384395513322f1b801e7bf9c729Steve Block 1176c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen Movie getMovieHandle() const; 118d0825bca7fe65beaee391d30da42e937db621564Steve Block 11928040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu long timeScale() const; 12028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 12181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch void setPrivateBrowsingMode(bool); 12281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprivate: 1246c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen QTMoviePrivate* m_private; 1256c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen friend class QTMoviePrivate; 1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 129