Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/mpc-hc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXhmikosR <xhmikosr@users.sourceforge.net>2011-05-20 14:49:13 +0400
committerXhmikosR <xhmikosr@users.sourceforge.net>2011-05-20 14:49:13 +0400
commitfb29eef55b1046722bcc9213754f378d89172499 (patch)
treee829b0dcbe3432d3828e4e1555c1548965cd7afc
parent9704199a943cb7f7b4dc19f755dc60d8da55baa6 (diff)
legacy branch: merge r3109-r3123 from trunk
git-svn-id: https://mpc-hc.svn.sourceforge.net/svnroot/mpc-hc/branches/legacy@3124 10f7b99b-c216-0410-bff0-8a66a9350fd8
-rw-r--r--build.bat4
-rw-r--r--build_2010.bat4
-rw-r--r--src/Subtitles/RenderedHdmvSubtitle.cpp4
-rw-r--r--src/apps/mplayerc/Changelog.txt3
-rw-r--r--src/apps/mplayerc/MainFrm.cpp33
-rw-r--r--src/apps/mplayerc/MainFrm.h2
-rw-r--r--src/apps/mplayerc/MediaFormats.cpp2
-rw-r--r--src/apps/mplayerc/PPageAudioSwitcher.cpp6
-rw-r--r--src/apps/mplayerc/WebClientSocket.cpp82
-rw-r--r--src/apps/mplayerc/WebClientSocket.h13
-rw-r--r--src/apps/mplayerc/WebServer.cpp41
-rw-r--r--src/apps/mplayerc/mpciconlib/mpciconlib.cpp2
-rw-r--r--src/apps/mplayerc/mpcresources/mplayerc.br.rcbin349902 -> 349946 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/mplayerc.by.rcbin344404 -> 344444 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/mplayerc.ca.rcbin348200 -> 348258 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/mplayerc.cz.rcbin344926 -> 344958 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/mplayerc.de.rcbin346702 -> 346754 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/mplayerc.es.rcbin350246 -> 350304 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/mplayerc.fr.rcbin350364 -> 350406 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/mplayerc.hu.rcbin350716 -> 350774 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/mplayerc.hy.rcbin344460 -> 344508 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/mplayerc.it.rcbin346738 -> 346770 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/mplayerc.ja.rcbin319820 -> 319880 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/mplayerc.kr.rcbin317030 -> 317098 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/mplayerc.nl.rcbin344890 -> 344944 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/mplayerc.pl.rcbin354478 -> 354536 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/mplayerc.ru.rcbin346634 -> 346676 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/mplayerc.sc.rcbin310376 -> 310442 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/mplayerc.sk.rcbin347224 -> 347282 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/mplayerc.sv.rcbin342486 -> 342544 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/mplayerc.tc.rcbin312372 -> 312442 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/mplayerc.tr.rcbin343182 -> 343218 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/mplayerc.ua.rcbin344896 -> 344934 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/text/mplayerc.br.rc.txtbin142234 -> 142276 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/text/mplayerc.by.rc.txtbin137090 -> 137128 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/text/mplayerc.ca.rc.txtbin140414 -> 140470 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/text/mplayerc.cz.rc.txtbin137360 -> 137390 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/text/mplayerc.de.rc.txtbin138978 -> 139028 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/text/mplayerc.es.rc.txtbin142810 -> 142866 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/text/mplayerc.fr.rc.txtbin143806 -> 143846 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/text/mplayerc.hu.rc.txtbin143676 -> 143732 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/text/mplayerc.hy.rc.txtbin135080 -> 135126 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/text/mplayerc.it.rc.txtbin138390 -> 138420 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/text/mplayerc.ja.rc.txtbin107146 -> 107194 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/text/mplayerc.kr.rc.txtbin104342 -> 104408 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/text/mplayerc.nl.rc.txtbin136850 -> 136902 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/text/mplayerc.pl.rc.txtbin147798 -> 147854 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/text/mplayerc.rc.txtbin130162 -> 130218 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/text/mplayerc.ru.rc.txtbin139438 -> 139478 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/text/mplayerc.sc.rc.txtbin96444 -> 96510 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/text/mplayerc.sk.rc.txtbin140784 -> 140840 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/text/mplayerc.sv.rc.txtbin133682 -> 133738 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/text/mplayerc.tc.rc.txtbin97794 -> 97862 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/text/mplayerc.tr.rc.txtbin134950 -> 134984 bytes
-rw-r--r--src/apps/mplayerc/mpcresources/text/mplayerc.ua.rc.txtbin137556 -> 137592 bytes
-rw-r--r--src/apps/mplayerc/mplayerc.rcbin337858 -> 337916 bytes
-rw-r--r--src/apps/mplayerc/mplayerc.vcproj16
-rw-r--r--src/apps/mplayerc/mplayerc.vcxproj1
-rw-r--r--src/apps/mplayerc/mplayerc.vcxproj.filters3
-rw-r--r--src/apps/mplayerc/res/mplayerc.rc213
-rw-r--r--src/apps/mplayerc/res/web/variables.html24
-rw-r--r--src/apps/mplayerc/resource.hbin120720 -> 120904 bytes
-rw-r--r--src/filters/parser/MpegSplitter/MpegSplitter.cpp158
-rw-r--r--src/filters/parser/MpegSplitter/MpegSplitterFile.cpp40
-rw-r--r--src/filters/transform/MPCVideoDec/FfmpegContext.c19
-rw-r--r--src/filters/transform/MPCVideoDec/FfmpegContext.h1
-rw-r--r--src/filters/transform/MPCVideoDec/MPCVideoDecFilter.cpp2
-rw-r--r--src/filters/transform/Mpeg2DecFilter/Mpeg2DecFilter.rc1
68 files changed, 318 insertions, 156 deletions
diff --git a/build.bat b/build.bat
index 7bf5a41f5..409b5e73a 100644
--- a/build.bat
+++ b/build.bat
@@ -164,10 +164,12 @@ EXIT /B
:MissingVar
COLOR 0C
TITLE Compiling MPC-HC [ERROR]
-ECHO Not all build dependencies found. To build MPC-HC you need:
+ECHO Not all build dependencies were found. To build MPC-HC you need:
ECHO * Visual Studio 2008 (SP1) installed
ECHO * MinGW 32bit with MSYS pointed to in MINGW32 environment variable
ECHO * MinGW 64bit with MSYS pointed to in MINGW64 environment variable
+ECHO.
+ECHO See "Compilation.txt" for more information.
ECHO. & ECHO.
ECHO Press any key to exit...
PAUSE >NUL
diff --git a/build_2010.bat b/build_2010.bat
index dd7a35335..a89359a22 100644
--- a/build_2010.bat
+++ b/build_2010.bat
@@ -164,10 +164,12 @@ EXIT /B
:MissingVar
COLOR 0C
TITLE Compiling MPC-HC [ERROR]
-ECHO Not all build dependencies found. To build MPC-HC you need:
+ECHO Not all build dependencies were found. To build MPC-HC you need:
ECHO * Visual Studio 2010 SP1 installed
ECHO * MinGW 32bit with MSYS pointed to in MINGW32 environment variable
ECHO * MinGW 64bit with MSYS pointed to in MINGW64 environment variable
+ECHO.
+ECHO See "Compilation.txt" for more information.
ECHO. & ECHO.
ECHO Press any key to exit...
PAUSE >NUL
diff --git a/src/Subtitles/RenderedHdmvSubtitle.cpp b/src/Subtitles/RenderedHdmvSubtitle.cpp
index 3c066ff2b..6dc70e1b7 100644
--- a/src/Subtitles/RenderedHdmvSubtitle.cpp
+++ b/src/Subtitles/RenderedHdmvSubtitle.cpp
@@ -32,11 +32,11 @@ CRenderedHdmvSubtitle::CRenderedHdmvSubtitle(CCritSec* pLock, SUBTITLE_TYPE nTyp
switch (nType) {
case ST_DVB :
m_pSub = DNew CDVBSub();
- if (name.IsEmpty()) m_name = "DVB Embedded Subtitle";
+ if (name.IsEmpty() || (name == _T("Unknown"))) m_name = "DVB Embedded Subtitle";
break;
case ST_HDMV :
m_pSub = DNew CHdmvSub();
- if (name.IsEmpty()) m_name = "HDMV Embedded Subtitle";
+ if (name.IsEmpty() || (name == _T("Unknown"))) m_name = "HDMV Embedded Subtitle";
break;
default :
ASSERT (FALSE);
diff --git a/src/apps/mplayerc/Changelog.txt b/src/apps/mplayerc/Changelog.txt
index 7e0c0a996..7ef9175b5 100644
--- a/src/apps/mplayerc/Changelog.txt
+++ b/src/apps/mplayerc/Changelog.txt
@@ -2,6 +2,7 @@ next version - not yet released
==============================
NEW : Added optional fp32 (full float point) processing, fp16 is now half float point
NEW : Support for BluRay chapters
+ NEW : Ticket #1224, Added OSD messages when changing the audio boost and the audio balance
CHANGED: The filters' settings are now saved in
[HKCU\Software\Gabest\Media Player Classic\Filters]
CHANGED: Updated libpng to v1.5.2
@@ -12,6 +13,7 @@ next version - not yet released
FIXED : Ticket #285, Ambarella AVC not correctly splitted by MPC-HC's internal
MP4/MOV source filter
FIXED : Ticket #384, disable Relative drive
+ FIXED : Ticket #613, Bugs of MPC-HC Dialog Fonts
FIXED : Ticket #640, Source tree refactoring
FIXED : Ticket #740, Make EVR Sync stats better looking
FIXED : Ticket #760, Fixed playback of old movs with 'raw', 'twos' and 'ima4' audio
@@ -25,6 +27,7 @@ next version - not yet released
FIXED : Ticket #1029, MPEG-2 Profile detected incorrectly with MPEG splitter
FIXED : Ticket #1032, MPC-HC64 does not work with Flash 64-bit
FIXED : Ticket #1128, Thumbnails wider than 2048p
+ FIXED : Ticket #1157, The mute button had no effect if triggered during startup
FIXED : Ticket #1220, MPC fails to play specific MKV files
FIXED : Ticket #1321, IMpegSplitterFilter uses CString - should be WCHAR or BSTR instead
diff --git a/src/apps/mplayerc/MainFrm.cpp b/src/apps/mplayerc/MainFrm.cpp
index 302840d64..3a48cee83 100644
--- a/src/apps/mplayerc/MainFrm.cpp
+++ b/src/apps/mplayerc/MainFrm.cpp
@@ -7002,6 +7002,8 @@ void CMainFrame::OnPlayPlay()
if(m_fFrameSteppingActive) { // FIXME
m_fFrameSteppingActive = false;
pBA->put_Volume(m_VolumeBeforeFrameStepping);
+ } else {
+ pBA->put_Volume(m_wndToolBar.Volume);
}
SetAlwaysOnTop(AfxGetAppSettings().iOnTop);
@@ -8035,13 +8037,23 @@ void CMainFrame::OnPlayVolumeBoost(UINT nID)
break;
}
- s.dAudioBoost_dB = (float)i/10;
+ SetVolumeBoost(i/10.f);
+}
+
+void CMainFrame::SetVolumeBoost(float fAudioBoost_dB)
+{
+ AppSettings& s = AfxGetAppSettings();
+ CString strBoost;
+
+ s.dAudioBoost_dB = fAudioBoost_dB;
+ strBoost.Format(ResStr(IDS_BOOST_OSD), s.dAudioBoost_dB);
if(CComQIPtr<IAudioSwitcherFilter> pASF = FindFilter(__uuidof(CAudioSwitcherFilter), pGB)) {
bool fNormalize, fNormalizeRecover;
float boost;
pASF->GetNormalizeBoost(fNormalize, fNormalizeRecover, boost);
pASF->SetNormalizeBoost(fNormalize, fNormalizeRecover, s.dAudioBoost_dB);
+ m_OSD.DisplayMessage(OSD_TOPLEFT, strBoost);
}
}
@@ -9953,13 +9965,26 @@ void CMainFrame::SetBalance(int balance)
AfxGetAppSettings().nBalance = balance;
int sign = balance>0?-1:1; // -1: invert sign for more right channel
+ int balance_dB;
if (balance > -100 && balance < 100)
- balance = sign*(int)(100*20*log10(1-abs(balance)/100.0f));
+ balance_dB = sign*(int)(100*20*log10(1-abs(balance)/100.0f));
else
- balance = sign*(-10000);// -10000: only left, 10000: only right
+ balance_dB = sign*(-10000);// -10000: only left, 10000: only right
if(m_iMediaLoadState == MLS_LOADED) {
- pBA->put_Balance(balance);
+ CString strBalance, strBalanceOSD;
+
+ pBA->put_Balance(balance_dB);
+
+ if (balance == 0)
+ strBalance = L"L = R";
+ else if (balance < 0)
+ strBalance.Format(L"L +%d%%", -balance);
+ else //if (m_nBalance > 0)
+ strBalance.Format(L"R +%d%%", balance);
+
+ strBalanceOSD.Format(ResStr(IDS_BALANCE_OSD), strBalance);
+ m_OSD.DisplayMessage(OSD_TOPLEFT, strBalanceOSD);
}
}
diff --git a/src/apps/mplayerc/MainFrm.h b/src/apps/mplayerc/MainFrm.h
index 3ae33010b..2f9756765 100644
--- a/src/apps/mplayerc/MainFrm.h
+++ b/src/apps/mplayerc/MainFrm.h
@@ -213,6 +213,7 @@ class CMainFrame : public CFrameWnd, public CDropTarget
CComPtr<ISubPicAllocatorPresenter> m_pCAP;
CComPtr<ISubPicAllocatorPresenter2> m_pCAP2;
+ void SetVolumeBoost(float fAudioBoost_dB);
void SetBalance(int balance);
// subtitles
@@ -542,6 +543,7 @@ protected: // control bar embedded members
LPCTSTR GetRecentFile();
friend class CPPagePlayback; // TODO
+ friend class CPPageAudioSwitcher; // TODO
friend class CMPlayerCApp; // TODO
void LoadControlBar(CControlBar* pBar, UINT defDockBarID);
diff --git a/src/apps/mplayerc/MediaFormats.cpp b/src/apps/mplayerc/MediaFormats.cpp
index 87faeec45..d601afc20 100644
--- a/src/apps/mplayerc/MediaFormats.cpp
+++ b/src/apps/mplayerc/MediaFormats.cpp
@@ -203,7 +203,7 @@ void CMediaFormats::UpdateData(bool fSave)
ADDFMT((_T("WebM video file"), _T("webm")));
ADDFMT((ResStr(IDS_MEDIAFORMATS_0), _T("wmv wmp wm asf")));
ADDFMT((ResStr(IDS_MEDIAFORMATS_4), _T("mpg mpeg mpe m1v m2v mpv2 mp2v pva evo m2p")));
- ADDFMT((ResStr(IDS_MEDIAFORMATS_37), _T("ts tp trp m2t m2ts mts")));
+ ADDFMT((ResStr(IDS_MEDIAFORMATS_37), _T("ts tp trp m2t m2ts mts rec")));
ADDFMT((_T("VCD file"), _T("dat")));
ADDFMT((ResStr(IDS_AG_DVD_FILE), _T("vob ifo")));
ADDFMT((ResStr(IDS_MEDIAFORMATS_10), _T("ogm ogv")));
diff --git a/src/apps/mplayerc/PPageAudioSwitcher.cpp b/src/apps/mplayerc/PPageAudioSwitcher.cpp
index c664b916a..b51470915 100644
--- a/src/apps/mplayerc/PPageAudioSwitcher.cpp
+++ b/src/apps/mplayerc/PPageAudioSwitcher.cpp
@@ -24,6 +24,7 @@
#include "stdafx.h"
#include <math.h>
#include "mplayerc.h"
+#include "MainFrm.h"
#include "PPageAudioSwitcher.h"
@@ -326,6 +327,11 @@ void CPPageAudioSwitcher::OnUpdateChannelMapping(CCmdUI* pCmdUI)
void CPPageAudioSwitcher::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
+ if(*pScrollBar == m_AudioBoostCtrl) {
+ UpdateData();
+ ((CMainFrame*)GetParentFrame())->SetVolumeBoost(m_AudioBoostPos/10.0); // nice shortcut...
+ }
+
SetModified();
__super::OnHScroll(nSBCode, nPos, pScrollBar);
diff --git a/src/apps/mplayerc/WebClientSocket.cpp b/src/apps/mplayerc/WebClientSocket.cpp
index 5e8bbc283..f1a600e4c 100644
--- a/src/apps/mplayerc/WebClientSocket.cpp
+++ b/src/apps/mplayerc/WebClientSocket.cpp
@@ -636,12 +636,82 @@ bool CWebClientSocket::OnControls(CStringA& hdr, CStringA& body, CStringA& mime)
body.Replace("[playbackrate]", UTF8(playbackrate));
body.Replace("[reloadtime]", UTF8(reloadtime));
- return true;
-}
-
-bool CWebClientSocket::OnStatus(CStringA& hdr, CStringA& body, CStringA& mime)
-{
- /*
+ return true;
+}
+
+bool CWebClientSocket::OnVariables(CStringA& hdr, CStringA& body, CStringA& mime)
+{
+ CString path = m_pMainFrame->m_wndPlaylistBar.GetCurFileName();
+ CString dir;
+
+ if(!path.IsEmpty()) {
+ CPath p(path);
+ p.RemoveFileSpec();
+ dir = (LPCTSTR)p;
+ }
+
+ OAFilterState fs = m_pMainFrame->GetMediaState();
+ CString state;
+ state.Format(_T("%d"), fs);
+ CString statestring;
+ switch(fs) {
+ case State_Stopped:
+ statestring = ResStr(IDS_CONTROLS_STOPPED);
+ break;
+ case State_Paused:
+ statestring = ResStr(IDS_CONTROLS_PAUSED);
+ break;
+ case State_Running:
+ statestring = ResStr(IDS_CONTROLS_PLAYING);
+ break;
+ default:
+ statestring = _T("n/a");
+ break;
+ }
+
+ int pos = (int)(m_pMainFrame->GetPos()/10000);
+ int dur = (int)(m_pMainFrame->GetDur()/10000);
+
+ CString position, duration;
+ position.Format(_T("%d"), pos);
+ duration.Format(_T("%d"), dur);
+
+ CString positionstring, durationstring, playbackrate;
+ // positionstring.Format(_T("%02d:%02d:%02d.%03d"), (pos/3600000), (pos/60000)%60, (pos/1000)%60, pos%1000);
+ // durationstring.Format(_T("%02d:%02d:%02d.%03d"), (dur/3600000), (dur/60000)%60, (dur/1000)%60, dur%1000);
+ positionstring.Format(_T("%02d:%02d:%02d"), (pos/3600000), (pos/60000)%60, (pos/1000)%60);
+ durationstring.Format(_T("%02d:%02d:%02d"), (dur/3600000), (dur/60000)%60, (dur/1000)%60);
+ playbackrate = _T("1"); // TODO
+
+ CString volumelevel, muted;
+ volumelevel.Format(_T("%d"), m_pMainFrame->m_wndToolBar.m_volctrl.GetPos());
+ muted.Format(_T("%d"), m_pMainFrame->m_wndToolBar.Volume == -10000 ? 1 : 0);
+
+ CString reloadtime(_T("0")); // TODO
+
+ m_pWebServer->LoadPage(IDR_HTML_VARIABLES, body, m_path);
+ body.Replace("[charset]", "UTF-8"); // FIXME: win9x build...
+ body.Replace("[filepatharg]", UTF8Arg(path));
+ body.Replace("[filepath]", UTF8(path));
+ body.Replace("[filedirarg]", UTF8Arg(dir));
+ body.Replace("[filedir]", UTF8(dir));
+ body.Replace("[state]", UTF8(state));
+ body.Replace("[statestring]", UTF8(statestring));
+ body.Replace("[position]", UTF8(position));
+ body.Replace("[positionstring]", UTF8(positionstring));
+ body.Replace("[duration]", UTF8(duration));
+ body.Replace("[durationstring]", UTF8(durationstring));
+ body.Replace("[volumelevel]", UTF8(volumelevel));
+ body.Replace("[muted]", UTF8(muted));
+ body.Replace("[playbackrate]", UTF8(playbackrate));
+ body.Replace("[reloadtime]", UTF8(reloadtime));
+
+ return true;
+}
+
+bool CWebClientSocket::OnStatus(CStringA& hdr, CStringA& body, CStringA& mime)
+{
+ /*
CString path = m_pMainFrame->m_wndPlaylistBar.GetCur(), dir;
if(!path.IsEmpty()) {CPath p(path); p.RemoveFileSpec(); dir = (LPCTSTR)p;}
path.Replace(_T("'"), _T("\\'"));
diff --git a/src/apps/mplayerc/WebClientSocket.h b/src/apps/mplayerc/WebClientSocket.h
index 041aa2492..089be21bd 100644
--- a/src/apps/mplayerc/WebClientSocket.h
+++ b/src/apps/mplayerc/WebClientSocket.h
@@ -58,12 +58,13 @@ public:
CAtlStringMap<> m_request;
bool OnCommand(CStringA& hdr, CStringA& body, CStringA& mime);
- bool OnIndex(CStringA& hdr, CStringA& body, CStringA& mime);
- bool OnBrowser(CStringA& hdr, CStringA& body, CStringA& mime);
- bool OnControls(CStringA& hdr, CStringA& body, CStringA& mime);
- bool OnStatus(CStringA& hdr, CStringA& body, CStringA& mime);
- bool OnError404(CStringA& hdr, CStringA& body, CStringA& mime);
- bool OnPlayer(CStringA& hdr, CStringA& body, CStringA& mime);
+ bool OnIndex(CStringA& hdr, CStringA& body, CStringA& mime);
+ bool OnBrowser(CStringA& hdr, CStringA& body, CStringA& mime);
+ bool OnControls(CStringA& hdr, CStringA& body, CStringA& mime);
+ bool OnVariables(CStringA& hdr, CStringA& body, CStringA& mime);
+ bool OnStatus(CStringA& hdr, CStringA& body, CStringA& mime);
+ bool OnError404(CStringA& hdr, CStringA& body, CStringA& mime);
+ bool OnPlayer(CStringA& hdr, CStringA& body, CStringA& mime);
bool OnSnapShotJpeg(CStringA& hdr, CStringA& body, CStringA& mime);
bool OnConvRes(CStringA& hdr, CStringA& body, CStringA& mime);
};
diff --git a/src/apps/mplayerc/WebServer.cpp b/src/apps/mplayerc/WebServer.cpp
index 874b0c31f..ed5148c43 100644
--- a/src/apps/mplayerc/WebServer.cpp
+++ b/src/apps/mplayerc/WebServer.cpp
@@ -44,12 +44,13 @@ CWebServer::CWebServer(CMainFrame* pMainFrame, int nPort)
m_internalpages[_T("/index.html")] = &CWebClientSocket::OnIndex;
m_internalpages[_T("/browser.html")] = &CWebClientSocket::OnBrowser;
m_internalpages[_T("/controls.html")] = &CWebClientSocket::OnControls;
- m_internalpages[_T("/command.html")] = &CWebClientSocket::OnCommand;
- m_internalpages[_T("/status.html")] = &CWebClientSocket::OnStatus;
- m_internalpages[_T("/player.html")] = &CWebClientSocket::OnPlayer;
- m_internalpages[_T("/snapshot.jpg")] = &CWebClientSocket::OnSnapShotJpeg;
- m_internalpages[_T("/404.html")] = &CWebClientSocket::OnError404;
- m_internalpages[_T("/convres.html")] = &CWebClientSocket::OnConvRes;
+ m_internalpages[_T("/command.html")] = &CWebClientSocket::OnCommand;
+ m_internalpages[_T("/status.html")] = &CWebClientSocket::OnStatus;
+ m_internalpages[_T("/player.html")] = &CWebClientSocket::OnPlayer;
+ m_internalpages[_T("/variables.html")] = &CWebClientSocket::OnVariables;
+ m_internalpages[_T("/snapshot.jpg")] = &CWebClientSocket::OnSnapShotJpeg;
+ m_internalpages[_T("/404.html")] = &CWebClientSocket::OnError404;
+ m_internalpages[_T("/convres.html")] = &CWebClientSocket::OnConvRes;
}
if(m_downloads.IsEmpty()) {
@@ -108,12 +109,13 @@ CWebServer::CWebServer(CMainFrame* pMainFrame, int nPort)
m_mimes[".txt"] = "text/plain";
m_mimes[".css"] = "text/css";
m_mimes[".gif"] = "image/gif";
- m_mimes[".jpeg"] = "image/jpeg";
- m_mimes[".jpg"] = "image/jpeg";
- m_mimes[".png"] = "image/png";
-
- GetModuleFileName(AfxGetInstanceHandle(), str.GetBuffer(_MAX_PATH), _MAX_PATH);
- str.ReleaseBuffer();
+ m_mimes[".jpeg"] = "image/jpeg";
+ m_mimes[".jpg"] = "image/jpeg";
+ m_mimes[".png"] = "image/png";
+ m_mimes[".js"] = "text/javascript";
+
+ GetModuleFileName(AfxGetInstanceHandle(), str.GetBuffer(_MAX_PATH), _MAX_PATH);
+ str.ReleaseBuffer();
m_webroot = CPath(str);
m_webroot.RemoveFileSpec();
@@ -198,12 +200,15 @@ void CWebServer::Deploy(CString dir)
if(LoadResource(IDR_HTML_BROWSER, data, RT_HTML)) {
PutFileContents(dir + _T("browser.html"), data);
}
- if(LoadResource(IDR_HTML_CONTROLS, data, RT_HTML)) {
- PutFileContents(dir + _T("controls.html"), data);
- }
- if(LoadResource(IDR_HTML_404, data, RT_HTML)) {
- PutFileContents(dir + _T("404.html"), data);
- }
+ if(LoadResource(IDR_HTML_CONTROLS, data, RT_HTML)) {
+ PutFileContents(dir + _T("controls.html"), data);
+ }
+ if(LoadResource(IDR_HTML_VARIABLES, data, RT_HTML)) {
+ PutFileContents(dir + _T("variables.html"), data);
+ }
+ if(LoadResource(IDR_HTML_404, data, RT_HTML)) {
+ PutFileContents(dir + _T("404.html"), data);
+ }
if(LoadResource(IDR_HTML_PLAYER, data, RT_HTML)) {
PutFileContents(dir + _T("player.html"), data);
}
diff --git a/src/apps/mplayerc/mpciconlib/mpciconlib.cpp b/src/apps/mplayerc/mpciconlib/mpciconlib.cpp
index 63afd8885..9c32b38b8 100644
--- a/src/apps/mplayerc/mpciconlib/mpciconlib.cpp
+++ b/src/apps/mplayerc/mpciconlib/mpciconlib.cpp
@@ -208,6 +208,8 @@ int get_icon_index(CString ext)
iconindex = IDI_TS_ICON;
}else if(ext.CompareNoCase(_T(".ts")) == 0) {
iconindex = IDI_TS_ICON;
+ }else if(ext.CompareNoCase(_T(".rec")) == 0) {
+ iconindex = IDI_TS_ICON;
}else if(ext.CompareNoCase(_T(".tta")) == 0) {
iconindex = IDI_TTA_ICON;
}else if(ext.CompareNoCase(_T(".vob")) == 0) {
diff --git a/src/apps/mplayerc/mpcresources/mplayerc.br.rc b/src/apps/mplayerc/mpcresources/mplayerc.br.rc
index 7a4b3ab05..4f7751376 100644
--- a/src/apps/mplayerc/mpcresources/mplayerc.br.rc
+++ b/src/apps/mplayerc/mpcresources/mplayerc.br.rc
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/mplayerc.by.rc b/src/apps/mplayerc/mpcresources/mplayerc.by.rc
index a9b25e4ce..d98a45eaa 100644
--- a/src/apps/mplayerc/mpcresources/mplayerc.by.rc
+++ b/src/apps/mplayerc/mpcresources/mplayerc.by.rc
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/mplayerc.ca.rc b/src/apps/mplayerc/mpcresources/mplayerc.ca.rc
index ef4c8074f..4418cf519 100644
--- a/src/apps/mplayerc/mpcresources/mplayerc.ca.rc
+++ b/src/apps/mplayerc/mpcresources/mplayerc.ca.rc
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/mplayerc.cz.rc b/src/apps/mplayerc/mpcresources/mplayerc.cz.rc
index d61b0295d..7d094e8c9 100644
--- a/src/apps/mplayerc/mpcresources/mplayerc.cz.rc
+++ b/src/apps/mplayerc/mpcresources/mplayerc.cz.rc
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/mplayerc.de.rc b/src/apps/mplayerc/mpcresources/mplayerc.de.rc
index e05f145c1..41d97224c 100644
--- a/src/apps/mplayerc/mpcresources/mplayerc.de.rc
+++ b/src/apps/mplayerc/mpcresources/mplayerc.de.rc
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/mplayerc.es.rc b/src/apps/mplayerc/mpcresources/mplayerc.es.rc
index 341d36af2..26de5e2a0 100644
--- a/src/apps/mplayerc/mpcresources/mplayerc.es.rc
+++ b/src/apps/mplayerc/mpcresources/mplayerc.es.rc
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/mplayerc.fr.rc b/src/apps/mplayerc/mpcresources/mplayerc.fr.rc
index f43e0e09c..fd4c0a3e6 100644
--- a/src/apps/mplayerc/mpcresources/mplayerc.fr.rc
+++ b/src/apps/mplayerc/mpcresources/mplayerc.fr.rc
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/mplayerc.hu.rc b/src/apps/mplayerc/mpcresources/mplayerc.hu.rc
index 526038f78..134f0df81 100644
--- a/src/apps/mplayerc/mpcresources/mplayerc.hu.rc
+++ b/src/apps/mplayerc/mpcresources/mplayerc.hu.rc
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/mplayerc.hy.rc b/src/apps/mplayerc/mpcresources/mplayerc.hy.rc
index 8e7a0f19d..bf3d06be0 100644
--- a/src/apps/mplayerc/mpcresources/mplayerc.hy.rc
+++ b/src/apps/mplayerc/mpcresources/mplayerc.hy.rc
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/mplayerc.it.rc b/src/apps/mplayerc/mpcresources/mplayerc.it.rc
index 65f748a62..6943b1dfa 100644
--- a/src/apps/mplayerc/mpcresources/mplayerc.it.rc
+++ b/src/apps/mplayerc/mpcresources/mplayerc.it.rc
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/mplayerc.ja.rc b/src/apps/mplayerc/mpcresources/mplayerc.ja.rc
index a4ed401ec..23767c15e 100644
--- a/src/apps/mplayerc/mpcresources/mplayerc.ja.rc
+++ b/src/apps/mplayerc/mpcresources/mplayerc.ja.rc
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/mplayerc.kr.rc b/src/apps/mplayerc/mpcresources/mplayerc.kr.rc
index a39578fcc..2c5b9beda 100644
--- a/src/apps/mplayerc/mpcresources/mplayerc.kr.rc
+++ b/src/apps/mplayerc/mpcresources/mplayerc.kr.rc
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/mplayerc.nl.rc b/src/apps/mplayerc/mpcresources/mplayerc.nl.rc
index 9e12b7baa..b80eb3cab 100644
--- a/src/apps/mplayerc/mpcresources/mplayerc.nl.rc
+++ b/src/apps/mplayerc/mpcresources/mplayerc.nl.rc
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/mplayerc.pl.rc b/src/apps/mplayerc/mpcresources/mplayerc.pl.rc
index 6a98af0d4..d57243027 100644
--- a/src/apps/mplayerc/mpcresources/mplayerc.pl.rc
+++ b/src/apps/mplayerc/mpcresources/mplayerc.pl.rc
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/mplayerc.ru.rc b/src/apps/mplayerc/mpcresources/mplayerc.ru.rc
index a65233a9f..749cf0729 100644
--- a/src/apps/mplayerc/mpcresources/mplayerc.ru.rc
+++ b/src/apps/mplayerc/mpcresources/mplayerc.ru.rc
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/mplayerc.sc.rc b/src/apps/mplayerc/mpcresources/mplayerc.sc.rc
index d5f6e4493..49333ba7f 100644
--- a/src/apps/mplayerc/mpcresources/mplayerc.sc.rc
+++ b/src/apps/mplayerc/mpcresources/mplayerc.sc.rc
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/mplayerc.sk.rc b/src/apps/mplayerc/mpcresources/mplayerc.sk.rc
index 7d9c8feaf..f3f078724 100644
--- a/src/apps/mplayerc/mpcresources/mplayerc.sk.rc
+++ b/src/apps/mplayerc/mpcresources/mplayerc.sk.rc
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/mplayerc.sv.rc b/src/apps/mplayerc/mpcresources/mplayerc.sv.rc
index aa658b1eb..967c5122f 100644
--- a/src/apps/mplayerc/mpcresources/mplayerc.sv.rc
+++ b/src/apps/mplayerc/mpcresources/mplayerc.sv.rc
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/mplayerc.tc.rc b/src/apps/mplayerc/mpcresources/mplayerc.tc.rc
index 921d738dc..62ff28145 100644
--- a/src/apps/mplayerc/mpcresources/mplayerc.tc.rc
+++ b/src/apps/mplayerc/mpcresources/mplayerc.tc.rc
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/mplayerc.tr.rc b/src/apps/mplayerc/mpcresources/mplayerc.tr.rc
index 0aba858b6..44719216d 100644
--- a/src/apps/mplayerc/mpcresources/mplayerc.tr.rc
+++ b/src/apps/mplayerc/mpcresources/mplayerc.tr.rc
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/mplayerc.ua.rc b/src/apps/mplayerc/mpcresources/mplayerc.ua.rc
index 9061204d7..667888ef4 100644
--- a/src/apps/mplayerc/mpcresources/mplayerc.ua.rc
+++ b/src/apps/mplayerc/mpcresources/mplayerc.ua.rc
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.br.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.br.rc.txt
index cb153e0a8..d97d615c9 100644
--- a/src/apps/mplayerc/mpcresources/text/mplayerc.br.rc.txt
+++ b/src/apps/mplayerc/mpcresources/text/mplayerc.br.rc.txt
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.by.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.by.rc.txt
index 3dcf99837..31cc82450 100644
--- a/src/apps/mplayerc/mpcresources/text/mplayerc.by.rc.txt
+++ b/src/apps/mplayerc/mpcresources/text/mplayerc.by.rc.txt
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.ca.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.ca.rc.txt
index c0da4049f..fca02d33d 100644
--- a/src/apps/mplayerc/mpcresources/text/mplayerc.ca.rc.txt
+++ b/src/apps/mplayerc/mpcresources/text/mplayerc.ca.rc.txt
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.cz.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.cz.rc.txt
index 9e55a9a92..038dd706a 100644
--- a/src/apps/mplayerc/mpcresources/text/mplayerc.cz.rc.txt
+++ b/src/apps/mplayerc/mpcresources/text/mplayerc.cz.rc.txt
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.de.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.de.rc.txt
index 35914ef23..5415542b5 100644
--- a/src/apps/mplayerc/mpcresources/text/mplayerc.de.rc.txt
+++ b/src/apps/mplayerc/mpcresources/text/mplayerc.de.rc.txt
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.es.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.es.rc.txt
index 50b2d03fe..8cacc9280 100644
--- a/src/apps/mplayerc/mpcresources/text/mplayerc.es.rc.txt
+++ b/src/apps/mplayerc/mpcresources/text/mplayerc.es.rc.txt
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.fr.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.fr.rc.txt
index b189365f9..b30c1a68f 100644
--- a/src/apps/mplayerc/mpcresources/text/mplayerc.fr.rc.txt
+++ b/src/apps/mplayerc/mpcresources/text/mplayerc.fr.rc.txt
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.hu.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.hu.rc.txt
index 3f2dbf707..ee7281c21 100644
--- a/src/apps/mplayerc/mpcresources/text/mplayerc.hu.rc.txt
+++ b/src/apps/mplayerc/mpcresources/text/mplayerc.hu.rc.txt
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.hy.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.hy.rc.txt
index 04a31bba4..8897529e6 100644
--- a/src/apps/mplayerc/mpcresources/text/mplayerc.hy.rc.txt
+++ b/src/apps/mplayerc/mpcresources/text/mplayerc.hy.rc.txt
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.it.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.it.rc.txt
index 61bdeb3c2..71b0d12c5 100644
--- a/src/apps/mplayerc/mpcresources/text/mplayerc.it.rc.txt
+++ b/src/apps/mplayerc/mpcresources/text/mplayerc.it.rc.txt
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.ja.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.ja.rc.txt
index a1f5132e0..f718b042c 100644
--- a/src/apps/mplayerc/mpcresources/text/mplayerc.ja.rc.txt
+++ b/src/apps/mplayerc/mpcresources/text/mplayerc.ja.rc.txt
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.kr.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.kr.rc.txt
index a2f099d9a..214b2baa3 100644
--- a/src/apps/mplayerc/mpcresources/text/mplayerc.kr.rc.txt
+++ b/src/apps/mplayerc/mpcresources/text/mplayerc.kr.rc.txt
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.nl.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.nl.rc.txt
index 0bed51e81..18684d593 100644
--- a/src/apps/mplayerc/mpcresources/text/mplayerc.nl.rc.txt
+++ b/src/apps/mplayerc/mpcresources/text/mplayerc.nl.rc.txt
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.pl.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.pl.rc.txt
index f93f81f16..70b9bf810 100644
--- a/src/apps/mplayerc/mpcresources/text/mplayerc.pl.rc.txt
+++ b/src/apps/mplayerc/mpcresources/text/mplayerc.pl.rc.txt
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.rc.txt
index 2ea2829be..cdc614046 100644
--- a/src/apps/mplayerc/mpcresources/text/mplayerc.rc.txt
+++ b/src/apps/mplayerc/mpcresources/text/mplayerc.rc.txt
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.ru.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.ru.rc.txt
index 53d216435..2a9d7bfbe 100644
--- a/src/apps/mplayerc/mpcresources/text/mplayerc.ru.rc.txt
+++ b/src/apps/mplayerc/mpcresources/text/mplayerc.ru.rc.txt
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.sc.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.sc.rc.txt
index 1b597dad8..a9025f494 100644
--- a/src/apps/mplayerc/mpcresources/text/mplayerc.sc.rc.txt
+++ b/src/apps/mplayerc/mpcresources/text/mplayerc.sc.rc.txt
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.sk.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.sk.rc.txt
index a52285630..5b87d05e3 100644
--- a/src/apps/mplayerc/mpcresources/text/mplayerc.sk.rc.txt
+++ b/src/apps/mplayerc/mpcresources/text/mplayerc.sk.rc.txt
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.sv.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.sv.rc.txt
index dc925682b..736cda6f1 100644
--- a/src/apps/mplayerc/mpcresources/text/mplayerc.sv.rc.txt
+++ b/src/apps/mplayerc/mpcresources/text/mplayerc.sv.rc.txt
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.tc.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.tc.rc.txt
index c63bd7bf2..179143af1 100644
--- a/src/apps/mplayerc/mpcresources/text/mplayerc.tc.rc.txt
+++ b/src/apps/mplayerc/mpcresources/text/mplayerc.tc.rc.txt
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.tr.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.tr.rc.txt
index e2e309c9b..6b89c5eee 100644
--- a/src/apps/mplayerc/mpcresources/text/mplayerc.tr.rc.txt
+++ b/src/apps/mplayerc/mpcresources/text/mplayerc.tr.rc.txt
Binary files differ
diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.ua.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.ua.rc.txt
index 9e5c1e0d0..0c45f9c80 100644
--- a/src/apps/mplayerc/mpcresources/text/mplayerc.ua.rc.txt
+++ b/src/apps/mplayerc/mpcresources/text/mplayerc.ua.rc.txt
Binary files differ
diff --git a/src/apps/mplayerc/mplayerc.rc b/src/apps/mplayerc/mplayerc.rc
index fdc6ab051..592df3083 100644
--- a/src/apps/mplayerc/mplayerc.rc
+++ b/src/apps/mplayerc/mplayerc.rc
Binary files differ
diff --git a/src/apps/mplayerc/mplayerc.vcproj b/src/apps/mplayerc/mplayerc.vcproj
index b6a3eb81e..4a513255a 100644
--- a/src/apps/mplayerc/mplayerc.vcproj
+++ b/src/apps/mplayerc/mplayerc.vcproj
@@ -1709,12 +1709,12 @@
</File>
<File
RelativePath=".\res\web\controls.html"
- >
- </File>
- <File
- RelativePath=".\res\web\controlvolumebar.png"
- >
- </File>
+ >
+ </File>
+ <File
+ RelativePath=".\res\web\controlvolumebar.png"
+ >
+ </File>
<File
RelativePath=".\res\web\controlvolumegrip.png"
>
@@ -1800,6 +1800,10 @@
>
</File>
<File
+ RelativePath=".\res\web\variables.html"
+ >
+ </File>
+ <File
RelativePath=".\res\web\vbg.gif"
>
</File>
diff --git a/src/apps/mplayerc/mplayerc.vcxproj b/src/apps/mplayerc/mplayerc.vcxproj
index 4b81edff2..40965d504 100644
--- a/src/apps/mplayerc/mplayerc.vcxproj
+++ b/src/apps/mplayerc/mplayerc.vcxproj
@@ -553,6 +553,7 @@ update_version.bat
<None Include="res\web\sliderback.gif" />
<None Include="res\web\sliderbar.gif" />
<None Include="res\web\slidergrip.gif" />
+ <None Include="res\web\variables.html" />
<None Include="res\web\vbg.gif" />
<None Include="res\web\vbs.GIF" />
<None Include="res\shaders\BT601BT709.psh" />
diff --git a/src/apps/mplayerc/mplayerc.vcxproj.filters b/src/apps/mplayerc/mplayerc.vcxproj.filters
index 692a8a7f0..cf664466d 100644
--- a/src/apps/mplayerc/mplayerc.vcxproj.filters
+++ b/src/apps/mplayerc/mplayerc.vcxproj.filters
@@ -865,6 +865,9 @@
<None Include="res\web\slidergrip.gif">
<Filter>Resource Files\web</Filter>
</None>
+ <None Include="res\web\variables.html">
+ <Filter>Resource Files\web</Filter>
+ </None>
<None Include="res\web\vbg.gif">
<Filter>Resource Files\web</Filter>
</None>
diff --git a/src/apps/mplayerc/res/mplayerc.rc2 b/src/apps/mplayerc/res/mplayerc.rc2
index 2a47aeacb..957b0f3ec 100644
--- a/src/apps/mplayerc/res/mplayerc.rc2
+++ b/src/apps/mplayerc/res/mplayerc.rc2
@@ -117,12 +117,13 @@ W7_TOOLBAR PNG "res\\Toolbarw7.png"
IDR_HTML_INDEX HTML "res\\web\\index.html"
IDR_HTML_404 HTML "res\\web\\404.html"
-IDR_HTML_BROWSER HTML "res\\web\\browser.html"
-IDR_HTML_CONTROLS HTML "res\\web\\controls.html"
-IDR_HTML_PLAYER HTML "res\\web\\player.html"
-
-
-/////////////////////////////////////////////////////////////////////////////
+IDR_HTML_BROWSER HTML "res\\web\\browser.html"
+IDR_HTML_CONTROLS HTML "res\\web\\controls.html"
+IDR_HTML_PLAYER HTML "res\\web\\player.html"
+IDR_HTML_VARIABLES HTML "res\\web\\variables.html"
+
+
+/////////////////////////////////////////////////////////////////////////////
//
// Version
//
diff --git a/src/apps/mplayerc/res/web/variables.html b/src/apps/mplayerc/res/web/variables.html
new file mode 100644
index 000000000..09b25608f
--- /dev/null
+++ b/src/apps/mplayerc/res/web/variables.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+ <head>
+ <title>Variables</title>
+ <meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=[charset]">
+ </head>
+ <body>
+ <p id="charset">[charset]</p>
+ <p id="filepatharg">[filepatharg]</p>
+ <p id="filepath">[filepath]</p>
+ <p id="filedirarg">[filedirarg]</p>
+ <p id="filedir">[filedir]</p>
+ <p id="state">[state]</p>
+ <p id="statestring">[statestring]</p>
+ <p id="position">[position]</p>
+ <p id="positionstring">[positionstring]</p>
+ <p id="duration">[duration]</p>
+ <p id="durationstring">[durationstring]</p>
+ <p id="volumelevel">[volumelevel]</p>
+ <p id="muted">[muted]</p>
+ <p id="playbackrate">[playbackrate]</p>
+ <p id="reloadtime">[reloadtime]</p>
+ </body>
+</html>
diff --git a/src/apps/mplayerc/resource.h b/src/apps/mplayerc/resource.h
index 18d910625..5be2f148a 100644
--- a/src/apps/mplayerc/resource.h
+++ b/src/apps/mplayerc/resource.h
Binary files differ
diff --git a/src/filters/parser/MpegSplitter/MpegSplitter.cpp b/src/filters/parser/MpegSplitter/MpegSplitter.cpp
index d81bb1326..b508f4cc5 100644
--- a/src/filters/parser/MpegSplitter/MpegSplitter.cpp
+++ b/src/filters/parser/MpegSplitter/MpegSplitter.cpp
@@ -817,36 +817,31 @@ HRESULT CMpegSplitterFilter::CreateOutputs(IAsyncReader* pAsyncReader)
CStringW str;
int iProgram;
- if (i == CMpegSplitterFile::subpic && s.pid == NO_SUBTITLE_PID) {
- str = _T("No subtitles");
- continue;
+ const CHdmvClipInfo::Stream *pClipInfo;
+ const CMpegSplitterFile::program * pProgram = m_pFile->FindProgram(s.pid, iProgram, pClipInfo);
+ const wchar_t *pStreamName = NULL;
+ int StreamType = pClipInfo ? pClipInfo->m_Type : pProgram ? pProgram->streams[iProgram].type : 0;
+ pStreamName = StreamTypeToName((PES_STREAM_TYPE)StreamType);
+
+ CString lang_str;
+ CString lang_name = _T("");
+ if((m_pFile->m_pPMT_Lang.Lookup(s.pid, lang_str)) && (!lang_str.IsEmpty())) {
+ char ch[4];
+ ch[0] = lang_str[0];
+ ch[1] = lang_str[1];
+ ch[2] = lang_str[2];
+ ch[3] = lang_str[3];
+ lang_name = ISO6392ToLanguage(ch);
+ }
+
+ CString FormatDesc = GetMediaTypeDesc(&s.mt, pClipInfo, StreamType, lang_name);
+
+ if (!FormatDesc.IsEmpty()) {
+ str.Format(L"%s (%04x,%02x,%02x)", FormatDesc.GetString(), s.pid, s.pesid, s.ps1id); // TODO: make this nicer
+ } else if (pStreamName) {
+ str.Format(L"%s - %s (%04x,%02x,%02x)", name, pStreamName, s.pid, s.pesid, s.ps1id); // TODO: make this nicer
} else {
- const CHdmvClipInfo::Stream *pClipInfo;
- const CMpegSplitterFile::program * pProgram = m_pFile->FindProgram(s.pid, iProgram, pClipInfo);
- const wchar_t *pStreamName = NULL;
- int StreamType = pClipInfo ? pClipInfo->m_Type : pProgram ? pProgram->streams[iProgram].type : 0;
- pStreamName = StreamTypeToName((PES_STREAM_TYPE)StreamType);
-
- CString lang_str;
- CString name = _T("");
- if((m_pFile->m_pPMT_Lang.Lookup(s.pid, lang_str)) && (!lang_str.IsEmpty())) {
- char ch[4];
- ch[0] = lang_str[0];
- ch[1] = lang_str[1];
- ch[2] = lang_str[2];
- ch[3] = lang_str[3];
- name = ISO6392ToLanguage(ch);
- }
-
- CString FormatDesc = GetMediaTypeDesc(&s.mt, pClipInfo, StreamType, name);
-
- if (!FormatDesc.IsEmpty()) {
- str.Format(L"%s (%04x,%02x,%02x)", FormatDesc.GetString(), s.pid, s.pesid, s.ps1id); // TODO: make this nicer
- } else if (pStreamName) {
- str.Format(L"%s - %s (%04x,%02x,%02x)", name, pStreamName, s.pid, s.pesid, s.ps1id); // TODO: make this nicer
- } else {
- str.Format(L"%s (%04x,%02x,%02x)", name, s.pid, s.pesid, s.ps1id); // TODO: make this nicer
- }
+ str.Format(L"%s (%04x,%02x,%02x)", name, s.pid, s.pesid, s.ps1id); // TODO: make this nicer
}
CString str_tmp = str;
str_tmp.MakeLower();
@@ -903,35 +898,31 @@ HRESULT CMpegSplitterFilter::CreateOutputs(IAsyncReader* pAsyncReader)
CStringW str;
int iProgram = -1;
- if (i == CMpegSplitterFile::subpic && s.pid == NO_SUBTITLE_PID) {
- str = _T("No subtitles");
+ const CHdmvClipInfo::Stream *pClipInfo;
+ const CMpegSplitterFile::program * pProgram = m_pFile->FindProgram(s.pid, iProgram, pClipInfo);
+ const wchar_t *pStreamName = NULL;
+ int StreamType = pClipInfo ? pClipInfo->m_Type : pProgram ? pProgram->streams[iProgram].type : 0;
+ pStreamName = StreamTypeToName((PES_STREAM_TYPE)StreamType);
+
+ CString lang_str;
+ CString lang_name = _T("");
+ if((m_pFile->m_pPMT_Lang.Lookup(s.pid, lang_str)) && (!lang_str.IsEmpty())) {
+ char ch[4];
+ ch[0] = lang_str[0];
+ ch[1] = lang_str[1];
+ ch[2] = lang_str[2];
+ ch[3] = lang_str[3];
+ lang_name = ISO6392ToLanguage(ch);
+ }
+
+ CString FormatDesc = GetMediaTypeDesc(&s.mt, pClipInfo, StreamType, lang_name);
+
+ if (!FormatDesc.IsEmpty()) {
+ str.Format(L"%s (%04x,%02x,%02x)", FormatDesc.GetString(), s.pid, s.pesid, s.ps1id); // TODO: make this nicer
+ } else if (pStreamName) {
+ str.Format(L"%s - %s (%04x,%02x,%02x)", name, pStreamName, s.pid, s.pesid, s.ps1id); // TODO: make this nicer
} else {
- const CHdmvClipInfo::Stream *pClipInfo;
- const CMpegSplitterFile::program * pProgram = m_pFile->FindProgram(s.pid, iProgram, pClipInfo);
- const wchar_t *pStreamName = NULL;
- int StreamType = pClipInfo ? pClipInfo->m_Type : pProgram ? pProgram->streams[iProgram].type : 0;
- pStreamName = StreamTypeToName((PES_STREAM_TYPE)StreamType);
-
- CString lang_str;
- CString name = _T("");
- if((m_pFile->m_pPMT_Lang.Lookup(s.pid, lang_str)) && (!lang_str.IsEmpty())) {
- char ch[4];
- ch[0] = lang_str[0];
- ch[1] = lang_str[1];
- ch[2] = lang_str[2];
- ch[3] = lang_str[3];
- name = ISO6392ToLanguage(ch);
- }
-
- CString FormatDesc = GetMediaTypeDesc(&s.mt, pClipInfo, StreamType, name);
-
- if (!FormatDesc.IsEmpty()) {
- str.Format(L"%s (%04x,%02x,%02x)", FormatDesc.GetString(), s.pid, s.pesid, s.ps1id); // TODO: make this nicer
- } else if (pStreamName) {
- str.Format(L"%s - %s (%04x,%02x,%02x)", name, pStreamName, s.pid, s.pesid, s.ps1id); // TODO: make this nicer
- } else {
- str.Format(L"%s (%04x,%02x,%02x)", name, s.pid, s.pesid, s.ps1id); // TODO: make this nicer
- }
+ str.Format(L"%s (%04x,%02x,%02x)", name, s.pid, s.pesid, s.ps1id); // TODO: make this nicer
}
CAutoPtr<CBaseSplitterOutputPin> pPinOut(DNew CMpegSplitterOutputPin(mts, str, this, this, &hr));
@@ -1332,37 +1323,32 @@ STDMETHODIMP CMpegSplitterFilter::Info(long lIndex, AM_MEDIA_TYPE** ppmt, DWORD*
CStringW str;
- if (i == CMpegSplitterFile::subpic && s.pid == NO_SUBTITLE_PID) {
- str = _T("No subtitles");
- *plcid = (LCID)LCID_NOSUBTITLES;
- } else {
- int iProgram;
- const CHdmvClipInfo::Stream *pClipInfo;
- const CMpegSplitterFile::program * pProgram = m_pFile->FindProgram(s.pid, iProgram, pClipInfo);
- const wchar_t *pStreamName = NULL;
- int StreamType = pClipInfo ? pClipInfo->m_Type : pProgram ? pProgram->streams[iProgram].type : 0;
- pStreamName = StreamTypeToName((PES_STREAM_TYPE)StreamType);
-
- CString lang_str;
- CString name = _T("");
- if((m_pFile->m_pPMT_Lang.Lookup(s.pid, lang_str)) && (!lang_str.IsEmpty())) {
- char ch[4];
- ch[0] = lang_str[0];
- ch[1] = lang_str[1];
- ch[2] = lang_str[2];
- ch[3] = lang_str[3];
- name = ISO6392ToLanguage(ch);
- }
+ int iProgram;
+ const CHdmvClipInfo::Stream *pClipInfo;
+ const CMpegSplitterFile::program * pProgram = m_pFile->FindProgram(s.pid, iProgram, pClipInfo);
+ const wchar_t *pStreamName = NULL;
+ int StreamType = pClipInfo ? pClipInfo->m_Type : pProgram ? pProgram->streams[iProgram].type : 0;
+ pStreamName = StreamTypeToName((PES_STREAM_TYPE)StreamType);
- CString FormatDesc = GetMediaTypeDesc(&s.mt, pClipInfo, StreamType, name);
+ CString lang_str;
+ CString lang_name = _T("");
+ if((m_pFile->m_pPMT_Lang.Lookup(s.pid, lang_str)) && (!lang_str.IsEmpty())) {
+ char ch[4];
+ ch[0] = lang_str[0];
+ ch[1] = lang_str[1];
+ ch[2] = lang_str[2];
+ ch[3] = lang_str[3];
+ lang_name = ISO6392ToLanguage(ch);
+ }
- if (!FormatDesc.IsEmpty()) {
- str.Format(L"%s (%04x,%02x,%02x)", FormatDesc.GetString(), s.pid, s.pesid, s.ps1id); // TODO: make this nicer
- } else if (pStreamName) {
- str.Format(L"%s - %s (%04x,%02x,%02x)", name, pStreamName, s.pid, s.pesid, s.ps1id); // TODO: make this nicer
- } else {
- str.Format(L"%s (%04x,%02x,%02x)", name, s.pid, s.pesid, s.ps1id); // TODO: make this nicer
- }
+ CString FormatDesc = GetMediaTypeDesc(&s.mt, pClipInfo, StreamType, lang_name);
+
+ if (!FormatDesc.IsEmpty()) {
+ str.Format(L"%s (%04x,%02x,%02x)", FormatDesc.GetString(), s.pid, s.pesid, s.ps1id); // TODO: make this nicer
+ } else if (pStreamName) {
+ str.Format(L"%s - %s (%04x,%02x,%02x)", name, pStreamName, s.pid, s.pesid, s.ps1id); // TODO: make this nicer
+ } else {
+ str.Format(L"%s (%04x,%02x,%02x)", name, s.pid, s.pesid, s.ps1id); // TODO: make this nicer
}
*ppszName = (WCHAR*)CoTaskMemAlloc((str.GetLength()+1)*sizeof(WCHAR));
diff --git a/src/filters/parser/MpegSplitter/MpegSplitterFile.cpp b/src/filters/parser/MpegSplitter/MpegSplitterFile.cpp
index 51cd604eb..8898ce61e 100644
--- a/src/filters/parser/MpegSplitter/MpegSplitterFile.cpp
+++ b/src/filters/parser/MpegSplitter/MpegSplitterFile.cpp
@@ -72,6 +72,21 @@ HRESULT CMpegSplitterFile::Init(IAsyncReader* pAsyncReader)
Seek(0);
if(m_type == us) {
+ if(BitRead(32, true) == 'TFrc') {
+ Seek(0xE80);
+ }
+ int cnt = 0, limit = 4;
+ for(trhdr h; cnt < limit && Read(h); cnt++) {
+ Seek(h.next);
+ }
+ if(cnt >= limit) {
+ m_type = ts;
+ }
+ }
+
+ Seek(0);
+
+ if(m_type == us) {
int cnt = 0, limit = 4;
for(pvahdr h; cnt < limit && Read(h); cnt++) {
Seek(GetPos() + h.length);
@@ -157,21 +172,6 @@ HRESULT CMpegSplitterFile::Init(IAsyncReader* pAsyncReader)
; // TODO: in this case disable seeking, or try doing something less drastical...
}
- if(m_streams[video].GetCount()) {
- if (!m_bIsHdmv && m_streams[subpic].GetCount()) {
-#ifndef DEBUG
- stream s;
- s.mt.majortype = m_streams[subpic].GetHead().mt.majortype;
- s.mt.subtype = m_streams[subpic].GetHead().mt.subtype;
- s.mt.formattype = m_streams[subpic].GetHead().mt.formattype;
- m_streams[subpic].Insert(s, this);
-#endif
- } else {
- // Add fake stream for "No subtitle"
- AddHdmvPGStream (NO_SUBTITLE_PID, "---");
- }
- }
-
Seek(0);
return S_OK;
@@ -459,8 +459,8 @@ DWORD CMpegSplitterFile::AddStream(WORD pid, BYTE pesid, DWORD len)
// and can also be split into multiple packets
if (!avch.Lookup(pid))
memset(&avch[pid], 0, sizeof(CMpegSplitterFile::avchdr));
- if(!m_streams[video].Find(s) && !m_streams[stereo].Find(s) && Read(avch[pid], len, &s.mt))
- {
+
+ if(!m_streams[video].Find(s) && !m_streams[stereo].Find(s) && Read(avch[pid], len, &s.mt)) {
if (avch[pid].spspps[index_subsetsps].complete)
type = stereo;
else
@@ -771,11 +771,15 @@ void CMpegSplitterFile::UpdatePrograms(const trhdr& h)
char ch[4];
switch(descriptor_tag) {
case 0x0a: // ISO 639 language descriptor
+ case 0x56: // Teletext descriptor
+ case 0x59: // Subtitling descriptor
ch[0] = BitRead(8);
ch[1] = BitRead(8);
ch[2] = BitRead(8);
ch[3] = 0;
- BitRead(8);
+ for(int i = 3; i < descriptor_length; i++) {
+ BitRead(8);
+ }
if(!(ch[0] == 'u' && ch[1] == 'n' && ch[2] == 'd')) {
m_pPMT_Lang[pid] = CString(ch);
}
diff --git a/src/filters/transform/MPCVideoDec/FfmpegContext.c b/src/filters/transform/MPCVideoDec/FfmpegContext.c
index 8a5cf596e..dcf3c6b07 100644
--- a/src/filters/transform/MPCVideoDec/FfmpegContext.c
+++ b/src/filters/transform/MPCVideoDec/FfmpegContext.c
@@ -37,7 +37,6 @@
#include "h264data.h"
#include "vc1.h"
-
int av_h264_decode_frame(struct AVCodecContext* avctx, int* nOutPOC, int64_t* rtStartTime, uint8_t *buf, int buf_size);
int av_vc1_decode_frame(AVCodecContext *avctx, uint8_t *buf, int buf_size);
void av_init_packet(AVPacket *pkt);
@@ -610,6 +609,24 @@ HRESULT FFVC1UpdatePictureParam (DXVA_PictureParameters* pPicParams, struct AVCo
return S_OK;
}
+int MPEG2CheckCompatibility(struct AVCodecContext* pAVCtx, struct AVFrame* pFrame)
+{
+ int got_picture = 0;
+ Mpeg1Context* s1 = (Mpeg1Context*)pAVCtx->priv_data;
+ MpegEncContext* s = (MpegEncContext*)&s1->mpeg_enc_ctx;
+ AVPacket avpkt;
+
+ av_init_packet(&avpkt);
+ avpkt.data = (BYTE*)pAVCtx->extradata;
+ avpkt.size = pAVCtx->extradata_size;
+ // HACK for CorePNG to decode as normal PNG by default
+ avpkt.flags = AV_PKT_FLAG_KEY;
+
+ avcodec_decode_video2(pAVCtx, pFrame, &got_picture, &avpkt);
+
+ return (s->chroma_format<2);
+}
+
HRESULT FFMpeg2DecodeFrame (DXVA_PictureParameters* pPicParams, DXVA_QmatrixData* pQMatrixData, DXVA_SliceInfo* pSliceInfo, int* nSliceCount,
struct AVCodecContext* pAVCtx, struct AVFrame* pFrame, int* nNextCodecIndex, int* nFieldType, int* nSliceType, BYTE* pBuffer, UINT nSize)
{
diff --git a/src/filters/transform/MPCVideoDec/FfmpegContext.h b/src/filters/transform/MPCVideoDec/FfmpegContext.h
index 1477d329b..b4ed6caf3 100644
--- a/src/filters/transform/MPCVideoDec/FfmpegContext.h
+++ b/src/filters/transform/MPCVideoDec/FfmpegContext.h
@@ -55,6 +55,7 @@ HRESULT FFVC1UpdatePictureParam (DXVA_PictureParameters* pPicParams, struct AV
int FFIsSkipped(struct AVCodecContext* pAVCtx);
// === Mpeg2 functions
+int MPEG2CheckCompatibility(struct AVCodecContext* pAVCtx, struct AVFrame* pFrame);
HRESULT FFMpeg2DecodeFrame (DXVA_PictureParameters* pPicParams, DXVA_QmatrixData* m_QMatrixData, DXVA_SliceInfo* pSliceInfo, int* nSliceCount,
struct AVCodecContext* pAVCtx, struct AVFrame* pFrame, int* nNextCodecIndex, int* nFieldType, int* nSliceType, BYTE* pBuffer, UINT nSize);
diff --git a/src/filters/transform/MPCVideoDec/MPCVideoDecFilter.cpp b/src/filters/transform/MPCVideoDec/MPCVideoDecFilter.cpp
index 9f29c9ebb..a0d6f7fcb 100644
--- a/src/filters/transform/MPCVideoDec/MPCVideoDecFilter.cpp
+++ b/src/filters/transform/MPCVideoDec/MPCVideoDecFilter.cpp
@@ -1151,6 +1151,8 @@ HRESULT CMPCVideoDecFilter::SetMediaType(PIN_DIRECTION direction,const CMediaTyp
case CODEC_ID_MPEG2VIDEO :
// DSP is disable for DXVA decoding (to keep default idct_permutation)
m_pAVCtx->dsp_mask ^= AV_CPU_FLAG_FORCE;
+ m_bDXVACompatible = MPEG2CheckCompatibility(m_pAVCtx, m_pFrame);
+
break;
}
diff --git a/src/filters/transform/Mpeg2DecFilter/Mpeg2DecFilter.rc b/src/filters/transform/Mpeg2DecFilter/Mpeg2DecFilter.rc
index 91d260158..a325b48fe 100644
--- a/src/filters/transform/Mpeg2DecFilter/Mpeg2DecFilter.rc
+++ b/src/filters/transform/Mpeg2DecFilter/Mpeg2DecFilter.rc
@@ -107,6 +107,7 @@ BEGIN
IDS_MPEG2_SATURATION "Saturation"
IDS_MPEG2DECSETTINGSWND_8
"can degrade performance. ""Auto"" deinterlacer will switch to ""Blend"" when necessary."
+ IDS_MPEG2DECSETTINGSWND_3 "Read AR from stream"
END
#endif // English (United States) resources