瀏覽代碼

Z991239-1812 #comment fix: 副屏播放广告,播放框支持位置设定

陈礼鹏80274480 4 年之前
父節點
當前提交
01cb63c461

+ 3 - 28
Other/libmediaplayer/libmediaplayer.cpp

@@ -2,10 +2,6 @@
 #include "player.h"
 #include <unistd.h>
 
-#ifndef RVC_MAX_DISPLAYNUM
-#define RVC_MAX_DISPLAYNUM 5
-#endif
-
 
 class libmediaplayer_impl
 {
@@ -14,8 +10,6 @@ private:
 	CMediaPlayer* m_Player;
 	CMediaPlayConfig m_stPlayConfig;
 	bool m_bisplaying;
-	SDL_DisplayMode m_dispalymode[RVC_MAX_DISPLAYNUM];
-	uint m_udisplaynum;
 
 public:
 
@@ -28,10 +22,6 @@ public:
 		}
 		memset(&m_stPlayConfig, 0, sizeof(CMediaPlayConfig));
 		m_bisplaying = false;
-		for (int inum = 0; inum < RVC_MAX_DISPLAYNUM; inum++) {
-			memset(&m_dispalymode[inum], 0, sizeof(SDL_DisplayMode));
-		}
-		m_udisplaynum = GetVideoDisplayInfo();
 	}
 
 	~libmediaplayer_impl()
@@ -53,20 +43,6 @@ public:
 		}
 	}
 
-	size_t GetVideoDisplayInfo()
-	{
-		size_t uCount = SDL_GetNumVideoDisplays();
-		m_pHostApi->Debug("VideoDisplays Number is %d:", uCount);
-		for (size_t i = 0; i < uCount && i < RVC_MAX_DISPLAYNUM; i++) {
-			SDL_GetDesktopDisplayMode(i, &m_dispalymode[i]);
-			m_pHostApi->Debug("VideoDisplays{%d} format = %d", i, m_dispalymode[i].format);
-			m_pHostApi->Debug("VideoDisplays{%d} w = %d", i, m_dispalymode[i].w);
-			m_pHostApi->Debug("VideoDisplays{%d} h = %d", i, m_dispalymode[i].h);
-			m_pHostApi->Debug("VideoDisplays{%d} refresh_rate = %d", i, m_dispalymode[i].refresh_rate);
-		}
-		return uCount;
-	}
-
 	int StartPlayVideo(const char* pVideoDir, const char* pNamePrefix = NULL, int nVideoCount = 1)
 	{
 		int iRet = -1;
@@ -272,10 +248,8 @@ public:
 
 		t_param.udisplaycx = SDL_WINDOWPOS_UNDEFINED;
 		t_param.udisplaycy = SDL_WINDOWPOS_UNDEFINED;
-		if (m_udisplaynum > 1){
-			t_param.udisplaycx = m_dispalymode[0].w;
-		}
-		m_pHostApi->Debug("display cx is %d.", t_param.udisplaycx);
+		t_param.bvicemonitor = true;
+
 		play_media_callback_t cb;
 		cb.cb_play_media_finished = &__cb_play_finished;
 		cb.user_data = this;
@@ -329,6 +303,7 @@ public:
 		//}
 		t_param.eType = eVideo_Type;
 		t_param.eWindType = eFullScreen_Type;
+		t_param.bvicemonitor = true;
 
 		char strFileName[MAX_PATH] = { 0 };
 		snprintf(strFileName, MAX_PATH, "%s%s", m_stPlayConfig.strRootPath, m_stPlayConfig.strFileNames[0]);

+ 29 - 1
Other/libmediaplayer/player.cpp

@@ -229,7 +229,9 @@ int CMediaPlayer::Initialize_Player_Stat(rvc_media_player_param_t* pMedia_Player
 	m_player_stat->prvc_cb = pMedia_Player->cb;
 	m_player_stat->eMType = pMedia_Player->eType;
 	m_player_stat->eWindType = pMedia_Player->eWindType;
-	m_player_stat->uDisplayCx = pMedia_Player->udisplaycx;
+	m_player_stat->bvice_monitor = pMedia_Player->bvicemonitor;
+	m_player_stat->iDisplayCx = pMedia_Player->udisplaycx;
+	m_player_stat->iDisplayCy = pMedia_Player->udisplaycy;
 	if (NULL != m_piconpath){
 		m_player_stat->piconpath = av_strdup(m_piconpath);
 	}
@@ -251,6 +253,26 @@ int CMediaPlayer::Initialize_Player_Stat(rvc_media_player_param_t* pMedia_Player
 }
 
 
+int CMediaPlayer::GetViceVideoDisplayCx()
+{
+	int icx = 0;
+	size_t uCount = SDL_GetNumVideoDisplays();
+	m_hostapi->Debug("VideoDisplays Number is %d:", uCount);
+	SDL_DisplayMode dispalymode[RVC_MAX_DISPLAYNUM] = {0};
+	for (size_t i = 0; i < uCount && i < RVC_MAX_DISPLAYNUM; i++) {
+		SDL_GetDesktopDisplayMode(i, &dispalymode[i]);
+		m_hostapi->Debug("VideoDisplays{%d} format = %d", i, dispalymode[i].format);
+		m_hostapi->Debug("VideoDisplays{%d} w = %d", i, dispalymode[i].w);
+		m_hostapi->Debug("VideoDisplays{%d} h = %d", i, dispalymode[i].h);
+		m_hostapi->Debug("VideoDisplays{%d} refresh_rate = %d", i, dispalymode[i].refresh_rate);
+	}
+	if (uCount > 1){
+		icx = dispalymode[0].w;
+	}
+
+	return icx;
+}
+
 int CMediaPlayer::Init(rvc_media_player_param_t* pMedia_Player)
 {
 	int iRet = -1;
@@ -315,6 +337,12 @@ int CMediaPlayer::Init(rvc_media_player_param_t* pMedia_Player)
 		iRet = 0;
 	}
 
+	if (m_player_stat->bvice_monitor){
+		m_player_stat->iDisplayCx = GetViceVideoDisplayCx();
+		m_player_stat->iDisplayCy = 0;
+		m_hostapi->Debug("display cx is %d, cy is %d.", m_player_stat->iDisplayCx, m_player_stat->iDisplayCy);
+	}
+
 	return iRet;
 }
 

+ 11 - 4
Other/libmediaplayer/player.h

@@ -69,6 +69,9 @@ extern "C"
 
 #define FF_QUIT_EVENT    (SDL_USEREVENT + 2)
 
+#ifndef RVC_MAX_DISPLAYNUM
+#define RVC_MAX_DISPLAYNUM 5
+#endif
 
 typedef struct {
     double pts;                     // 当前帧(待播放)显示时间戳,播放后,当前帧变成上一帧
@@ -210,7 +213,9 @@ typedef struct player_stat_s{
 	uint uFilesCount;								//播放文件数
 	volatile int index;								//当前播放文件索引
 	bool bCirclePlay;
-	uint uDisplayCx;
+	bool bvice_monitor;
+	int iDisplayCx;
+	int iDisplayCy;
 }player_stat_t;
 
 
@@ -218,8 +223,9 @@ typedef struct rvc_media_player_param_s{
 	char* p_input_file;
 	eMediaType_t eType;
 	eWindType_t eWindType;
-	uint udisplaycx;
-	uint udisplaycy;
+	int udisplaycx;
+	int udisplaycy;
+	bool bvicemonitor;
 	char strPlayLists[MAX_FILECOUNT][MAX_PATH];		//播放列表,全路径
 	uint uFilesCount;								//播放文件数
 	play_media_callback_t* cb;
@@ -245,12 +251,13 @@ public:
 	int StopMediaPlay();
 	int ExitMediaPlayingThread();
 	int64_t GetMediaPlayingThreadId();
+	int GetViceVideoDisplayCx();
 
 private:
 	player_stat_t* m_player_stat;
 	bool m_bplaying;
 	uint8_t m_uvolume;
 	CMediaHostApi* m_hostapi;
-	char* m_piconpath;				// icon图标路径
+	char* m_piconpath;				// ico图标路径
 };
 

+ 3 - 3
Other/libmediaplayer/video.cpp

@@ -434,8 +434,8 @@ static int open_video_playing(void *arg)
     // 1. 创建SDL窗口,SDL 2.0支持多窗口
     //    SDL_Window即运行程序后弹出的视频窗口,同SDL 1.x中的SDL_Surface
     is->sdl_video.window = SDL_CreateWindow("rvc media player", 
-                              SDL_WINDOWPOS_UNDEFINED,// 不关心窗口X坐标
-                              SDL_WINDOWPOS_UNDEFINED,// 不关心窗口Y坐标
+							  is->iDisplayCx,
+                              is->iDisplayCy,
                               is->sdl_video.rect.w, 
                               is->sdl_video.rect.h,
 							  uWindFlag
@@ -447,7 +447,7 @@ static int open_video_playing(void *arg)
     }
 
 	if (eFullScreen_Type == is->eWindType){
-		//SDL_SetWindowFullscreen(is->sdl_video.window, SDL_WINDOW_FULLSCREEN_DESKTOP);
+		SDL_SetWindowFullscreen(is->sdl_video.window, SDL_WINDOW_FULLSCREEN_DESKTOP);
 	}
 
 	int cx = 0, cy = 0;

+ 1 - 1
Other/libpictureplayer/CPicturePlayer.cpp

@@ -76,7 +76,7 @@ CPicturePlayer::~CPicturePlayer()
 size_t CPicturePlayer::GetVideoDisplayInfo()
 {
 	size_t uCount = SDL_GetNumVideoDisplays();
-	m_pHostApi->PicDebug("VideoDisplays Number is %d:", uCount);
+	m_pHostApi->PicDebug("VideoDisplays Number is %d.", uCount);
 	for (size_t i = 0; i < uCount && i < MAX_DISPLAYNUM; i++){
 		SDL_GetDesktopDisplayMode(i, &m_dispalymode[i]);
 		m_pHostApi->PicDebug("VideoDisplays{%d} format = %d", i, m_dispalymode[i].format);