Skip to content

Commit

Permalink
feat(anlystic): support set external collector
Browse files Browse the repository at this point in the history
  • Loading branch information
I-m-SuperMan authored and pingkai committed Aug 25, 2020
1 parent f0701e0 commit b664e13
Show file tree
Hide file tree
Showing 5 changed files with 106 additions and 52 deletions.
2 changes: 2 additions & 0 deletions mediaPlayer/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,8 @@ set(SOURCE_FILES
native_cicada_player_def.h
MediaPlayer.cpp
MediaPlayerConfig.cpp
QueryListener.cpp
QueryListener.h
abr/AbrManager.h
abr/AbrManager.cpp
abr/AbrRefererData.h
Expand Down
67 changes: 15 additions & 52 deletions mediaPlayer/MediaPlayer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,64 +18,14 @@
#include "analytics/AnalyticsQueryListener.h"
#include "media_player_error_def.h"
#include "PlayerCacheDataSource.h"
#include "QueryListener.h"

using namespace Cicada;

namespace Cicada {

#define GET_PLAYER_HANDLE playerHandle* handle = (playerHandle*)mPlayerHandle;
#define GET_MEDIA_PLAYER MediaPlayer* player = (MediaPlayer*)userData;

class QueryListener : public AnalyticsQueryListener {
public:
explicit QueryListener(MediaPlayer *player)
{
mPlayer = player;
}

~QueryListener() override = default;;

// analytics query interface
int64_t OnAnalyticsGetCurrentPosition() override
{
if (mPlayer) {
return mPlayer->GetCurrentPosition();
}

return -1;
}

int64_t OnAnalyticsGetBufferedPosition() override
{
if (mPlayer) {
return mPlayer->GetBufferedPosition();
}

return -1;
}

int64_t OnAnalyticsGetDuration() override
{
if (mPlayer) {
return mPlayer->GetDuration();
}

return -1;
}

std::string OnAnalyticsGetPropertyString(PropertyKey key) override
{
if (mPlayer) {
return mPlayer->GetPropertyString(key);
}

return "";
}

private:
MediaPlayer *mPlayer = nullptr;
};

MediaPlayer::MediaPlayer(const char *opt) : MediaPlayer(*(AnalyticsCollectorFactory::Instance()), opt)
{
}
Expand Down Expand Up @@ -115,6 +65,7 @@ namespace Cicada {
configPlayer(mConfig);
mQueryListener = new QueryListener(this);
mCollector = mCollectorFactory.createAnalyticsCollector(mQueryListener);
bExternalCollector = false;
mAbrManager = new AbrManager();
std::function<void(int)> fun = [this](int stream) -> void {
return this->abrChanged(stream);
Expand All @@ -125,6 +76,18 @@ namespace Cicada {
mAbrManager->SetAbrAlgoStrategy(mAbrAlgo);
}


void MediaPlayer::SetAnalyticsCollector(IAnalyticsCollector * collector) {
if (mCollector && !bExternalCollector) {
mCollectorFactory.destroyAnalyticsCollector(mCollector);
// avoid be used in derivative class
mCollector = nullptr;
}

bExternalCollector = true;
mCollector = collector;
}

void MediaPlayer::dummyFunction(bool dummy)
{
#ifdef ENABLE_MUXER
Expand All @@ -143,7 +106,7 @@ namespace Cicada {
delete mConfig;
CicadaReleasePlayer(&handle);

if (mCollector) {
if (mCollector && !bExternalCollector) {
mCollectorFactory.destroyAnalyticsCollector(mCollector);
// avoid be used in derivative class
mCollector = nullptr;
Expand Down
4 changes: 4 additions & 0 deletions mediaPlayer/MediaPlayer.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,9 @@ namespace Cicada {
}

public:

void SetAnalyticsCollector(IAnalyticsCollector * collector);

void EnableVideoRenderedCallback(bool enable);

void SetOnRenderFrameCallback(onRenderFrame cb, void *userData);
Expand Down Expand Up @@ -401,6 +404,7 @@ namespace Cicada {
MediaPlayerConfig *mConfig;
AnalyticsQueryListener *mQueryListener;
IAnalyticsCollector *mCollector{nullptr};
bool bExternalCollector{false};
IAnalyticsCollectorFactory &mCollectorFactory;
AbrManager *mAbrManager;
AbrAlgoStrategy *mAbrAlgo;
Expand Down
51 changes: 51 additions & 0 deletions mediaPlayer/QueryListener.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
//
// Created by lifujun on 2020/8/10.
//

#include "QueryListener.h"

using namespace Cicada;

QueryListener::QueryListener(MediaPlayer *player) {
mPlayer = player;
}

void QueryListener::setMediaPlayer(MediaPlayer *player) {
mPlayer = player;
}

// analytics query interface
int64_t QueryListener::OnAnalyticsGetCurrentPosition() {
if (mPlayer) {
return mPlayer->GetCurrentPosition();

}

return -1;
}

int64_t QueryListener::OnAnalyticsGetBufferedPosition() {
if (mPlayer) {
return mPlayer->GetBufferedPosition();

}

return -1;
}

int64_t QueryListener::OnAnalyticsGetDuration() {
if (mPlayer) {
return mPlayer->GetDuration();

}

return -1;
}

std::string QueryListener::OnAnalyticsGetPropertyString(PropertyKey key) {
if (mPlayer) {
return mPlayer->GetPropertyString(key);
}

return "";
}
34 changes: 34 additions & 0 deletions mediaPlayer/QueryListener.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
//
// Created by lifujun on 2020/8/10.
//

#ifndef SOURCE_QUERYLISTENER_H
#define SOURCE_QUERYLISTENER_H

#include "MediaPlayer.h"
#include "analytics/AnalyticsQueryListener.h"

namespace Cicada {
class QueryListener : public AnalyticsQueryListener {
public:
explicit QueryListener(MediaPlayer *player);

~QueryListener() override = default;

void setMediaPlayer(MediaPlayer *player);

// analytics query interface
int64_t OnAnalyticsGetCurrentPosition() override;

int64_t OnAnalyticsGetBufferedPosition() override;

int64_t OnAnalyticsGetDuration() override;

std::string OnAnalyticsGetPropertyString(PropertyKey key) override;

private:
MediaPlayer *mPlayer = nullptr;
};
}

#endif //SOURCE_QUERYLISTENER_H

0 comments on commit b664e13

Please sign in to comment.