#include <tizen-video-player.h>
// EXTERNAL INCLUDES
-#include <dali/devel-api/adaptor-framework/window-devel.h>
#include <dali/devel-api/common/stage.h>
#include <dali/devel-api/threading/mutex.h>
#include <dali/integration-api/debug.h>
mBackgroundColor(Dali::Vector4(1.0f, 1.0f, 1.0f, 0.0f)),
mTargetType(NATIVE_IMAGE),
mPacketMutex(),
- mPacketList(),
- mDeletePacketList(),
+ mPacketVector(),
mStreamInfo(NULL),
mStreamType(SOUND_STREAM_TYPE_MEDIA),
mCodecType(PLAYER_VIDEO_CODEC_TYPE_EX_DEFAULT),
mSyncActor(actor),
mVideoSizePropertyIndex(Property::INVALID_INDEX),
mSyncMode(syncMode),
- mIsInitForSyncMode(false),
- mFrameId(0)
+ mIsInitForSyncMode(false)
{
}
{
if(mNativeImageSourcePtr && mTimer)
{
- mFrameId = 0;
mTimer.Start();
}
{
DALI_LOG_ERROR("Play, player_start() is failed\n");
}
-
}
}
if(mNativeImageSourcePtr && mTimer)
{
mTimer.Stop();
+ DestroyPackets();
}
}
}
if(mNativeImageSourcePtr && mTimer)
{
mTimer.Stop();
+ DestroyPackets();
}
}
}
}
}
-void TizenVideoPlayer::FrameCallback(int32_t frameId)
+bool TizenVideoPlayer::Update()
{
- Dali::Mutex::ScopedLock lock( mPacketMutex );
- if(mFrameId == frameId)
+ Dali::Mutex::ScopedLock lock(mPacketMutex);
+
+ int error;
+
+ if(mPacket != NULL)
{
- if(!mPacketList.empty())
+ error = media_packet_destroy(mPacket);
+ if(error != MEDIA_PACKET_ERROR_NONE)
{
- mPacket = static_cast< media_packet_h >( mPacketList.front() );
- mPacketList.pop_front();
-
- if( mPacket == NULL )
- {
- return;
- }
+ DALI_LOG_ERROR("Update, media_packet_destroy() is failed\n");
+ }
+ mPacket = NULL;
+ }
- int error = media_packet_get_tbm_surface( mPacket, &mTbmSurface );
- if( error != MEDIA_PACKET_ERROR_NONE )
- {
- media_packet_destroy( mPacket );
- mPacket = NULL;
- DALI_LOG_ERROR( " error: %d\n", error );
- return;
- }
- Any source( mTbmSurface );
- mNativeImageSourcePtr->SetSource( source );
+ if(!mPacketVector.Empty())
+ {
+ mPacket = static_cast<media_packet_h>(mPacketVector[0]);
+ mPacketVector.Remove(mPacketVector.Begin());
+ }
- if(!mDeletePacketList.empty())
- {
- media_packet_h packet = static_cast< media_packet_h >( mDeletePacketList.front() );
- int error = media_packet_destroy( packet );
- if(error != MEDIA_PACKET_ERROR_NONE)
- {
- DALI_LOG_ERROR("Update, media_packet_destroy() is failed\n");
- }
- mDeletePacketList.pop_front();
- }
- mDeletePacketList.push_back(mPacket);
- }
- mFrameId = 0;
+ if(mPacket == NULL)
+ {
+ return true;
}
-}
-bool TizenVideoPlayer::Update()
-{
- Dali::Mutex::ScopedLock lock(mPacketMutex);
+ error = media_packet_get_tbm_surface(mPacket, &mTbmSurface);
+ if(error != MEDIA_PACKET_ERROR_NONE)
+ {
+ media_packet_destroy(mPacket);
+ mPacket = NULL;
+ DALI_LOG_ERROR(" error: %d\n", error);
+ return true;
+ }
- DevelWindow::AddFrameRenderedCallback(DevelWindow::Get(mSyncActor), std::unique_ptr<CallbackBase>(MakeCallback(this, &TizenVideoPlayer::FrameCallback)), ++mFrameId);
+ Any source(mTbmSurface);
+ mNativeImageSourcePtr->SetSource(source);
Dali::Stage::GetCurrent().KeepRendering(0.0f);
return true;
void TizenVideoPlayer::DestroyPackets()
{
- Dali::Mutex::ScopedLock lock( mPacketMutex );
int error;
-
- if(mNativeImageSourcePtr)
- {
- Any source( NULL );
- mNativeImageSourcePtr->SetSource( source );
- }
-
- std::list<media_packet_h>::iterator dIter = mDeletePacketList.begin();
- for (; dIter != mDeletePacketList.end(); ++dIter)
+ if(mPacket != NULL)
{
- mPacket = *dIter;
- error = media_packet_destroy( mPacket );
- DALI_LOG_ERROR( "Media packet destroy error: %d\n", error );
+ error = media_packet_destroy(mPacket);
+ DALI_LOG_ERROR("Media packet destroy error: %d\n", error);
mPacket = NULL;
}
- std::list<media_packet_h>::iterator iter = mPacketList.begin();
- for (; iter != mPacketList.end(); ++iter)
+ for(unsigned int i = 0; i < mPacketVector.Size(); ++i)
{
- mPacket = *iter;
- error = media_packet_destroy( mPacket );
- DALI_LOG_ERROR( "Media packet destroy error: %d\n", error );
+ mPacket = static_cast<media_packet_h>(mPacketVector[i]);
+ error = media_packet_destroy(mPacket);
+ DALI_LOG_ERROR("Media packet destroy error: %d\n", error);
mPacket = NULL;
}
-
- mPacketList.clear();
- mDeletePacketList.clear();
-
+ mPacketVector.Clear();
}
void TizenVideoPlayer::PushPacket(media_packet_h packet)
{
Dali::Mutex::ScopedLock lock(mPacketMutex);
- mPacketList.push_back(packet);
+ mPacketVector.PushBack(packet);
}
void TizenVideoPlayer::SetDisplayArea(DisplayArea area)
int ret = 0;
int error;
-
if(mPlayerState != PLAYER_STATE_NONE)
{
GetPlayerState(&mPlayerState);
mPlayerState = PLAYER_STATE_NONE;
mPlayer = NULL;
}
-
- DestroyPackets();
}
void TizenVideoPlayer::SetCodecType(Dali::VideoPlayerPlugin::CodecType type)