mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-24 11:16:51 +00:00
xbmc: update to xbmc-648b6fc
Signed-off-by: Stephan Raue <stephan@openelec.tv>
This commit is contained in:
parent
f79168770f
commit
5818ec226a
@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="xbmc-theme-Confluence"
|
||||
PKG_VERSION="f70eb43"
|
||||
PKG_VERSION="648b6fc"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="xbmc"
|
||||
PKG_VERSION="f70eb43"
|
||||
PKG_VERSION="648b6fc"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
@ -0,0 +1,155 @@
|
||||
From 52dac5c61cc4dc97ca74aa8398589bc1dfc25a1e Mon Sep 17 00:00:00 2001
|
||||
From: John Rennie <john.rennie@ratsauce.co.uk>
|
||||
Date: Tue, 15 Jan 2013 10:27:00 +0000
|
||||
Subject: [PATCH 1/4] Add key mapping for the power button
|
||||
|
||||
---
|
||||
system/keymaps/keyboard.xml | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/system/keymaps/keyboard.xml b/system/keymaps/keyboard.xml
|
||||
index 4271157..d8b6f47 100644
|
||||
--- a/system/keymaps/keyboard.xml
|
||||
+++ b/system/keymaps/keyboard.xml
|
||||
@@ -94,6 +94,7 @@
|
||||
<backslash>ToggleFullScreen</backslash>
|
||||
<home>FirstPage</home>
|
||||
<end>LastPage</end>
|
||||
+ <power>XBMC.ShutDown()</power>
|
||||
<!-- PVR windows -->
|
||||
<e>XBMC.ActivateWindowAndFocus(MyPVR, 31,0, 10,0)</e>
|
||||
<h>XBMC.ActivateWindowAndFocus(MyPVR, 32,0, 11,0)</h>
|
||||
--
|
||||
1.7.10
|
||||
|
||||
|
||||
From 169be40560488d0e6ca9548dc694e7ca0005288e Mon Sep 17 00:00:00 2001
|
||||
From: John Rennie <john.rennie@ratsauce.co.uk>
|
||||
Date: Tue, 15 Jan 2013 12:13:19 +0000
|
||||
Subject: [PATCH 2/4] Add support for sleep key in Linux
|
||||
|
||||
---
|
||||
xbmc/input/XBMC_keysym.h | 1 +
|
||||
xbmc/input/XBMC_keytable.cpp | 1 +
|
||||
xbmc/input/XBMC_vkeys.h | 1 +
|
||||
xbmc/windowing/WinEventsSDL.cpp | 2 +-
|
||||
4 files changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/xbmc/input/XBMC_keysym.h b/xbmc/input/XBMC_keysym.h
|
||||
index 0d8ba07..20d12b3 100644
|
||||
--- a/xbmc/input/XBMC_keysym.h
|
||||
+++ b/xbmc/input/XBMC_keysym.h
|
||||
@@ -214,6 +214,7 @@
|
||||
XBMCK_POWER = 0x140, // Power Macintosh power key
|
||||
XBMCK_EURO = 0x141, // Some european keyboards
|
||||
XBMCK_UNDO = 0x142, // Atari keyboard has Undo
|
||||
+ XBMCK_SLEEP = 0x143, // Sleep button on Nyxboard remote (and others?)
|
||||
|
||||
// Add any other keys here
|
||||
|
||||
diff --git a/xbmc/input/XBMC_keytable.cpp b/xbmc/input/XBMC_keytable.cpp
|
||||
index dbc28a7..aaf65ba 100644
|
||||
--- a/xbmc/input/XBMC_keytable.cpp
|
||||
+++ b/xbmc/input/XBMC_keytable.cpp
|
||||
@@ -222,6 +222,7 @@
|
||||
, { XBMCK_SCROLLOCK, 0, 0, XBMCVK_SCROLLLOCK, "scrolllock" }
|
||||
, { XBMCK_PRINT, 0, 0, XBMCVK_PRINTSCREEN, "printscreen" }
|
||||
, { XBMCK_POWER, 0, 0, XBMCVK_POWER, "power" }
|
||||
+, { XBMCK_SLEEP, 0, 0, XBMCVK_SLEEP, "sleep" }
|
||||
};
|
||||
|
||||
static int XBMCKeyTableSize = sizeof(XBMCKeyTable)/sizeof(XBMCKEYTABLE);
|
||||
diff --git a/xbmc/input/XBMC_vkeys.h b/xbmc/input/XBMC_vkeys.h
|
||||
index 38f675d..70b27e3 100644
|
||||
--- a/xbmc/input/XBMC_vkeys.h
|
||||
+++ b/xbmc/input/XBMC_vkeys.h
|
||||
@@ -205,6 +205,7 @@
|
||||
XBMCVK_SCROLLLOCK = 0xDC,
|
||||
XBMCVK_PAUSE = 0XDD,
|
||||
XBMCVK_POWER = 0XDE,
|
||||
+ XBMCVK_SLEEP = 0XDF,
|
||||
|
||||
XBMCVK_LAST = 0xFF
|
||||
} XBMCVKey;
|
||||
diff --git a/xbmc/windowing/WinEventsSDL.cpp b/xbmc/windowing/WinEventsSDL.cpp
|
||||
index 0acf810..c3c385f 100644
|
||||
--- a/xbmc/windowing/WinEventsSDL.cpp
|
||||
+++ b/xbmc/windowing/WinEventsSDL.cpp
|
||||
@@ -69,7 +69,7 @@
|
||||
, { 138, 0x69 /* 'i' */} // Info
|
||||
, { 147, 0x6d /* 'm' */} // Menu
|
||||
, { 148, XBMCK_LAUNCH_APP2 } // Launch app 2
|
||||
-, { 150, 0x9f } // Sleep
|
||||
+, { 150, XBMCK_SLEEP } // Sleep
|
||||
, { 152, XBMCK_LAUNCH_APP1 } // Launch app 1
|
||||
, { 163, XBMCK_LAUNCH_MAIL } // Launch Mail
|
||||
, { 164, XBMCK_BROWSER_FAVORITES } // Browser favorites
|
||||
--
|
||||
1.7.10
|
||||
|
||||
|
||||
From 6d0fe342052140c0153ddf4d253a6376fecc7c49 Mon Sep 17 00:00:00 2001
|
||||
From: John Rennie <renniej@RatBuntu.(none)>
|
||||
Date: Tue, 15 Jan 2013 13:12:42 +0000
|
||||
Subject: [PATCH 3/4] Move the Nyxboard sleep key mapping to the main keymap
|
||||
|
||||
---
|
||||
system/keymaps/keyboard.xml | 3 ++-
|
||||
system/keymaps/nyxboard/keyboard.xml | 1 -
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/system/keymaps/keyboard.xml b/system/keymaps/keyboard.xml
|
||||
index d8b6f47..a6431eb 100644
|
||||
--- a/system/keymaps/keyboard.xml
|
||||
+++ b/system/keymaps/keyboard.xml
|
||||
@@ -94,7 +94,8 @@
|
||||
<backslash>ToggleFullScreen</backslash>
|
||||
<home>FirstPage</home>
|
||||
<end>LastPage</end>
|
||||
- <power>XBMC.ShutDown()</power>
|
||||
+ <power>ActivateWindow(shutdownmenu)</power>
|
||||
+ <sleep>ActivateWindow(shutdownmenu)</sleep>
|
||||
<!-- PVR windows -->
|
||||
<e>XBMC.ActivateWindowAndFocus(MyPVR, 31,0, 10,0)</e>
|
||||
<h>XBMC.ActivateWindowAndFocus(MyPVR, 32,0, 11,0)</h>
|
||||
diff --git a/system/keymaps/nyxboard/keyboard.xml b/system/keymaps/nyxboard/keyboard.xml
|
||||
index 41914cb..278ffce 100644
|
||||
--- a/system/keymaps/nyxboard/keyboard.xml
|
||||
+++ b/system/keymaps/nyxboard/keyboard.xml
|
||||
@@ -8,7 +8,6 @@
|
||||
<f4 mod="shift">ActivateWindow(music)</f4> <!-- Green -->
|
||||
<f5 mod="shift">ActivateWindow(pictures)</f5> <!-- Yellow -->
|
||||
<f6 mod="shift">ActivateWindow(programs)</f6> <!-- Blue -->
|
||||
- <key id='61952'>ActivateWindow(shutdownmenu)</key> <!-- Power button -->
|
||||
<key id='285'>ContextMenu</key> <!-- User button -->
|
||||
</keyboard>
|
||||
</global>
|
||||
--
|
||||
1.7.10
|
||||
|
||||
|
||||
From 1a7e31fc944adba05e5857272e26e985ae767c3f Mon Sep 17 00:00:00 2001
|
||||
From: John Rennie <renniej@RatBuntu.(none)>
|
||||
Date: Tue, 15 Jan 2013 13:19:04 +0000
|
||||
Subject: [PATCH 4/4] Use key name not id in the Nyxboard mapping for F4
|
||||
|
||||
---
|
||||
system/keymaps/nyxboard/keyboard.xml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/system/keymaps/nyxboard/keyboard.xml b/system/keymaps/nyxboard/keyboard.xml
|
||||
index 278ffce..83e25c2 100644
|
||||
--- a/system/keymaps/nyxboard/keyboard.xml
|
||||
+++ b/system/keymaps/nyxboard/keyboard.xml
|
||||
@@ -8,7 +8,7 @@
|
||||
<f4 mod="shift">ActivateWindow(music)</f4> <!-- Green -->
|
||||
<f5 mod="shift">ActivateWindow(pictures)</f5> <!-- Yellow -->
|
||||
<f6 mod="shift">ActivateWindow(programs)</f6> <!-- Blue -->
|
||||
- <key id='285'>ContextMenu</key> <!-- User button -->
|
||||
+ <f4>ContextMenu</f4> <!-- User button -->
|
||||
</keyboard>
|
||||
</global>
|
||||
</keymap>
|
||||
--
|
||||
1.7.10
|
||||
|
@ -0,0 +1,168 @@
|
||||
From 453e2b2c40ba023bc4f092601931ca51f64bd88b Mon Sep 17 00:00:00 2001
|
||||
From: popcornmix <popcornmix@gmail.com>
|
||||
Date: Tue, 15 Jan 2013 20:55:48 +0000
|
||||
Subject: [PATCH] [rbp] Apply volume control at audio_mixer when possible
|
||||
|
||||
---
|
||||
xbmc/cores/omxplayer/OMXAudio.cpp | 105 +++++++++++++++++++++++++++----------
|
||||
1 file changed, 78 insertions(+), 27 deletions(-)
|
||||
|
||||
diff --git a/xbmc/cores/omxplayer/OMXAudio.cpp b/xbmc/cores/omxplayer/OMXAudio.cpp
|
||||
index 5399b10..a19004a 100644
|
||||
--- a/xbmc/cores/omxplayer/OMXAudio.cpp
|
||||
+++ b/xbmc/cores/omxplayer/OMXAudio.cpp
|
||||
@@ -37,10 +37,6 @@
|
||||
#include "guilib/LocalizeStrings.h"
|
||||
#include "cores/AudioEngine/Utils/AEConvert.h"
|
||||
|
||||
-#ifndef VOLUME_MINIMUM
|
||||
-#define VOLUME_MINIMUM -6000 // -60dB
|
||||
-#endif
|
||||
-
|
||||
using namespace std;
|
||||
|
||||
#define OMX_MAX_CHANNELS 10
|
||||
@@ -77,6 +73,19 @@
|
||||
|
||||
static const uint16_t DTSFSCod [] = {0, 8000, 16000, 32000, 0, 0, 11025, 22050, 44100, 0, 0, 12000, 24000, 48000, 0, 0};
|
||||
|
||||
+// 7.1 downmixing coefficients
|
||||
+const float downmixing_coefficients_8[OMX_AUDIO_MAXCHANNELS] = {
|
||||
+ // L R
|
||||
+ /* L */ 1, 0,
|
||||
+ /* R */ 0, 1,
|
||||
+ /* C */ 0.7071, 0.7071,
|
||||
+ /* LFE */ 0.7071, 0.7071,
|
||||
+ /* Ls */ 0.7071, 0,
|
||||
+ /* Rs */ 0, 0.7071,
|
||||
+ /* Lr */ 0.7071, 0,
|
||||
+ /* Rr */ 0, 0.7071
|
||||
+};
|
||||
+
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Construction/Destruction
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
@@ -198,8 +207,6 @@ bool COMXAudio::Initialize(AEAudioFormat format, std::string& device, OMXClock *
|
||||
|
||||
m_drc = 0;
|
||||
|
||||
- m_CurrentVolume = g_settings.m_fVolumeLevel;
|
||||
-
|
||||
memset(m_input_channels, 0x0, sizeof(m_input_channels));
|
||||
memset(m_output_channels, 0x0, sizeof(m_output_channels));
|
||||
memset(&m_wave_header, 0x0, sizeof(m_wave_header));
|
||||
@@ -545,8 +552,6 @@ bool COMXAudio::Initialize(AEAudioFormat format, std::string& device, OMXClock *
|
||||
m_first_frame = true;
|
||||
m_last_pts = DVD_NOPTS_VALUE;
|
||||
|
||||
- SetCurrentVolume(m_CurrentVolume);
|
||||
-
|
||||
CLog::Log(LOGDEBUG, "COMXAudio::Initialize Ouput bps %d samplerate %d channels %d buffer size %d bytes per second %d",
|
||||
(int)m_pcm_output.nBitPerSample, (int)m_pcm_output.nSamplingRate, (int)m_pcm_output.nChannels, m_BufferLen, m_BytesPerSec);
|
||||
CLog::Log(LOGDEBUG, "COMXAudio::Initialize Input bps %d samplerate %d channels %d buffer size %d bytes per second %d",
|
||||
@@ -694,20 +699,76 @@ bool COMXAudio::SetCurrentVolume(float fVolume)
|
||||
CSingleLock lock (m_critSection);
|
||||
|
||||
if(!m_Initialized || m_Passthrough)
|
||||
- return -1;
|
||||
-
|
||||
+ return false;
|
||||
+ double gain = pow(10, (g_advancedSettings.m_ac3Gain - 12.0f) / 20.0);
|
||||
m_CurrentVolume = fVolume;
|
||||
|
||||
- OMX_AUDIO_CONFIG_VOLUMETYPE volume;
|
||||
- OMX_INIT_STRUCTURE(volume);
|
||||
- volume.nPortIndex = m_omx_render->GetInputPort();
|
||||
+ if (m_format.m_channelLayout.Count() > 2)
|
||||
+ {
|
||||
+ double r = fVolume;
|
||||
+ const float* coeff = downmixing_coefficients_8;
|
||||
+ int input_channels = 0;
|
||||
+
|
||||
+ // normally we normalalise the levels, can be skipped (boosted) at risk of distortion
|
||||
+ if(!g_guiSettings.GetBool("audiooutput.normalizelevels"))
|
||||
+ {
|
||||
+ double sum_L = 0;
|
||||
+ double sum_R = 0;
|
||||
+
|
||||
+ for(size_t i = 0; i < OMX_AUDIO_MAXCHANNELS; ++i)
|
||||
+ {
|
||||
+ if (m_input_channels[i] == OMX_AUDIO_ChannelMax)
|
||||
+ break;
|
||||
+ if(i & 1)
|
||||
+ sum_R += coeff[i];
|
||||
+ else
|
||||
+ sum_L += coeff[i];
|
||||
+ }
|
||||
+
|
||||
+ r /= max(sum_L, sum_R);
|
||||
+ }
|
||||
+
|
||||
+ // the analogue volume is too quiet for some. Allow use of an advancedsetting to boost this (at risk of distortion)
|
||||
+ r *= gain;
|
||||
|
||||
- volume.bLinear = OMX_TRUE;
|
||||
- float hardwareVolume = std::max(VOLUME_MINIMUM, std::min(VOLUME_MAXIMUM, fVolume)) * 100.0f;
|
||||
- volume.sVolume.nValue = (int)hardwareVolume;
|
||||
+ OMX_CONFIG_BRCMAUDIODOWNMIXCOEFFICIENTS mix;
|
||||
+ OMX_INIT_STRUCTURE(mix);
|
||||
+ mix.nPortIndex = m_omx_mixer.GetInputPort();
|
||||
|
||||
- m_omx_render->SetConfig(OMX_IndexConfigAudioVolume, &volume);
|
||||
+ assert(sizeof(mix.coeff)/sizeof(mix.coeff[0]) == 16);
|
||||
|
||||
+ for(size_t i = 0; i < 16; ++i)
|
||||
+ mix.coeff[i] = static_cast<unsigned int>(0x10000 * (coeff[i] * r));
|
||||
+
|
||||
+ OMX_ERRORTYPE omx_err =
|
||||
+ m_omx_mixer.SetConfig(OMX_IndexConfigBrcmAudioDownmixCoefficients, &mix);
|
||||
+
|
||||
+ if(omx_err != OMX_ErrorNone)
|
||||
+ {
|
||||
+ CLog::Log(LOGERROR, "%s::%s - error setting OMX_IndexConfigBrcmAudioDownmixCoefficients, error 0x%08x\n",
|
||||
+ CLASSNAME, __func__, omx_err);
|
||||
+ return false;
|
||||
+ }
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ OMX_AUDIO_CONFIG_VOLUMETYPE volume;
|
||||
+ OMX_INIT_STRUCTURE(volume);
|
||||
+ volume.nPortIndex = m_omx_render->GetInputPort();
|
||||
+
|
||||
+ volume.bLinear = OMX_TRUE;
|
||||
+ float hardwareVolume = fVolume * gain * 100.0f;
|
||||
+ volume.sVolume.nValue = (int)(hardwareVolume + 0.5f);
|
||||
+
|
||||
+ OMX_ERRORTYPE omx_err =
|
||||
+ m_omx_render->SetConfig(OMX_IndexConfigAudioVolume, &volume);
|
||||
+ if(omx_err != OMX_ErrorNone)
|
||||
+ {
|
||||
+ CLog::Log(LOGERROR, "%s::%s - error setting OMX_IndexConfigAudioVolume, error 0x%08x\n",
|
||||
+ CLASSNAME, __func__, omx_err);
|
||||
+ return false;
|
||||
+ }
|
||||
+ }
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -885,16 +946,6 @@ unsigned int COMXAudio::AddPackets(const void* data, unsigned int len, double dt
|
||||
}
|
||||
}
|
||||
|
||||
- if ((m_pcm_input.nChannels > m_pcm_output.nChannels) &&g_guiSettings.GetBool("audiooutput.normalizelevels"))
|
||||
- {
|
||||
- OMX_AUDIO_CONFIG_VOLUMETYPE volume;
|
||||
- OMX_INIT_STRUCTURE(volume);
|
||||
- volume.nPortIndex = m_omx_mixer.GetInputPort();
|
||||
- volume.bLinear = OMX_FALSE;
|
||||
- volume.sVolume.nValue = (int)(g_advancedSettings.m_ac3Gain*100.0f+0.5f);
|
||||
- m_omx_mixer.SetConfig(OMX_IndexConfigAudioVolume, &volume);
|
||||
- }
|
||||
-
|
||||
memcpy(m_pcm_input.eChannelMapping, m_input_channels, sizeof(m_input_channels));
|
||||
m_pcm_input.nSamplingRate = m_format.m_sampleRate;
|
||||
|
||||
--
|
||||
1.7.10
|
||||
|
@ -0,0 +1,103 @@
|
||||
From 5f33482f3bd2993576c6f7f616df68a9d6846d81 Mon Sep 17 00:00:00 2001
|
||||
From: popcornmix <popcornmix@gmail.com>
|
||||
Date: Tue, 15 Jan 2013 20:46:07 +0000
|
||||
Subject: [PATCH] [rbp] Fix for audio out of sync part 2
|
||||
|
||||
---
|
||||
xbmc/cores/omxplayer/OMXAudio.cpp | 2 ++
|
||||
xbmc/cores/omxplayer/OMXVideo.cpp | 24 ++++++++++++++++++------
|
||||
xbmc/cores/omxplayer/OMXVideo.h | 2 +-
|
||||
3 files changed, 21 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/xbmc/cores/omxplayer/OMXAudio.cpp b/xbmc/cores/omxplayer/OMXAudio.cpp
|
||||
index 5399b10..1b2a1ef 100644
|
||||
--- a/xbmc/cores/omxplayer/OMXAudio.cpp
|
||||
+++ b/xbmc/cores/omxplayer/OMXAudio.cpp
|
||||
@@ -805,6 +805,8 @@ unsigned int COMXAudio::AddPackets(const void* data, unsigned int len, double dt
|
||||
if(m_av_clock->AudioStart())
|
||||
{
|
||||
omx_buffer->nFlags = OMX_BUFFERFLAG_STARTTIME;
|
||||
+ if(pts == DVD_NOPTS_VALUE)
|
||||
+ omx_buffer->nFlags |= OMX_BUFFERFLAG_TIME_UNKNOWN;
|
||||
|
||||
m_last_pts = pts;
|
||||
|
||||
diff --git a/xbmc/cores/omxplayer/OMXVideo.cpp b/xbmc/cores/omxplayer/OMXVideo.cpp
|
||||
index b11aa22..0464790 100644
|
||||
--- a/xbmc/cores/omxplayer/OMXVideo.cpp
|
||||
+++ b/xbmc/cores/omxplayer/OMXVideo.cpp
|
||||
@@ -84,7 +84,6 @@
|
||||
m_deinterlace = false;
|
||||
m_hdmi_clock_sync = false;
|
||||
m_first_frame = true;
|
||||
- m_contains_valid_pts= false;
|
||||
}
|
||||
|
||||
COMXVideo::~COMXVideo()
|
||||
@@ -666,6 +665,9 @@ bool COMXVideo::Open(CDVDStreamInfo &hints, OMXClock *clock, bool deinterlace, b
|
||||
m_deinterlace, m_hdmi_clock_sync);
|
||||
|
||||
m_first_frame = true;
|
||||
+ // start from assuming all recent frames had valid pts
|
||||
+ m_history_valid_pts = ~0;
|
||||
+
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -720,6 +722,14 @@ unsigned int COMXVideo::GetSize()
|
||||
return m_omx_decoder.GetInputBufferSize();
|
||||
}
|
||||
|
||||
+static unsigned count_bits(int32_t value)
|
||||
+{
|
||||
+ unsigned bits = 0;
|
||||
+ for(;value;++bits)
|
||||
+ value &= value - 1;
|
||||
+ return bits;
|
||||
+}
|
||||
+
|
||||
int COMXVideo::Decode(uint8_t *pData, int iSize, double dts, double pts)
|
||||
{
|
||||
OMX_ERRORTYPE omx_err;
|
||||
@@ -754,11 +764,11 @@ int COMXVideo::Decode(uint8_t *pData, int iSize, double dts, double pts)
|
||||
|
||||
omx_buffer->nFlags = 0;
|
||||
omx_buffer->nOffset = 0;
|
||||
-
|
||||
- // if a stream contains any pts values, then use those with UNKNOWNs. Otherwise try using dts.
|
||||
- if(pts != DVD_NOPTS_VALUE)
|
||||
- m_contains_valid_pts = true;
|
||||
- if(pts == DVD_NOPTS_VALUE && !m_contains_valid_pts)
|
||||
+ // some packed bitstream AVI files set almost all pts values to DVD_NOPTS_VALUE, but have a scattering of real pts values.
|
||||
+ // the valid pts values match the dts values.
|
||||
+ // if a stream has had more than 4 valid pts values in the last 16, the use UNKNOWN, otherwise use dts
|
||||
+ m_history_valid_pts = (m_history_valid_pts << 1) | (pts != DVD_NOPTS_VALUE);
|
||||
+ if(pts == DVD_NOPTS_VALUE && count_bits(m_history_valid_pts & 0xffff) < 4)
|
||||
pts = dts;
|
||||
|
||||
if(m_av_clock->VideoStart())
|
||||
@@ -766,6 +776,8 @@ int COMXVideo::Decode(uint8_t *pData, int iSize, double dts, double pts)
|
||||
// only send dts on first frame to get nearly correct starttime
|
||||
if(pts == DVD_NOPTS_VALUE)
|
||||
pts = dts;
|
||||
+ if(pts == DVD_NOPTS_VALUE)
|
||||
+ omx_buffer->nFlags |= OMX_BUFFERFLAG_TIME_UNKNOWN;
|
||||
omx_buffer->nFlags = OMX_BUFFERFLAG_STARTTIME;
|
||||
CLog::Log(LOGDEBUG, "OMXVideo::Decode VDec : setStartTime %f\n", (pts == DVD_NOPTS_VALUE ? 0.0 : pts) / DVD_TIME_BASE);
|
||||
m_av_clock->VideoStart(false);
|
||||
diff --git a/xbmc/cores/omxplayer/OMXVideo.h b/xbmc/cores/omxplayer/OMXVideo.h
|
||||
index 24cc6c8..180c2db 100644
|
||||
--- a/xbmc/cores/omxplayer/OMXVideo.h
|
||||
+++ b/xbmc/cores/omxplayer/OMXVideo.h
|
||||
@@ -90,7 +90,7 @@ class COMXVideo
|
||||
bool m_deinterlace;
|
||||
bool m_hdmi_clock_sync;
|
||||
bool m_first_frame;
|
||||
- bool m_contains_valid_pts;
|
||||
+ uint32_t m_history_valid_pts;
|
||||
|
||||
bool NaluFormatStartCodes(enum CodecID codec, uint8_t *in_extradata, int in_extrasize);
|
||||
};
|
||||
--
|
||||
1.7.10
|
||||
|
@ -0,0 +1,184 @@
|
||||
From 9f5810f159200d9736556fe28806768d9dfd6c7b Mon Sep 17 00:00:00 2001
|
||||
From: popcornmix <popcornmix@gmail.com>
|
||||
Date: Mon, 14 Jan 2013 20:46:29 +0000
|
||||
Subject: [PATCH] Send mute commands to players not using AE
|
||||
|
||||
---
|
||||
xbmc/Application.cpp | 38 +++++++++++++++++++++++++-----------
|
||||
xbmc/cores/IPlayer.h | 2 ++
|
||||
xbmc/cores/amlplayer/AMLPlayer.cpp | 5 +++++
|
||||
xbmc/cores/amlplayer/AMLPlayer.h | 2 ++
|
||||
xbmc/cores/omxplayer/OMXPlayer.cpp | 9 ++++++++-
|
||||
xbmc/cores/omxplayer/OMXPlayer.h | 3 +++
|
||||
6 files changed, 47 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp
|
||||
index 4c79137..b453e9f 100644
|
||||
--- a/xbmc/Application.cpp
|
||||
+++ b/xbmc/Application.cpp
|
||||
@@ -4117,6 +4117,13 @@ bool CApplication::PlayFile(const CFileItem& item, bool bRestart)
|
||||
SetPlaySpeed(iSpeed);
|
||||
}
|
||||
|
||||
+ // if player has volume control, set it.
|
||||
+ if (m_pPlayer && m_pPlayer->ControlsVolume())
|
||||
+ {
|
||||
+ m_pPlayer->SetVolume(g_settings.m_fVolumeLevel);
|
||||
+ m_pPlayer->SetMute(g_settings.m_bMute);
|
||||
+ }
|
||||
+
|
||||
if( IsPlayingAudio() )
|
||||
{
|
||||
if (g_windowManager.GetActiveWindow() == WINDOW_FULLSCREEN_VIDEO)
|
||||
@@ -5383,10 +5390,6 @@ void CApplication::SetHardwareVolume(float hardwareVolume)
|
||||
value = 1.0f;
|
||||
|
||||
CAEFactory::SetVolume(value);
|
||||
-
|
||||
- /* for platforms where we do not have AE */
|
||||
- if (!CAEFactory::GetEngine() && m_pPlayer)
|
||||
- m_pPlayer->SetVolume(g_settings.m_fVolumeLevel);
|
||||
}
|
||||
|
||||
int CApplication::GetVolume() const
|
||||
@@ -5401,6 +5404,13 @@ void CApplication::VolumeChanged() const
|
||||
data["volume"] = GetVolume();
|
||||
data["muted"] = g_settings.m_bMute;
|
||||
CAnnouncementManager::Announce(Application, "xbmc", "OnVolumeChanged", data);
|
||||
+
|
||||
+ // if player has volume control, set it.
|
||||
+ if (m_pPlayer && m_pPlayer->ControlsVolume())
|
||||
+ {
|
||||
+ m_pPlayer->SetVolume(g_settings.m_fVolumeLevel);
|
||||
+ m_pPlayer->SetMute(g_settings.m_bMute);
|
||||
+ }
|
||||
}
|
||||
|
||||
int CApplication::GetSubtitleDelay() const
|
||||
@@ -5437,13 +5447,19 @@ void CApplication::SetPlaySpeed(int iSpeed)
|
||||
m_iPlaySpeed = iSpeed;
|
||||
|
||||
m_pPlayer->ToFFRW(m_iPlaySpeed);
|
||||
- if (m_iPlaySpeed == 1)
|
||||
- { // restore volume
|
||||
- m_pPlayer->SetVolume(VOLUME_MAXIMUM);
|
||||
- }
|
||||
- else
|
||||
- { // mute volume
|
||||
- m_pPlayer->SetVolume(VOLUME_MINIMUM);
|
||||
+
|
||||
+ // if player has volume control, set it.
|
||||
+ if (m_pPlayer->ControlsVolume())
|
||||
+ {
|
||||
+ if (m_iPlaySpeed == 1)
|
||||
+ { // restore volume
|
||||
+ m_pPlayer->SetVolume(VOLUME_MAXIMUM);
|
||||
+ }
|
||||
+ else
|
||||
+ { // mute volume
|
||||
+ m_pPlayer->SetVolume(VOLUME_MINIMUM);
|
||||
+ }
|
||||
+ m_pPlayer->SetMute(g_settings.m_bMute);
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/xbmc/cores/IPlayer.h b/xbmc/cores/IPlayer.h
|
||||
index 2042026..f2aa227 100644
|
||||
--- a/xbmc/cores/IPlayer.h
|
||||
+++ b/xbmc/cores/IPlayer.h
|
||||
@@ -114,6 +114,8 @@ class IPlayer
|
||||
virtual void SeekPercentage(float fPercent = 0){}
|
||||
virtual float GetPercentage(){ return 0;}
|
||||
virtual float GetCachePercentage(){ return 0;}
|
||||
+ virtual bool ControlsVolume(){ return false;}
|
||||
+ virtual void SetMute(bool bOnOff){}
|
||||
virtual void SetVolume(float volume){}
|
||||
virtual void SetDynamicRangeCompression(long drc){}
|
||||
virtual void GetAudioInfo( CStdString& strAudioInfo) = 0;
|
||||
diff --git a/xbmc/cores/amlplayer/AMLPlayer.cpp b/xbmc/cores/amlplayer/AMLPlayer.cpp
|
||||
index 13014e2..0aee9a9 100644
|
||||
--- a/xbmc/cores/amlplayer/AMLPlayer.cpp
|
||||
+++ b/xbmc/cores/amlplayer/AMLPlayer.cpp
|
||||
@@ -777,6 +777,11 @@ float CAMLPlayer::GetPercentage()
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
+void CAMLPlayer::SetMute(bool bOnOff)
|
||||
+{
|
||||
+ // TODO: set mute
|
||||
+}
|
||||
+
|
||||
void CAMLPlayer::SetVolume(float volume)
|
||||
{
|
||||
CLog::Log(LOGDEBUG, "CAMLPlayer::SetVolume(%f)", volume);
|
||||
diff --git a/xbmc/cores/amlplayer/AMLPlayer.h b/xbmc/cores/amlplayer/AMLPlayer.h
|
||||
index 54d8fae..39c8913 100644
|
||||
--- a/xbmc/cores/amlplayer/AMLPlayer.h
|
||||
+++ b/xbmc/cores/amlplayer/AMLPlayer.h
|
||||
@@ -80,6 +80,8 @@ class CAMLPlayer : public IPlayer, public CThread
|
||||
virtual bool SeekScene(bool bPlus = true);
|
||||
virtual void SeekPercentage(float fPercent = 0.0f);
|
||||
virtual float GetPercentage();
|
||||
+ virtual void SetMute(bool bOnOff);
|
||||
+ virtual bool ControlsVolume() {return true;}
|
||||
virtual void SetVolume(float volume);
|
||||
virtual void SetDynamicRangeCompression(long drc) {}
|
||||
virtual void GetAudioInfo(CStdString &strAudioInfo);
|
||||
diff --git a/xbmc/cores/omxplayer/OMXPlayer.cpp b/xbmc/cores/omxplayer/OMXPlayer.cpp
|
||||
index aac591c..ea02693 100644
|
||||
--- a/xbmc/cores/omxplayer/OMXPlayer.cpp
|
||||
+++ b/xbmc/cores/omxplayer/OMXPlayer.cpp
|
||||
@@ -460,6 +460,7 @@ bool COMXPlayer::OpenFile(const CFileItem &file, const CPlayerOptions &options)
|
||||
m_UpdateApplication = 0;
|
||||
m_offset_pts = 0;
|
||||
m_current_volume = 0;
|
||||
+ m_current_mute = false;
|
||||
m_change_volume = true;
|
||||
|
||||
m_item = file;
|
||||
@@ -1262,7 +1263,7 @@ void COMXPlayer::Process()
|
||||
|
||||
if(m_change_volume)
|
||||
{
|
||||
- m_player_audio.SetCurrentVolume(m_current_volume);
|
||||
+ m_player_audio.SetCurrentVolume(m_current_mute ? VOLUME_MINIMUM : m_current_volume);
|
||||
m_change_volume = false;
|
||||
}
|
||||
|
||||
@@ -4134,6 +4135,12 @@ void COMXPlayer::GetVideoRect(CRect& SrcRect, CRect& DestRect)
|
||||
g_renderManager.GetVideoRect(SrcRect, DestRect);
|
||||
}
|
||||
|
||||
+void COMXPlayer::SetMute(bool bOnOff)
|
||||
+{
|
||||
+ m_current_mute = bOnOff;
|
||||
+ m_change_volume = true;
|
||||
+}
|
||||
+
|
||||
void COMXPlayer::SetVolume(float fVolume)
|
||||
{
|
||||
m_current_volume = fVolume;
|
||||
diff --git a/xbmc/cores/omxplayer/OMXPlayer.h b/xbmc/cores/omxplayer/OMXPlayer.h
|
||||
index 3a2a63d..d606e84 100644
|
||||
--- a/xbmc/cores/omxplayer/OMXPlayer.h
|
||||
+++ b/xbmc/cores/omxplayer/OMXPlayer.h
|
||||
@@ -227,6 +227,8 @@ class COMXPlayer : public IPlayer, public CThread, public IDVDPlayer
|
||||
virtual float GetPercentage();
|
||||
virtual float GetCachePercentage();
|
||||
|
||||
+ virtual void SetMute(bool bOnOff);
|
||||
+ virtual bool ControlsVolume() {return true;}
|
||||
virtual void SetVolume(float fVolume);
|
||||
virtual void SetDynamicRangeCompression(long drc) {}
|
||||
virtual void GetAudioInfo(CStdString &strAudioInfo);
|
||||
@@ -484,6 +486,7 @@ class COMXPlayer : public IPlayer, public CThread, public IDVDPlayer
|
||||
CEvent m_ready;
|
||||
|
||||
float m_current_volume;
|
||||
+ bool m_current_mute;
|
||||
bool m_change_volume;
|
||||
CDVDOverlayContainer m_overlayContainer;
|
||||
ECacheState m_caching;
|
||||
--
|
||||
1.7.10
|
||||
|
@ -0,0 +1,95 @@
|
||||
From 67319ef389d0b664c92fa1753ba2bbdf4257dfbe Mon Sep 17 00:00:00 2001
|
||||
From: Stephan Raue <stephan@openelec.tv>
|
||||
Date: Sun, 13 Jan 2013 19:21:34 +0100
|
||||
Subject: [PATCH] [automake] remove long time deprecated automake macros and
|
||||
variables which are removed finally in automake-1.13
|
||||
|
||||
Signed-off-by: Stephan Raue <stephan@openelec.tv>
|
||||
---
|
||||
lib/enca/configure.ac | 3 +--
|
||||
lib/libdvd/libdvdcss/configure.ac | 2 +-
|
||||
lib/libmad/configure.ac | 2 +-
|
||||
lib/libmicrohttpd/configure.ac | 2 +-
|
||||
xbmc/visualizations/Goom/goom2k4-0/gtk-gui-devel/configure.in | 3 +--
|
||||
5 files changed, 5 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/lib/enca/configure.ac b/lib/enca/configure.ac
|
||||
index e4aad8c..41434df 100644
|
||||
--- a/lib/enca/configure.ac
|
||||
+++ b/lib/enca/configure.ac
|
||||
@@ -24,7 +24,7 @@ AC_CONFIG_FILES( \
|
||||
test/Makefile \
|
||||
tools/Makefile)
|
||||
|
||||
-AM_CONFIG_HEADER(config.h)
|
||||
+AC_CONFIG_HEADERS(config.h)
|
||||
AM_INIT_AUTOMAKE([1.8 gnits check-news dist-bzip2])
|
||||
AM_ACLOCAL_INCLUDE(m4)
|
||||
AM_MAINTAINER_MODE
|
||||
@@ -40,7 +40,6 @@ AC_GNU_SOURCE
|
||||
AC_AIX
|
||||
AC_ISC_POSIX
|
||||
AC_PROG_LIBTOOL
|
||||
-AM_PROG_CC_STDC
|
||||
AM_PROG_CC_C_O
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_LN_S
|
||||
diff --git a/lib/libdvd/libdvdcss/configure.ac b/lib/libdvd/libdvdcss/configure.ac
|
||||
index 1b9ff8b..a40a161 100644
|
||||
--- a/lib/libdvd/libdvdcss/configure.ac
|
||||
+++ b/lib/libdvd/libdvdcss/configure.ac
|
||||
@@ -5,7 +5,7 @@ AC_CONFIG_AUX_DIR(.auto)
|
||||
AC_CANONICAL_SYSTEM
|
||||
|
||||
AM_INIT_AUTOMAKE(libdvdcss, 1.2.10)
|
||||
-AM_CONFIG_HEADER(config.h)
|
||||
+AC_CONFIG_HEADERS(config.h)
|
||||
|
||||
AC_PROG_CC
|
||||
AC_STDC_HEADERS
|
||||
diff --git a/lib/libmad/configure.ac b/lib/libmad/configure.ac
|
||||
index bc19d8e..e137ca6 100644
|
||||
--- a/lib/libmad/configure.ac
|
||||
+++ b/lib/libmad/configure.ac
|
||||
@@ -28,7 +28,7 @@ AC_CONFIG_SRCDIR([decoder.h])
|
||||
|
||||
AM_INIT_AUTOMAKE
|
||||
|
||||
-AM_CONFIG_HEADER([config.h])
|
||||
+AC_CONFIG_HEADERS([config.h])
|
||||
|
||||
dnl System type.
|
||||
|
||||
diff --git a/lib/libmicrohttpd/configure.ac b/lib/libmicrohttpd/configure.ac
|
||||
index b314357..c00e55b 100644
|
||||
--- a/lib/libmicrohttpd/configure.ac
|
||||
+++ b/lib/libmicrohttpd/configure.ac
|
||||
@@ -23,7 +23,7 @@
|
||||
AC_PREREQ(2.57)
|
||||
AC_INIT([libmicrohttpd], [0.4.5],[libmicrohttpd@gnu.org])
|
||||
AM_INIT_AUTOMAKE([libmicrohttpd], [0.4.5])
|
||||
-AM_CONFIG_HEADER([MHD_config.h])
|
||||
+AC_CONFIG_HEADERS([MHD_config.h])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
AH_TOP([#define _GNU_SOURCE 1])
|
||||
|
||||
diff --git a/xbmc/visualizations/Goom/goom2k4-0/gtk-gui-devel/configure.in b/xbmc/visualizations/Goom/goom2k4-0/gtk-gui-devel/configure.in
|
||||
index 4e94d4b..cc0646f 100644
|
||||
--- a/xbmc/visualizations/Goom/goom2k4-0/gtk-gui-devel/configure.in
|
||||
+++ b/xbmc/visualizations/Goom/goom2k4-0/gtk-gui-devel/configure.in
|
||||
@@ -2,11 +2,10 @@ dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_INIT(configure.in)
|
||||
AM_INIT_AUTOMAKE(goom2, 0.1)
|
||||
-AM_CONFIG_HEADER(config.h)
|
||||
+AC_CONFIG_HEADERS(config.h)
|
||||
|
||||
AC_ISC_POSIX
|
||||
AC_PROG_CC
|
||||
-AM_PROG_CC_STDC
|
||||
AC_HEADER_STDC
|
||||
AC_C_BIGENDIAN
|
||||
|
||||
--
|
||||
1.7.10
|
||||
|
@ -1,32 +0,0 @@
|
||||
diff -Naur xbmc-f70eb43/lib/enca/configure.ac xbmc-f70eb43.patch/lib/enca/configure.ac
|
||||
--- xbmc-f70eb43/lib/enca/configure.ac 2013-01-11 17:06:57.000000000 +0100
|
||||
+++ xbmc-f70eb43.patch/lib/enca/configure.ac 2013-01-12 08:44:23.957554815 +0100
|
||||
@@ -24,7 +24,7 @@
|
||||
test/Makefile \
|
||||
tools/Makefile)
|
||||
|
||||
-AM_CONFIG_HEADER(config.h)
|
||||
+AC_CONFIG_HEADERS(config.h)
|
||||
AM_INIT_AUTOMAKE([1.8 gnits check-news dist-bzip2])
|
||||
AM_ACLOCAL_INCLUDE(m4)
|
||||
AM_MAINTAINER_MODE
|
||||
@@ -40,7 +40,6 @@
|
||||
AC_AIX
|
||||
AC_ISC_POSIX
|
||||
AC_PROG_LIBTOOL
|
||||
-AM_PROG_CC_STDC
|
||||
AM_PROG_CC_C_O
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_LN_S
|
||||
diff -Naur xbmc-f70eb43/lib/libdvd/libdvdcss/configure.ac xbmc-f70eb43.patch/lib/libdvd/libdvdcss/configure.ac
|
||||
--- xbmc-f70eb43/lib/libdvd/libdvdcss/configure.ac 2013-01-11 17:06:58.000000000 +0100
|
||||
+++ xbmc-f70eb43.patch/lib/libdvd/libdvdcss/configure.ac 2013-01-12 08:45:45.361975774 +0100
|
||||
@@ -5,7 +5,7 @@
|
||||
AC_CANONICAL_SYSTEM
|
||||
|
||||
AM_INIT_AUTOMAKE(libdvdcss, 1.2.10)
|
||||
-AM_CONFIG_HEADER(config.h)
|
||||
+AC_CONFIG_HEADERS(config.h)
|
||||
|
||||
AC_PROG_CC
|
||||
AC_STDC_HEADERS
|
Loading…
x
Reference in New Issue
Block a user