Fileplay: add separat fileplay for audio and video

This commit is contained in:
2017-12-21 12:10:40 +01:00
parent fb2d6f95e8
commit 91ee69f22e
13 changed files with 127 additions and 75 deletions

View File

@@ -929,6 +929,7 @@ mainmenu.games Spiele
mainmenu.head Hauptmenü
mainmenu.lua Plugins
mainmenu.media Multimedia
mainmenu.mediaplayer Mediaplayer
mainmenu.movieplayer Movieplayer
mainmenu.pausesectionsd EPG auslesen
mainmenu.pictureviewer Bildbetrachter
@@ -1827,7 +1828,8 @@ movieplayer.bookmarkname Bookmark Name
movieplayer.bookmarkname_hint1 Geben Sie den Namen für das neue Lesezeichen ein
movieplayer.bookmarkname_hint2
movieplayer.chapters Kapitel
movieplayer.fileplayback Abspielen (Multiformat)
movieplayer.fileplayback_audio Multiformat-Audiowiedergabe
movieplayer.fileplayback_video Multiformat-Videowiedergabe
movieplayer.head Movieplayer
movieplayer.help_additional Weitere benutzerdefinierte Tastenbelegungen sind unter "Hauptmenü" > "Einstellungen" > "Tasten" > "Bearbeiten" > "Movieplayer" zu finden.\n\nWährend der Wiedergabe von Filmen sind im Hauptmenü einige Menüpunkte deaktiviert.
movieplayer.help_button_1 1 Minute zurück

View File

@@ -929,6 +929,7 @@ mainmenu.games Games
mainmenu.head Main Menu
mainmenu.lua Lua Plugins
mainmenu.media Media
mainmenu.mediaplayer Mediaplayer
mainmenu.movieplayer Movieplayer
mainmenu.pausesectionsd Read EPG
mainmenu.pictureviewer Picture viewer
@@ -1827,7 +1828,8 @@ movieplayer.bookmarkname Bookmarkname
movieplayer.bookmarkname_hint1 Enter a name for your new bookmark
movieplayer.bookmarkname_hint2
movieplayer.chapters Chapters
movieplayer.fileplayback File play
movieplayer.fileplayback_audio Multiformat Audio Player
movieplayer.fileplayback_video Multiformat Video Player
movieplayer.head Movieplayer
movieplayer.help_additional To find more user definable key bindings, see "Mainmenu" > "Settings" > "Keys" > "Edit" > "Movieplayer".\n\nWhile movie playback some menuitems in mainmenu are deactivated.
movieplayer.help_button_1 1 minute backward

View File

@@ -929,7 +929,7 @@ bool CFileBrowser::exec(const char * const dirname)
return res;
}
bool CFileBrowser::playlist_manager(CFileList &playlist, unsigned int playing)
bool CFileBrowser::playlist_manager(CFileList &playlist, unsigned int playing, bool is_audio_player)
{
neutrino_msg_t msg;
neutrino_msg_data_t data;
@@ -1066,7 +1066,7 @@ bool CFileBrowser::playlist_manager(CFileList &playlist, unsigned int playing)
addfiles->Hide_records = true;
addfiles->Multi_Select = true;
addfiles->Dirs_Selectable = true;
addfiles->exec(g_settings.network_nfs_moviedir.c_str());
addfiles->exec(is_audio_player ? g_settings.network_nfs_audioplayerdir.c_str() : g_settings.network_nfs_moviedir.c_str());
CFileList tmplist = addfiles->getSelectedFiles();
filelist.insert( filelist.end(), tmplist.begin(), tmplist.end() );
tmplist.clear();

View File

@@ -220,7 +220,7 @@ class CFileBrowser
~CFileBrowser();
bool exec(const char * const dirname);
bool playlist_manager(CFileList &playlist,unsigned int playing);
bool playlist_manager(CFileList &playlist, unsigned int playing, bool is_audio_player = false);
CFile *getSelectedFile();
inline const CFileList & getSelectedFiles(void) const

View File

@@ -150,7 +150,7 @@ int CMediaPlayerMenu::initMenuMedia(CMenuWidget *m, CPersonalizeGui *p)
personalize->addItem(multimedia_menu, fw_inet, &g_settings.personalize[SNeutrinoSettings::P_MEDIA_INETPLAY]);
//init movieplayer submenu
CMenuWidget *movieplayer_menu = new CMenuWidget(LOCALE_MAINMENU_MOVIEPLAYER, NEUTRINO_ICON_MULTIMEDIA, width, MN_WIDGET_ID_MEDIA_MOVIEPLAYER);
CMenuWidget *movieplayer_menu = new CMenuWidget(LOCALE_MAINMENU_MEDIAPLAYER, NEUTRINO_ICON_MULTIMEDIA, width, MN_WIDGET_ID_MEDIA_MOVIEPLAYER);
personalize->addWidget(movieplayer_menu);
personalize->addIntroItems(movieplayer_menu);
@@ -159,18 +159,23 @@ int CMediaPlayerMenu::initMenuMedia(CMenuWidget *m, CPersonalizeGui *p)
fw_mbrowser->setHint(NEUTRINO_ICON_HINT_MB, LOCALE_MENU_HINT_MB);
personalize->addItem(movieplayer_menu, fw_mbrowser, &g_settings.personalize[SNeutrinoSettings::P_MPLAYER_MBROWSER]);
//fileplayback
CMenuForwarder *fw_fileplay = new CMenuForwarder(LOCALE_MOVIEPLAYER_FILEPLAYBACK, true, NULL, &CMoviePlayerGui::getInstance(), "fileplayback", CRCInput::RC_green);
fw_fileplay->setHint(NEUTRINO_ICON_HINT_FILEPLAY, LOCALE_MENU_HINT_FILEPLAY);
personalize->addItem(movieplayer_menu, fw_fileplay, &g_settings.personalize[SNeutrinoSettings::P_MPLAYER_FILEPLAY]);
//fileplayback video
CMenuForwarder *fw_fileplay_video = new CMenuForwarder(LOCALE_MOVIEPLAYER_FILEPLAYBACK_VIDEO, true, NULL, &CMoviePlayerGui::getInstance(), "fileplayback_video", CRCInput::RC_green);
fw_fileplay_video->setHint(NEUTRINO_ICON_HINT_FILEPLAY, LOCALE_MENU_HINT_FILEPLAY);
personalize->addItem(movieplayer_menu, fw_fileplay_video, &g_settings.personalize[SNeutrinoSettings::P_MPLAYER_FILEPLAY_VIDEO]);
//fileplayback audio
CMenuForwarder *fw_fileplay_audio = new CMenuForwarder(LOCALE_MOVIEPLAYER_FILEPLAYBACK_AUDIO, true, NULL, &CMoviePlayerGui::getInstance(), "fileplayback_audio", CRCInput::RC_yellow);
fw_fileplay_audio->setHint(NEUTRINO_ICON_HINT_FILEPLAY, LOCALE_MENU_HINT_FILEPLAY);
personalize->addItem(movieplayer_menu, fw_fileplay_audio, &g_settings.personalize[SNeutrinoSettings::P_MPLAYER_FILEPLAY_AUDIO]);
//ytplayback
CMenuForwarder *fw_ytplay = new CMenuForwarder(LOCALE_MOVIEPLAYER_YTPLAYBACK, g_settings.youtube_enabled, NULL, &CMoviePlayerGui::getInstance(), "ytplayback", CRCInput::RC_yellow);
CMenuForwarder *fw_ytplay = new CMenuForwarder(LOCALE_MOVIEPLAYER_YTPLAYBACK, g_settings.youtube_enabled, NULL, &CMoviePlayerGui::getInstance(), "ytplayback", CRCInput::RC_blue);
fw_ytplay->setHint(NEUTRINO_ICON_HINT_YTPLAY, LOCALE_MENU_HINT_YTPLAY);
personalize->addItem(movieplayer_menu, fw_ytplay, &g_settings.personalize[SNeutrinoSettings::P_MPLAYER_YTPLAY]);
//add movieplayer submenu
CMenuForwarder *fw_mp = new CMenuForwarder(LOCALE_MAINMENU_MOVIEPLAYER, enabled, NULL, movieplayer_menu, NULL, CRCInput::RC_yellow);
CMenuForwarder *fw_mp = new CMenuForwarder(LOCALE_MAINMENU_MEDIAPLAYER, enabled, NULL, movieplayer_menu, NULL, CRCInput::RC_yellow);
fw_mp->setHint(NEUTRINO_ICON_HINT_MOVIE, LOCALE_MENU_HINT_MOVIE);
personalize->addItem(multimedia_menu, fw_mp, &g_settings.personalize[SNeutrinoSettings::P_MEDIA_MPLAYER], false, CPersonalizeGui::PERSONALIZE_SHOW_AS_ACCESS_OPTION);

View File

@@ -193,35 +193,49 @@ void CMoviePlayerGui::Init(void)
if (bookmarkmanager == NULL)
bookmarkmanager = new CBookmarkManager();
tsfilefilter.addFilter("ts");
#if HAVE_TRIPLEDRAGON
tsfilefilter.addFilter("vdr");
#else
tsfilefilter.addFilter("avi");
tsfilefilter.addFilter("mkv");
tsfilefilter.addFilter("wav");
tsfilefilter.addFilter("asf");
tsfilefilter.addFilter("aiff");
#endif
tsfilefilter.addFilter("mpg");
tsfilefilter.addFilter("mpeg");
tsfilefilter.addFilter("m2p");
tsfilefilter.addFilter("mpv");
tsfilefilter.addFilter("vob");
tsfilefilter.addFilter("m2ts");
tsfilefilter.addFilter("mp4");
tsfilefilter.addFilter("mov");
tsfilefilter.addFilter("m3u");
tsfilefilter.addFilter("m3u8");
tsfilefilter.addFilter("pls");
tsfilefilter.addFilter("iso");
#if HAVE_SPARK_HARDWARE || HAVE_DUCKBOX_HARDWARE
tsfilefilter.addFilter("trp");
tsfilefilter.addFilter("vdr");
tsfilefilter.addFilter("mp3");
tsfilefilter.addFilter("flv");
tsfilefilter.addFilter("wmv");
// video files
filefilter_video.addFilter("ts");
#if !HAVE_TRIPLEDRAGON
filefilter_video.addFilter("asf");
filefilter_video.addFilter("avi");
filefilter_video.addFilter("mkv");
#endif
filefilter_video.addFilter("flv");
filefilter_video.addFilter("iso");
filefilter_video.addFilter("m2p");
filefilter_video.addFilter("m2ts");
filefilter_video.addFilter("mov");
filefilter_video.addFilter("mp4");
filefilter_video.addFilter("mpeg");
filefilter_video.addFilter("mpg");
filefilter_video.addFilter("mpv");
filefilter_video.addFilter("pls");
filefilter_video.addFilter("trp");
filefilter_video.addFilter("vdr");
filefilter_video.addFilter("vob");
filefilter_video.addFilter("wmv");
// video playlists
filefilter_video.addFilter("m3u");
filefilter_video.addFilter("m3u8");
// audio files
filefilter_audio.addFilter("aac");
filefilter_audio.addFilter("aif");
filefilter_audio.addFilter("aiff");
filefilter_audio.addFilter("cdr");
filefilter_audio.addFilter("dts");
filefilter_audio.addFilter("flac");
filefilter_audio.addFilter("flv");
filefilter_audio.addFilter("m2a");
filefilter_audio.addFilter("m4a");
filefilter_audio.addFilter("mp2");
filefilter_audio.addFilter("mp3");
filefilter_audio.addFilter("mpa");
filefilter_audio.addFilter("ogg");
filefilter_audio.addFilter("wav");
// audio playlists
filefilter_audio.addFilter("m3u");
filefilter_audio.addFilter("m3u8");
if (g_settings.network_nfs_moviedir.empty())
Path_local = "/";
@@ -233,7 +247,7 @@ void CMoviePlayerGui::Init(void)
else
filebrowser = new CFileBrowser();
filebrowser->Filter = &tsfilefilter;
// filebrowser->Filter is set in exec() function
filebrowser->Hide_records = true;
filebrowser->Multi_Select = true;
filebrowser->Dirs_Selectable = true;
@@ -375,19 +389,23 @@ int CMoviePlayerGui::exec(CMenuTarget * parent, const std::string & actionKey)
if (parent)
parent->hide();
#if 0
if (actionKey == "fileplayback" || actionKey == "tsmoviebrowser")
if (actionKey == "fileplayback_video" || actionKey == "fileplayback_audio" || actionKey == "tsmoviebrowser")
{
if(actionKey == "fileplayback") {
if (actionKey == "fileplayback_video") {
printf("[movieplayer] wakeup_hdd(%s) for %s\n", g_settings.network_nfs_moviedir.c_str(), actionKey.c_str());
wakeup_hdd(g_settings.network_nfs_moviedir.c_str(),true);
wakeup_hdd(g_settings.network_nfs_moviedir.c_str());
}
else if (actionKey == "fileplayback_audio") {
printf("[movieplayer] wakeup_hdd(%s) for %s\n", g_settings.network_nfs_audioplayerdir.c_str(), actionKey.c_str());
wakeup_hdd(g_settings.network_nfs_audioplayerdir.c_str());
}
else {
printf("[movieplayer] wakeup_hdd(%s) for %s\n", g_settings.network_nfs_recordingdir.c_str(), actionKey.c_str());
wakeup_hdd(g_settings.network_nfs_recordingdir.c_str(),true);
wakeup_hdd(g_settings.network_nfs_recordingdir.c_str());
}
}
#endif
if (!access(MOVIEPLAYER_START_SCRIPT, X_OK)) {
puts("[movieplayer.cpp] executing " MOVIEPLAYER_START_SCRIPT ".");
if (my_system(MOVIEPLAYER_START_SCRIPT) != 0)
@@ -406,17 +424,24 @@ int CMoviePlayerGui::exec(CMenuTarget * parent, const std::string & actionKey)
if (actionKey == "tsmoviebrowser") {
isMovieBrowser = true;
moviebrowser->setMode(MB_SHOW_RECORDS);
wakeup_hdd(g_settings.network_nfs_recordingdir.c_str());
//wakeup_hdd(g_settings.network_nfs_recordingdir.c_str());
}
#if HAVE_COOL_HARDWARE || HAVE_GENERIC_HARDWARE
else if (actionKey == "ytplayback") {
isMovieBrowser = true;
moviebrowser->setMode(MB_SHOW_YT);
isYT = true;
}
#endif
else if (actionKey == "fileplayback") {
wakeup_hdd(g_settings.network_nfs_moviedir.c_str());
else if (actionKey == "fileplayback_video") {
is_audio_player = false;
if (filebrowser)
filebrowser->Filter = &filefilter_video;
//wakeup_hdd(g_settings.network_nfs_moviedir.c_str());
}
else if (actionKey == "fileplayback_audio") {
is_audio_player = true;
if (filebrowser)
filebrowser->Filter = &filefilter_audio;
//wakeup_hdd(g_settings.network_nfs_audioplayerdir.c_str());
}
else if (actionKey == "timeshift") {
timeshift = TSHIFT_MODE_ON;
@@ -618,6 +643,7 @@ void CMoviePlayerGui::ClearFlags()
isWebChannel = false;
isYT = false;
is_file_player = false;
is_audio_player = false;
timeshift = TSHIFT_MODE_OFF;
}
@@ -719,12 +745,19 @@ bool CMoviePlayerGui::SelectFile()
file_name.clear();
cookie_header.clear();
//reinit Path_local for webif reloadsetup
if (g_settings.network_nfs_moviedir.empty())
Path_local = "/";
Path_local = "/";
if (is_audio_player)
{
if (!g_settings.network_nfs_audioplayerdir.empty())
Path_local = g_settings.network_nfs_audioplayerdir;
}
else
Path_local = g_settings.network_nfs_moviedir;
{
if (!g_settings.network_nfs_moviedir.empty())
Path_local = g_settings.network_nfs_moviedir;
}
printf("CMoviePlayerGui::SelectFile: isBookmark %d timeshift %d isMovieBrowser %d\n", isBookmark, timeshift, isMovieBrowser);
printf("CMoviePlayerGui::SelectFile: isBookmark %d timeshift %d isMovieBrowser %d is_audio_player %d\n", isBookmark, timeshift, isMovieBrowser, is_audio_player);
#if 0
wakeup_hdd(g_settings.network_nfs_recordingdir.c_str());
#endif
@@ -796,7 +829,8 @@ bool CMoviePlayerGui::SelectFile()
menu_ret = filebrowser->getMenuRet();
enableOsdElements(MUTE);
}
g_settings.network_nfs_moviedir = Path_local;
if (!is_audio_player)
g_settings.network_nfs_moviedir = Path_local;
return ret;
}
@@ -1722,7 +1756,7 @@ void CMoviePlayerGui::PlayFileLoop(void)
pfile = &(*filelist_it);
int selected = std::distance( filelist.begin(), filelist_it );
filelist_it = filelist.end();
if (playlist->playlist_manager(filelist, selected))
if (playlist->playlist_manager(filelist, selected, is_audio_player))
{
playstate = CMoviePlayerGui::STOPPED;
CFile *sfile = NULL;
@@ -1809,7 +1843,7 @@ void CMoviePlayerGui::PlayFileLoop(void)
CFile *pfile = NULL;
int selected = std::distance( filelist.begin(), filelist_it );
filelist_it = filelist.end();
if (playlist->playlist_manager(filelist, selected))
if (playlist->playlist_manager(filelist, selected, is_audio_player))
{
playstate = CMoviePlayerGui::STOPPED;
CFile *sfile = NULL;

View File

@@ -186,10 +186,12 @@ class CMoviePlayerGui : public CMenuTarget
/* playback from file */
bool is_file_player;
bool is_audio_player;
bool iso_file;
bool stopped;
CFileBrowser * filebrowser;
CFileFilter tsfilefilter;
CFileFilter filefilter_video;
CFileFilter filefilter_audio;
CFileList filelist;
CFileList::iterator filelist_it;
CFileList::iterator vzap_it;

View File

@@ -412,10 +412,10 @@ bool CUserMenu::showUserMenu(neutrino_msg_t msg)
menu_item->setHint(NEUTRINO_ICON_HINT_YTPLAY, LOCALE_MENU_HINT_YTPLAY);
break;
}
case SNeutrinoSettings::ITEM_FILEPLAY:
case SNeutrinoSettings::ITEM_FILEPLAY_VIDEO:
{
keyhelper.get(&key,&icon);
menu_item = new CMenuForwarder(LOCALE_MOVIEPLAYER_FILEPLAYBACK, !_mode_ts, NULL, neutrino, "fileplayback", key, icon);
menu_item = new CMenuForwarder(LOCALE_MOVIEPLAYER_FILEPLAYBACK_VIDEO, !_mode_ts, NULL, neutrino, "fileplayback_video", key, icon);
menu_item->setHint(NEUTRINO_ICON_HINT_FILEPLAY, LOCALE_MENU_HINT_FILEPLAY);
break;
}

View File

@@ -90,7 +90,7 @@ static keyvals usermenu_items[] =
{ SNeutrinoSettings::ITEM_GAMES, LOCALE_MAINMENU_GAMES, usermenu_show },
{ SNeutrinoSettings::ITEM_SCRIPTS, LOCALE_MAINMENU_SCRIPTS, usermenu_show },
{ SNeutrinoSettings::ITEM_YOUTUBE, LOCALE_MOVIEPLAYER_YTPLAYBACK, usermenu_show },
{ SNeutrinoSettings::ITEM_FILEPLAY, LOCALE_MOVIEPLAYER_FILEPLAYBACK, usermenu_show },
{ SNeutrinoSettings::ITEM_FILEPLAY_VIDEO, LOCALE_MOVIEPLAYER_FILEPLAYBACK_VIDEO, usermenu_show },
{ SNeutrinoSettings::ITEM_TOOLS, LOCALE_MAINMENU_TOOLS, usermenu_show },
{ SNeutrinoSettings::ITEM_LUA, LOCALE_MAINMENU_LUA, usermenu_show },
{ SNeutrinoSettings::ITEM_HDDMENU, LOCALE_HDD_SETTINGS, usermenu_show },

View File

@@ -956,6 +956,7 @@ typedef enum
LOCALE_MAINMENU_HEAD,
LOCALE_MAINMENU_LUA,
LOCALE_MAINMENU_MEDIA,
LOCALE_MAINMENU_MEDIAPLAYER,
LOCALE_MAINMENU_MOVIEPLAYER,
LOCALE_MAINMENU_PAUSESECTIONSD,
LOCALE_MAINMENU_PICTUREVIEWER,
@@ -1854,7 +1855,8 @@ typedef enum
LOCALE_MOVIEPLAYER_BOOKMARKNAME_HINT1,
LOCALE_MOVIEPLAYER_BOOKMARKNAME_HINT2,
LOCALE_MOVIEPLAYER_CHAPTERS,
LOCALE_MOVIEPLAYER_FILEPLAYBACK,
LOCALE_MOVIEPLAYER_FILEPLAYBACK_AUDIO,
LOCALE_MOVIEPLAYER_FILEPLAYBACK_VIDEO,
LOCALE_MOVIEPLAYER_HEAD,
LOCALE_MOVIEPLAYER_HELP_ADDITIONAL,
LOCALE_MOVIEPLAYER_HELP_BUTTON_1,

View File

@@ -956,6 +956,7 @@ const char * locale_real_names[] =
"mainmenu.head",
"mainmenu.lua",
"mainmenu.media",
"mainmenu.mediaplayer",
"mainmenu.movieplayer",
"mainmenu.pausesectionsd",
"mainmenu.pictureviewer",
@@ -1854,7 +1855,8 @@ const char * locale_real_names[] =
"movieplayer.bookmarkname_hint1",
"movieplayer.bookmarkname_hint2",
"movieplayer.chapters",
"movieplayer.fileplayback",
"movieplayer.fileplayback_audio",
"movieplayer.fileplayback_video",
"movieplayer.head",
"movieplayer.help_additional",
"movieplayer.help_button_1",

View File

@@ -95,7 +95,8 @@ const struct personalize_settings_t personalize_settings[SNeutrinoSettings::P_SE
//media menu->movieplayer
{"personalize_mplayer_mbrowswer" , CPersonalizeGui::PERSONALIZE_MODE_VISIBLE},
{"personalize_mplayer_fileplay" , CPersonalizeGui::PERSONALIZE_MODE_VISIBLE},
{"personalize_mplayer_fileplay_video" , CPersonalizeGui::PERSONALIZE_MODE_VISIBLE},
{"personalize_mplayer_fileplay_audio" , CPersonalizeGui::PERSONALIZE_MODE_VISIBLE},
{"personalize_mplayer_ytplay" , CPersonalizeGui::PERSONALIZE_MODE_VISIBLE},
//key

View File

@@ -385,7 +385,8 @@ struct SNeutrinoSettings
//movieplayer menu
P_MPLAYER_MBROWSER,
P_MPLAYER_FILEPLAY,
P_MPLAYER_FILEPLAY_VIDEO,
P_MPLAYER_FILEPLAY_AUDIO,
P_MPLAYER_YTPLAY,
//feature keys
@@ -857,14 +858,15 @@ struct SNeutrinoSettings
ITEM_FILEPLAY = 23,
ITEM_TOOLS = 24,
ITEM_LUA = 25,
ITEM_HDDMENU = 26,
ITEM_AUDIOPLAY = 27,
ITEM_INETPLAY = 28,
ITEM_NETSETTINGS = 29,
ITEM_SWUPDATE = 30,
ITEM_LIVESTREAM_RESOLUTION = 31,
ITEM_ADZAP = 32,
ITEM_FILEPLAY_AUDIO = 33,
ITEM_FILEPLAY_VIDEO = 26,
ITEM_HDDMENU = 27,
ITEM_AUDIOPLAY = 28,
ITEM_INETPLAY = 29,
ITEM_NETSETTINGS = 30,
ITEM_SWUPDATE = 31,
ITEM_LIVESTREAM_RESOLUTION = 32,
ITEM_ADZAP = 33,
ITEM_FILEPLAY_AUDIO = 34,
ITEM_MAX // MUST be always the last in the list
} USER_ITEM;