diff options
author | XhmikosR <xhmikosr@users.sourceforge.net> | 2011-05-20 14:49:13 +0400 |
---|---|---|
committer | XhmikosR <xhmikosr@users.sourceforge.net> | 2011-05-20 14:49:13 +0400 |
commit | fb29eef55b1046722bcc9213754f378d89172499 (patch) | |
tree | e829b0dcbe3432d3828e4e1555c1548965cd7afc | |
parent | 9704199a943cb7f7b4dc19f755dc60d8da55baa6 (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
68 files changed, 318 insertions, 156 deletions
@@ -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 Binary files differindex 7a4b3ab05..4f7751376 100644 --- a/src/apps/mplayerc/mpcresources/mplayerc.br.rc +++ b/src/apps/mplayerc/mpcresources/mplayerc.br.rc diff --git a/src/apps/mplayerc/mpcresources/mplayerc.by.rc b/src/apps/mplayerc/mpcresources/mplayerc.by.rc Binary files differindex a9b25e4ce..d98a45eaa 100644 --- a/src/apps/mplayerc/mpcresources/mplayerc.by.rc +++ b/src/apps/mplayerc/mpcresources/mplayerc.by.rc diff --git a/src/apps/mplayerc/mpcresources/mplayerc.ca.rc b/src/apps/mplayerc/mpcresources/mplayerc.ca.rc Binary files differindex ef4c8074f..4418cf519 100644 --- a/src/apps/mplayerc/mpcresources/mplayerc.ca.rc +++ b/src/apps/mplayerc/mpcresources/mplayerc.ca.rc diff --git a/src/apps/mplayerc/mpcresources/mplayerc.cz.rc b/src/apps/mplayerc/mpcresources/mplayerc.cz.rc Binary files differindex d61b0295d..7d094e8c9 100644 --- a/src/apps/mplayerc/mpcresources/mplayerc.cz.rc +++ b/src/apps/mplayerc/mpcresources/mplayerc.cz.rc diff --git a/src/apps/mplayerc/mpcresources/mplayerc.de.rc b/src/apps/mplayerc/mpcresources/mplayerc.de.rc Binary files differindex e05f145c1..41d97224c 100644 --- a/src/apps/mplayerc/mpcresources/mplayerc.de.rc +++ b/src/apps/mplayerc/mpcresources/mplayerc.de.rc diff --git a/src/apps/mplayerc/mpcresources/mplayerc.es.rc b/src/apps/mplayerc/mpcresources/mplayerc.es.rc Binary files differindex 341d36af2..26de5e2a0 100644 --- a/src/apps/mplayerc/mpcresources/mplayerc.es.rc +++ b/src/apps/mplayerc/mpcresources/mplayerc.es.rc diff --git a/src/apps/mplayerc/mpcresources/mplayerc.fr.rc b/src/apps/mplayerc/mpcresources/mplayerc.fr.rc Binary files differindex f43e0e09c..fd4c0a3e6 100644 --- a/src/apps/mplayerc/mpcresources/mplayerc.fr.rc +++ b/src/apps/mplayerc/mpcresources/mplayerc.fr.rc diff --git a/src/apps/mplayerc/mpcresources/mplayerc.hu.rc b/src/apps/mplayerc/mpcresources/mplayerc.hu.rc Binary files differindex 526038f78..134f0df81 100644 --- a/src/apps/mplayerc/mpcresources/mplayerc.hu.rc +++ b/src/apps/mplayerc/mpcresources/mplayerc.hu.rc diff --git a/src/apps/mplayerc/mpcresources/mplayerc.hy.rc b/src/apps/mplayerc/mpcresources/mplayerc.hy.rc Binary files differindex 8e7a0f19d..bf3d06be0 100644 --- a/src/apps/mplayerc/mpcresources/mplayerc.hy.rc +++ b/src/apps/mplayerc/mpcresources/mplayerc.hy.rc diff --git a/src/apps/mplayerc/mpcresources/mplayerc.it.rc b/src/apps/mplayerc/mpcresources/mplayerc.it.rc Binary files differindex 65f748a62..6943b1dfa 100644 --- a/src/apps/mplayerc/mpcresources/mplayerc.it.rc +++ b/src/apps/mplayerc/mpcresources/mplayerc.it.rc diff --git a/src/apps/mplayerc/mpcresources/mplayerc.ja.rc b/src/apps/mplayerc/mpcresources/mplayerc.ja.rc Binary files differindex a4ed401ec..23767c15e 100644 --- a/src/apps/mplayerc/mpcresources/mplayerc.ja.rc +++ b/src/apps/mplayerc/mpcresources/mplayerc.ja.rc diff --git a/src/apps/mplayerc/mpcresources/mplayerc.kr.rc b/src/apps/mplayerc/mpcresources/mplayerc.kr.rc Binary files differindex a39578fcc..2c5b9beda 100644 --- a/src/apps/mplayerc/mpcresources/mplayerc.kr.rc +++ b/src/apps/mplayerc/mpcresources/mplayerc.kr.rc diff --git a/src/apps/mplayerc/mpcresources/mplayerc.nl.rc b/src/apps/mplayerc/mpcresources/mplayerc.nl.rc Binary files differindex 9e12b7baa..b80eb3cab 100644 --- a/src/apps/mplayerc/mpcresources/mplayerc.nl.rc +++ b/src/apps/mplayerc/mpcresources/mplayerc.nl.rc diff --git a/src/apps/mplayerc/mpcresources/mplayerc.pl.rc b/src/apps/mplayerc/mpcresources/mplayerc.pl.rc Binary files differindex 6a98af0d4..d57243027 100644 --- a/src/apps/mplayerc/mpcresources/mplayerc.pl.rc +++ b/src/apps/mplayerc/mpcresources/mplayerc.pl.rc diff --git a/src/apps/mplayerc/mpcresources/mplayerc.ru.rc b/src/apps/mplayerc/mpcresources/mplayerc.ru.rc Binary files differindex a65233a9f..749cf0729 100644 --- a/src/apps/mplayerc/mpcresources/mplayerc.ru.rc +++ b/src/apps/mplayerc/mpcresources/mplayerc.ru.rc diff --git a/src/apps/mplayerc/mpcresources/mplayerc.sc.rc b/src/apps/mplayerc/mpcresources/mplayerc.sc.rc Binary files differindex d5f6e4493..49333ba7f 100644 --- a/src/apps/mplayerc/mpcresources/mplayerc.sc.rc +++ b/src/apps/mplayerc/mpcresources/mplayerc.sc.rc diff --git a/src/apps/mplayerc/mpcresources/mplayerc.sk.rc b/src/apps/mplayerc/mpcresources/mplayerc.sk.rc Binary files differindex 7d9c8feaf..f3f078724 100644 --- a/src/apps/mplayerc/mpcresources/mplayerc.sk.rc +++ b/src/apps/mplayerc/mpcresources/mplayerc.sk.rc diff --git a/src/apps/mplayerc/mpcresources/mplayerc.sv.rc b/src/apps/mplayerc/mpcresources/mplayerc.sv.rc Binary files differindex aa658b1eb..967c5122f 100644 --- a/src/apps/mplayerc/mpcresources/mplayerc.sv.rc +++ b/src/apps/mplayerc/mpcresources/mplayerc.sv.rc diff --git a/src/apps/mplayerc/mpcresources/mplayerc.tc.rc b/src/apps/mplayerc/mpcresources/mplayerc.tc.rc Binary files differindex 921d738dc..62ff28145 100644 --- a/src/apps/mplayerc/mpcresources/mplayerc.tc.rc +++ b/src/apps/mplayerc/mpcresources/mplayerc.tc.rc diff --git a/src/apps/mplayerc/mpcresources/mplayerc.tr.rc b/src/apps/mplayerc/mpcresources/mplayerc.tr.rc Binary files differindex 0aba858b6..44719216d 100644 --- a/src/apps/mplayerc/mpcresources/mplayerc.tr.rc +++ b/src/apps/mplayerc/mpcresources/mplayerc.tr.rc diff --git a/src/apps/mplayerc/mpcresources/mplayerc.ua.rc b/src/apps/mplayerc/mpcresources/mplayerc.ua.rc Binary files differindex 9061204d7..667888ef4 100644 --- a/src/apps/mplayerc/mpcresources/mplayerc.ua.rc +++ b/src/apps/mplayerc/mpcresources/mplayerc.ua.rc diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.br.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.br.rc.txt Binary files differindex cb153e0a8..d97d615c9 100644 --- a/src/apps/mplayerc/mpcresources/text/mplayerc.br.rc.txt +++ b/src/apps/mplayerc/mpcresources/text/mplayerc.br.rc.txt diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.by.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.by.rc.txt Binary files differindex 3dcf99837..31cc82450 100644 --- a/src/apps/mplayerc/mpcresources/text/mplayerc.by.rc.txt +++ b/src/apps/mplayerc/mpcresources/text/mplayerc.by.rc.txt diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.ca.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.ca.rc.txt Binary files differindex c0da4049f..fca02d33d 100644 --- a/src/apps/mplayerc/mpcresources/text/mplayerc.ca.rc.txt +++ b/src/apps/mplayerc/mpcresources/text/mplayerc.ca.rc.txt diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.cz.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.cz.rc.txt Binary files differindex 9e55a9a92..038dd706a 100644 --- a/src/apps/mplayerc/mpcresources/text/mplayerc.cz.rc.txt +++ b/src/apps/mplayerc/mpcresources/text/mplayerc.cz.rc.txt diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.de.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.de.rc.txt Binary files differindex 35914ef23..5415542b5 100644 --- a/src/apps/mplayerc/mpcresources/text/mplayerc.de.rc.txt +++ b/src/apps/mplayerc/mpcresources/text/mplayerc.de.rc.txt diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.es.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.es.rc.txt Binary files differindex 50b2d03fe..8cacc9280 100644 --- a/src/apps/mplayerc/mpcresources/text/mplayerc.es.rc.txt +++ b/src/apps/mplayerc/mpcresources/text/mplayerc.es.rc.txt diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.fr.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.fr.rc.txt Binary files differindex b189365f9..b30c1a68f 100644 --- a/src/apps/mplayerc/mpcresources/text/mplayerc.fr.rc.txt +++ b/src/apps/mplayerc/mpcresources/text/mplayerc.fr.rc.txt diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.hu.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.hu.rc.txt Binary files differindex 3f2dbf707..ee7281c21 100644 --- a/src/apps/mplayerc/mpcresources/text/mplayerc.hu.rc.txt +++ b/src/apps/mplayerc/mpcresources/text/mplayerc.hu.rc.txt diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.hy.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.hy.rc.txt Binary files differindex 04a31bba4..8897529e6 100644 --- a/src/apps/mplayerc/mpcresources/text/mplayerc.hy.rc.txt +++ b/src/apps/mplayerc/mpcresources/text/mplayerc.hy.rc.txt diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.it.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.it.rc.txt Binary files differindex 61bdeb3c2..71b0d12c5 100644 --- a/src/apps/mplayerc/mpcresources/text/mplayerc.it.rc.txt +++ b/src/apps/mplayerc/mpcresources/text/mplayerc.it.rc.txt diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.ja.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.ja.rc.txt Binary files differindex a1f5132e0..f718b042c 100644 --- a/src/apps/mplayerc/mpcresources/text/mplayerc.ja.rc.txt +++ b/src/apps/mplayerc/mpcresources/text/mplayerc.ja.rc.txt diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.kr.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.kr.rc.txt Binary files differindex a2f099d9a..214b2baa3 100644 --- a/src/apps/mplayerc/mpcresources/text/mplayerc.kr.rc.txt +++ b/src/apps/mplayerc/mpcresources/text/mplayerc.kr.rc.txt diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.nl.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.nl.rc.txt Binary files differindex 0bed51e81..18684d593 100644 --- a/src/apps/mplayerc/mpcresources/text/mplayerc.nl.rc.txt +++ b/src/apps/mplayerc/mpcresources/text/mplayerc.nl.rc.txt diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.pl.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.pl.rc.txt Binary files differindex f93f81f16..70b9bf810 100644 --- a/src/apps/mplayerc/mpcresources/text/mplayerc.pl.rc.txt +++ b/src/apps/mplayerc/mpcresources/text/mplayerc.pl.rc.txt diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.rc.txt Binary files differindex 2ea2829be..cdc614046 100644 --- a/src/apps/mplayerc/mpcresources/text/mplayerc.rc.txt +++ b/src/apps/mplayerc/mpcresources/text/mplayerc.rc.txt diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.ru.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.ru.rc.txt Binary files differindex 53d216435..2a9d7bfbe 100644 --- a/src/apps/mplayerc/mpcresources/text/mplayerc.ru.rc.txt +++ b/src/apps/mplayerc/mpcresources/text/mplayerc.ru.rc.txt diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.sc.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.sc.rc.txt Binary files differindex 1b597dad8..a9025f494 100644 --- a/src/apps/mplayerc/mpcresources/text/mplayerc.sc.rc.txt +++ b/src/apps/mplayerc/mpcresources/text/mplayerc.sc.rc.txt diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.sk.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.sk.rc.txt Binary files differindex a52285630..5b87d05e3 100644 --- a/src/apps/mplayerc/mpcresources/text/mplayerc.sk.rc.txt +++ b/src/apps/mplayerc/mpcresources/text/mplayerc.sk.rc.txt diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.sv.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.sv.rc.txt Binary files differindex dc925682b..736cda6f1 100644 --- a/src/apps/mplayerc/mpcresources/text/mplayerc.sv.rc.txt +++ b/src/apps/mplayerc/mpcresources/text/mplayerc.sv.rc.txt diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.tc.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.tc.rc.txt Binary files differindex c63bd7bf2..179143af1 100644 --- a/src/apps/mplayerc/mpcresources/text/mplayerc.tc.rc.txt +++ b/src/apps/mplayerc/mpcresources/text/mplayerc.tc.rc.txt diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.tr.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.tr.rc.txt Binary files differindex e2e309c9b..6b89c5eee 100644 --- a/src/apps/mplayerc/mpcresources/text/mplayerc.tr.rc.txt +++ b/src/apps/mplayerc/mpcresources/text/mplayerc.tr.rc.txt diff --git a/src/apps/mplayerc/mpcresources/text/mplayerc.ua.rc.txt b/src/apps/mplayerc/mpcresources/text/mplayerc.ua.rc.txt Binary files differindex 9e5c1e0d0..0c45f9c80 100644 --- a/src/apps/mplayerc/mpcresources/text/mplayerc.ua.rc.txt +++ b/src/apps/mplayerc/mpcresources/text/mplayerc.ua.rc.txt diff --git a/src/apps/mplayerc/mplayerc.rc b/src/apps/mplayerc/mplayerc.rc Binary files differindex fdc6ab051..592df3083 100644 --- a/src/apps/mplayerc/mplayerc.rc +++ b/src/apps/mplayerc/mplayerc.rc 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 Binary files differindex 18d910625..5be2f148a 100644 --- a/src/apps/mplayerc/resource.h +++ b/src/apps/mplayerc/resource.h 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
|