You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by ar...@apache.org on 2019/10/21 01:27:44 UTC

[openoffice] 03/08: #i124875# avoid wasteful loading of an AVAsset in MacAVF::Framegrabber

This is an automated email from the ASF dual-hosted git repository.

arielch pushed a commit to branch AOO418
in repository https://gitbox.apache.org/repos/asf/openoffice.git

commit 6a7d45efb49169f8345719aa163722d8b8f2c22f
Author: Herbert Dürr <hd...@apache.org>
AuthorDate: Mon May 12 16:07:09 2014 +0000

    #i124875# avoid wasteful loading of an AVAsset in MacAVF::Framegrabber
    
    FrameGrabber used to load its own copy of a movie. Since multimedia content
    is often very data-intensive this should and can be avoided by using the
    movie asset already available in the Player.
    
    
    git-svn-id: https://svn.apache.org/repos/asf/openoffice/trunk@1594017 13f79535-47bb-0310-9956-ffa450edef68
    (cherry picked from commit 32322404843edfd777f7b843f7e0e2e38f46fabf)
---
 main/avmedia/source/macavf/macavf_framegrabber.cxx | 12 ++++++++---
 main/avmedia/source/macavf/macavf_framegrabber.hxx |  1 +
 main/avmedia/source/macavf/macavf_player.cxx       | 23 ++++------------------
 main/avmedia/source/macavf/macavf_player.hxx       |  4 +---
 4 files changed, 15 insertions(+), 25 deletions(-)

diff --git a/main/avmedia/source/macavf/macavf_framegrabber.cxx b/main/avmedia/source/macavf/macavf_framegrabber.cxx
index f9fb5a6..df5d9f9 100644
--- a/main/avmedia/source/macavf/macavf_framegrabber.cxx
+++ b/main/avmedia/source/macavf/macavf_framegrabber.cxx
@@ -51,8 +51,6 @@ FrameGrabber::~FrameGrabber()
 
 bool FrameGrabber::create( const ::rtl::OUString& rURL )
 {
-    // TODO: use AVPlayer's movie directly instead of loading it here?
-
     NSString* pNSStr = [NSString stringWithCharacters:rURL.getStr() length:rURL.getLength()];
     NSURL* pNSURL = [NSURL URLWithString: [pNSStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
     AVAsset* pMovie = [AVURLAsset URLAssetWithURL:pNSURL options:nil];
@@ -61,9 +59,17 @@ bool FrameGrabber::create( const ::rtl::OUString& rURL )
         OSL_TRACE( "AVGrabber::create() cannot load url=\"%s\"", [pNSStr UTF8String] );
         return false;
     }
+
+    return create( pMovie );
+}
+
+// ------------------------------------------------------------------------------
+
+bool FrameGrabber::create( AVAsset* pMovie )
+{
     if( [[pMovie tracksWithMediaType:AVMediaTypeVideo] count] == 0)
     {
-        OSL_TRACE( "AVGrabber::create() found no video in url=\"%s\"", [pNSStr UTF8String] );
+        OSL_TRACE( "AVGrabber::create() found no video content!" );
         return false;
     }
 
diff --git a/main/avmedia/source/macavf/macavf_framegrabber.hxx b/main/avmedia/source/macavf/macavf_framegrabber.hxx
index c483eda..24c42c6 100644
--- a/main/avmedia/source/macavf/macavf_framegrabber.hxx
+++ b/main/avmedia/source/macavf/macavf_framegrabber.hxx
@@ -42,6 +42,7 @@ public:
     virtual  ~FrameGrabber();
 
     bool    create( const ::rtl::OUString& rURL );
+    bool    create( AVAsset* pMovie );
 
     // XFrameGrabber
     virtual ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic > SAL_CALL grabFrame( double fMediaTime ) throw (::com::sun::star::uno::RuntimeException);
diff --git a/main/avmedia/source/macavf/macavf_player.cxx b/main/avmedia/source/macavf/macavf_player.cxx
index 27fd644..34c76d4 100644
--- a/main/avmedia/source/macavf/macavf_player.cxx
+++ b/main/avmedia/source/macavf/macavf_player.cxx
@@ -112,17 +112,6 @@ Player::~Player()
 
 // ------------------------------------------------------------------------------
 
-AVAsset* Player::getMovie()
-{
-    if( !mpPlayer )
-        return nil;
-    AVAsset* pMovie = [[mpPlayer currentItem] asset];
-    OSL_ASSERT( pMovie ); 
-    return pMovie;
-}
-
-// ------------------------------------------------------------------------------
-
 bool Player::handleObservation( NSString* pKeyPath )
 {
     OSL_TRACE( "AVPlayer::handleObservation key=\"%s\"", [pKeyPath UTF8String]);
@@ -139,8 +128,6 @@ bool Player::handleObservation( NSString* pKeyPath )
 
 bool Player::create( const ::rtl::OUString& rURL )
 {
-    maURL = rURL;
-
     // get the media asset
     NSString* aNSStr = [NSString stringWithCharacters:rURL.getStr() length:rURL.getLength()];
     NSURL* aNSURL = [NSURL URLWithString: [aNSStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
@@ -433,12 +420,10 @@ uno::Reference< media::XFrameGrabber > SAL_CALL Player::createFrameGrabber()
     uno::Reference< media::XFrameGrabber > xRet;
     OSL_TRACE ("Player::createFrameGrabber");
 
-    if( !maURL.isEmpty() )
-    {
-        FrameGrabber* pGrabber = new FrameGrabber( mxMgr );
-        if( pGrabber->create( maURL ) )
-            xRet = pGrabber;
-    }
+    FrameGrabber* pGrabber = new FrameGrabber( mxMgr );
+    AVAsset* pMovie = [[mpPlayer currentItem] asset];
+    if( pGrabber->create( pMovie ) )
+        xRet = pGrabber;
 
     return xRet;
 }
diff --git a/main/avmedia/source/macavf/macavf_player.hxx b/main/avmedia/source/macavf/macavf_player.hxx
index 45f6f86..05c5220 100644
--- a/main/avmedia/source/macavf/macavf_player.hxx
+++ b/main/avmedia/source/macavf/macavf_player.hxx
@@ -46,6 +46,7 @@ public:
     virtual  ~Player();
 
     bool create( const ::rtl::OUString& rURL );
+    bool create( AVAsset* );
 
     // XPlayer
     virtual void SAL_CALL start() throw (::com::sun::star::uno::RuntimeException);
@@ -72,15 +73,12 @@ public:
     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException);
     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames(  ) throw (::com::sun::star::uno::RuntimeException);
  
-    AVAsset* getMovie();
     AVPlayer* getAVPlayer() const { return mpPlayer; }
     virtual bool handleObservation( NSString* pKeyPath );
 
 private:
     ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > mxMgr;
 
-    ::rtl::OUString     maURL;
-    
     AVPlayer*           mpPlayer;
 
     float               mfUnmutedVolume;