diff --git a/packages/addons/service/downloadmanager/transmission/addon b/packages/addons/service/downloadmanager/transmission/addon index c388128e33..e63645d74e 100755 --- a/packages/addons/service/downloadmanager/transmission/addon +++ b/packages/addons/service/downloadmanager/transmission/addon @@ -24,6 +24,7 @@ mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/bin cp $PKG_BUILD/daemon/transmission-daemon $ADDON_BUILD/$PKG_ADDON_ID/bin + cp $PKG_BUILD/daemon/transmission-remote $ADDON_BUILD/$PKG_ADDON_ID/bin mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/web cp -R $PKG_BUILD/web/* $ADDON_BUILD/$PKG_ADDON_ID/web diff --git a/packages/addons/service/multimedia/tvheadend/source/bin/tvheadend.start b/packages/addons/service/multimedia/tvheadend/source/bin/tvheadend.start index 3fa1dbfec5..d39b22dc8f 100755 --- a/packages/addons/service/multimedia/tvheadend/source/bin/tvheadend.start +++ b/packages/addons/service/multimedia/tvheadend/source/bin/tvheadend.start @@ -134,9 +134,9 @@ mkdir -p $ADDON_HOME fi if [ "$PRELOAD_CAPMT_CA" == "true" ] ; then logger -t Tvheadend "### Preloading capmt_ca.so library ###" - LD_PRELOAD=$ADDON_DIR/bin/capmt_ca.so exec $ADDON_BIN $TVHEADEND_ARG &>$LOG_FILE + LD_PRELOAD=$ADDON_DIR/bin/capmt_ca.so $ADDON_BIN $TVHEADEND_ARG &>$LOG_FILE else - exec $ADDON_BIN $TVHEADEND_ARG &>$LOG_FILE + $ADDON_BIN $TVHEADEND_ARG &>$LOG_FILE fi done & fi diff --git a/packages/addons/service/softcam/oscam/changelog.txt b/packages/addons/service/softcam/oscam/changelog.txt index 0501e20999..a9366c8500 100644 --- a/packages/addons/service/softcam/oscam/changelog.txt +++ b/packages/addons/service/softcam/oscam/changelog.txt @@ -1,3 +1,6 @@ +3.0.7 +- update to oscam-8357 + 3.0.6 - update to oscam-8334 diff --git a/packages/addons/service/softcam/oscam/meta b/packages/addons/service/softcam/oscam/meta index 02c9873cfb..9e33856c44 100644 --- a/packages/addons/service/softcam/oscam/meta +++ b/packages/addons/service/softcam/oscam/meta @@ -20,8 +20,8 @@ ################################################################################ PKG_NAME="oscam" -PKG_VERSION="8334" -PKG_REV="6" +PKG_VERSION="8357" +PKG_REV="7" PKG_ARCH="any" PKG_LICENSE="GPL" PKG_SITE="http://www.streamboard.tv/oscam/wiki" diff --git a/packages/addons/service/softcam/oscam/source/bin/oscam.start b/packages/addons/service/softcam/oscam/source/bin/oscam.start index c694418545..c46241aad8 100755 --- a/packages/addons/service/softcam/oscam/source/bin/oscam.start +++ b/packages/addons/service/softcam/oscam/source/bin/oscam.start @@ -91,7 +91,7 @@ if [ ! "$(pidof oscam)" ]; then # use ". " because of variable export . $driver_dvb done - LD_LIBRARY_PATH="$ADDON_DIR/lib:$LD_LIBRARY_PATH" exec oscam $OSCAM_ARG > /dev/null 2>&1 + LD_LIBRARY_PATH="$ADDON_DIR/lib:$LD_LIBRARY_PATH" oscam $OSCAM_ARG > /dev/null 2>&1 sleep 1 done & fi diff --git a/packages/linux/patches/3.7.8/linux-990.04-hda-Fix-broken-workaround-for-HDMI-SPDIF-confli.patch b/packages/linux/patches/3.7.8/linux-990.04-hda-Fix-broken-workaround-for-HDMI-SPDIF-confli.patch new file mode 100644 index 0000000000..4261a2d877 --- /dev/null +++ b/packages/linux/patches/3.7.8/linux-990.04-hda-Fix-broken-workaround-for-HDMI-SPDIF-confli.patch @@ -0,0 +1,139 @@ +From ea9b43addc4d90ca5b029f47f85ca152320a1e8d Mon Sep 17 00:00:00 2001 +From: Takashi Iwai +Date: Tue, 12 Feb 2013 17:02:41 +0100 +Subject: [PATCH] ALSA: hda - Fix broken workaround for HDMI/SPDIF conflicts + +The commit [dcda58061: ALSA: hda - Add workaround for conflicting +IEC958 controls] introduced a workaround for cards that have both +SPDIF and HDMI devices for giving device=1 to SPDIF control elements. +It turned out, however, that this workaround doesn't work well - + +- The workaround checks only conflicts in a single codec, but SPDIF + and HDMI are provided by multiple codecs in many cases, and + +- ALSA mixer abstraction doesn't care about the device number in ctl + elements, thus you'll get errors from amixer such as + % amixer scontrols -c 0 + ALSA lib simple_none.c:1551:(simple_add1) helem (MIXER,'IEC958 + Playback Switch',0,1,0) appears twice or more + amixer: Mixer hw:0 load error: Invalid argument + +This patch fixes the previous broken workaround. Instead of changing +the device number of SPDIF ctl elements, shift the element indices of +such controls up to 16. Also, the conflict check is performed over +all codecs found on the bus. + +HDMI devices will be put to dev=0,index=0 as before. Only the +conflicting SPDIF device is moved to a different place. The new place +of SPDIF device is supposed by the updated alsa-lib HDA-Intel.conf, +respectively. + +Reported-by: Stephan Raue +Reported-by: Anssi Hannula +Cc: [v3.8] +Signed-off-by: Takashi Iwai +--- + sound/pci/hda/hda_codec.c | 43 +++++++++++++++++++++---------------------- + sound/pci/hda/hda_codec.h | 3 ++- + 2 files changed, 23 insertions(+), 23 deletions(-) + +diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c +index e80f835..04b5738 100644 +--- a/sound/pci/hda/hda_codec.c ++++ b/sound/pci/hda/hda_codec.c +@@ -2332,11 +2332,12 @@ struct snd_kcontrol *snd_hda_find_mixer_ctl(struct hda_codec *codec, + EXPORT_SYMBOL_HDA(snd_hda_find_mixer_ctl); + + static int find_empty_mixer_ctl_idx(struct hda_codec *codec, const char *name, +- int dev) ++ int start_idx) + { +- int idx; +- for (idx = 0; idx < 16; idx++) { /* 16 ctlrs should be large enough */ +- if (!find_mixer_ctl(codec, name, dev, idx)) ++ int i, idx; ++ /* 16 ctlrs should be large enough */ ++ for (i = 0, idx = start_idx; i < 16; i++, idx++) { ++ if (!find_mixer_ctl(codec, name, 0, idx)) + return idx; + } + return -EBUSY; +@@ -3305,30 +3306,29 @@ int snd_hda_create_dig_out_ctls(struct hda_codec *codec, + int err; + struct snd_kcontrol *kctl; + struct snd_kcontrol_new *dig_mix; +- int idx, dev = 0; +- const int spdif_pcm_dev = 1; ++ int idx = 0; ++ const int spdif_index = 16; + struct hda_spdif_out *spdif; ++ struct hda_bus *bus = codec->bus; + +- if (codec->primary_dig_out_type == HDA_PCM_TYPE_HDMI && ++ if (bus->primary_dig_out_type == HDA_PCM_TYPE_HDMI && + type == HDA_PCM_TYPE_SPDIF) { +- dev = spdif_pcm_dev; +- } else if (codec->primary_dig_out_type == HDA_PCM_TYPE_SPDIF && ++ idx = spdif_index; ++ } else if (bus->primary_dig_out_type == HDA_PCM_TYPE_SPDIF && + type == HDA_PCM_TYPE_HDMI) { +- for (idx = 0; idx < codec->spdif_out.used; idx++) { +- spdif = snd_array_elem(&codec->spdif_out, idx); +- for (dig_mix = dig_mixes; dig_mix->name; dig_mix++) { +- kctl = find_mixer_ctl(codec, dig_mix->name, 0, idx); +- if (!kctl) +- break; +- kctl->id.device = spdif_pcm_dev; +- } ++ /* suppose a single SPDIF device */ ++ for (dig_mix = dig_mixes; dig_mix->name; dig_mix++) { ++ kctl = find_mixer_ctl(codec, dig_mix->name, 0, 0); ++ if (!kctl) ++ break; ++ kctl->id.index = spdif_index; + } +- codec->primary_dig_out_type = HDA_PCM_TYPE_HDMI; ++ bus->primary_dig_out_type = HDA_PCM_TYPE_HDMI; + } +- if (!codec->primary_dig_out_type) +- codec->primary_dig_out_type = type; ++ if (!bus->primary_dig_out_type) ++ bus->primary_dig_out_type = type; + +- idx = find_empty_mixer_ctl_idx(codec, "IEC958 Playback Switch", dev); ++ idx = find_empty_mixer_ctl_idx(codec, "IEC958 Playback Switch", idx); + if (idx < 0) { + printk(KERN_ERR "hda_codec: too many IEC958 outputs\n"); + return -EBUSY; +@@ -3338,7 +3338,6 @@ int snd_hda_create_dig_out_ctls(struct hda_codec *codec, + kctl = snd_ctl_new1(dig_mix, codec); + if (!kctl) + return -ENOMEM; +- kctl->id.device = dev; + kctl->id.index = idx; + kctl->private_value = codec->spdif_out.used - 1; + err = snd_hda_ctl_add(codec, associated_nid, kctl); +diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h +index e8c9442..23ca172 100644 +--- a/sound/pci/hda/hda_codec.h ++++ b/sound/pci/hda/hda_codec.h +@@ -679,6 +679,8 @@ struct hda_bus { + unsigned int response_reset:1; /* controller was reset */ + unsigned int in_reset:1; /* during reset operation */ + unsigned int power_keep_link_on:1; /* don't power off HDA link */ ++ ++ int primary_dig_out_type; /* primary digital out PCM type */ + }; + + /* +@@ -846,7 +848,6 @@ struct hda_codec { + struct mutex hash_mutex; + struct snd_array spdif_out; + unsigned int spdif_in_enable; /* SPDIF input enable? */ +- int primary_dig_out_type; /* primary digital out PCM type */ + const hda_nid_t *slave_dig_outs; /* optional digital out slave widgets */ + struct snd_array init_pins; /* initial (BIOS) pin configurations */ + struct snd_array driver_pins; /* pin configs set by codec parser */ +-- +1.7.10 + diff --git a/packages/linux/patches/3.7.8/linux-990.04-hda-Fix_the_workaround_for_conflicting_IEC958_controls.patch b/packages/linux/patches/3.7.8/linux-990.04-hda-Fix_the_workaround_for_conflicting_IEC958_controls.patch deleted file mode 100644 index b042469a87..0000000000 --- a/packages/linux/patches/3.7.8/linux-990.04-hda-Fix_the_workaround_for_conflicting_IEC958_controls.patch +++ /dev/null @@ -1,94 +0,0 @@ -From 1aec20670bfd1c0680d2ea4b29c4e5d8f1bdb43f Mon Sep 17 00:00:00 2001 -From: Anssi Hannula -Date: Sat, 9 Feb 2013 00:19:09 +0200 -Subject: [PATCH] ALSA: hda - Fix the workaround for conflicting IEC958 - controls - -Commit dcda5806165c155d90b9aa466a1602cf4726012b ("ALSA: hda - Add -workaround for conflicting IEC958 controls") added a workaround for -cards that have both an S/PDIF and an HDMI device, so that S/PDIF IEC958 -controls will be moved to device=1 on such cards. - -However, the workaround did not take it into account that the S/PDIF and -HDMI devices may be on different codecs of the same card. Currently this -is always the case, and the workaround therefore fails to work. - -Fix the workaround to handle card-wide IEC958 conflicts. - -Reported-by: Stephan Raue -Signed-off-by: Anssi Hannula ---- - sound/pci/hda/hda_codec.c | 27 +++++++++++++++------------ - sound/pci/hda/hda_codec.h | 4 +++- - 2 files changed, 18 insertions(+), 13 deletions(-) - -diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c -index 822df97..fe5d6fc 100644 ---- a/sound/pci/hda/hda_codec.c -+++ b/sound/pci/hda/hda_codec.c -@@ -3135,25 +3135,28 @@ int snd_hda_create_dig_out_ctls(struct hda_codec *codec, - int idx, dev = 0; - const int spdif_pcm_dev = 1; - struct hda_spdif_out *spdif; -+ struct hda_codec *c; - -- if (codec->primary_dig_out_type == HDA_PCM_TYPE_HDMI && -+ if (codec->bus->primary_dig_out_type == HDA_PCM_TYPE_HDMI && - type == HDA_PCM_TYPE_SPDIF) { - dev = spdif_pcm_dev; -- } else if (codec->primary_dig_out_type == HDA_PCM_TYPE_SPDIF && -+ } else if (codec->bus->primary_dig_out_type == HDA_PCM_TYPE_SPDIF && - type == HDA_PCM_TYPE_HDMI) { -- for (idx = 0; idx < codec->spdif_out.used; idx++) { -- spdif = snd_array_elem(&codec->spdif_out, idx); -- for (dig_mix = dig_mixes; dig_mix->name; dig_mix++) { -- kctl = find_mixer_ctl(codec, dig_mix->name, 0, idx); -- if (!kctl) -- break; -- kctl->id.device = spdif_pcm_dev; -+ list_for_each_entry(c, &codec->bus->codec_list, list) { -+ for (idx = 0; idx < c->spdif_out.used; idx++) { -+ spdif = snd_array_elem(&c->spdif_out, idx); -+ for (dig_mix = dig_mixes; dig_mix->name; dig_mix++) { -+ kctl = find_mixer_ctl(c, dig_mix->name, 0, idx); -+ if (!kctl) -+ break; -+ kctl->id.device = spdif_pcm_dev; -+ } - } - } -- codec->primary_dig_out_type = HDA_PCM_TYPE_HDMI; -+ codec->bus->primary_dig_out_type = HDA_PCM_TYPE_HDMI; - } -- if (!codec->primary_dig_out_type) -- codec->primary_dig_out_type = type; -+ if (!codec->bus->primary_dig_out_type) -+ codec->bus->primary_dig_out_type = type; - - idx = find_empty_mixer_ctl_idx(codec, "IEC958 Playback Switch", dev); - if (idx < 0) { -diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h -index 8665540..ab807f7 100644 ---- a/sound/pci/hda/hda_codec.h -+++ b/sound/pci/hda/hda_codec.h -@@ -671,6 +671,9 @@ struct hda_bus { - unsigned int response_reset:1; /* controller was reset */ - unsigned int in_reset:1; /* during reset operation */ - unsigned int power_keep_link_on:1; /* don't power off HDA link */ -+ -+ /* primary digital out PCM type */ -+ int primary_dig_out_type; - }; - - /* -@@ -837,7 +840,6 @@ struct hda_codec { - struct mutex hash_mutex; - struct snd_array spdif_out; - unsigned int spdif_in_enable; /* SPDIF input enable? */ -- int primary_dig_out_type; /* primary digital out PCM type */ - const hda_nid_t *slave_dig_outs; /* optional digital out slave widgets */ - struct snd_array init_pins; /* initial (BIOS) pin configurations */ - struct snd_array driver_pins; /* pin configs set by codec parser */ --- -1.7.10 - diff --git a/packages/linux/patches/3.7.8/linux-990.06-hda-Avoid-outputting-HDMI-audio-before-prepare-.patch b/packages/linux/patches/3.7.8/linux-990.06-hda-Avoid-outputting-HDMI-audio-before-prepare-.patch new file mode 100644 index 0000000000..ac59d4a7a1 --- /dev/null +++ b/packages/linux/patches/3.7.8/linux-990.06-hda-Avoid-outputting-HDMI-audio-before-prepare-.patch @@ -0,0 +1,76 @@ +From a6024295fd3290a8c9c5519a03316081ee82378a Mon Sep 17 00:00:00 2001 +From: Anssi Hannula +Date: Sat, 16 Feb 2013 17:42:46 +0200 +Subject: [PATCH] ALSA: hda - Avoid outputting HDMI audio before prepare() and + after close() + +Some HDMI codecs (at least NVIDIA 0x10de000b:0x10de0101:0x100100) start +transmitting an empty audio stream as soon as PIN_OUT and AC_DIG1_ENABLE +are enabled. + +Since commit 6169b673618bf0b2518ce413b54925782a603f06 ("ALSA: hda - +Always turn on pins for HDMI/DP") this happens at first open() time, and +will continue even after close(). + +Additionally, some codecs (at least Intel PantherPoint HDMI) currently +continue transmitting HDMI audio even after close() in case some actual +audio was output after open() (this happens regardless of PIN_OUT). + +Empty HDMI audio transmission when not intended has the effect that a +possible HDMI audio sink/receiver may prefer the empty HDMI audio stream +over an actual audio stream on its S/PDIF inputs. + +To avoid the issue before first prepare(), set stream format to 0 on +codec initialization. 0 is not a valid format value for HDMI and will +prevent the audio stream from being output. + +Additionally, at close() time, make sure that the stream is cleaned up. +This will ensure that the format is reset to 0 at that time, preventing +audio from being output in that case. + +Thanks to OpenELEC developers and users for their help in investigating +this issue on the affected NVIDIA "ION2" hardware. Testing of the final +version on NVIDIA ION2 was done by OpenELEC user "MrXIII". Testing on +Intel PantherPoint was done by myself. + +Signed-off-by: Anssi Hannula +Cc: stable@vger.kernel.org +--- + sound/pci/hda/patch_hdmi.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c +index 807a2aa..bcb83c7 100644 +--- a/sound/pci/hda/patch_hdmi.c ++++ b/sound/pci/hda/patch_hdmi.c +@@ -1253,6 +1253,14 @@ static int hdmi_add_cvt(struct hda_codec *codec, hda_nid_t cvt_nid) + if (err < 0) + return err; + ++ /* ++ * Some HDMI codecs (at least NVIDIA 0x10de000b:0x10de0101:0x100100) ++ * start transmitting an empty audio stream as soon as PIN_OUT and ++ * AC_DIG1_ENABLE are enabled, which happens at open() time. ++ * To avoid that, set format to 0, which is not valid for HDMI. ++ */ ++ snd_hda_codec_write(codec, cvt_nid, 0, AC_VERB_SET_STREAM_FORMAT, 0); ++ + spec->num_cvts++; + + return 0; +@@ -1372,6 +1380,12 @@ static int hdmi_pcm_close(struct hda_pcm_stream *hinfo, + struct hdmi_spec_per_pin *per_pin; + + if (hinfo->nid) { ++ /* ++ * Make sure no empty audio is output after this point by ++ * setting stream format to 0, which is not valid for HDMI. ++ */ ++ __snd_hda_codec_cleanup_stream(codec, hinfo->nid, 1); ++ + cvt_idx = cvt_nid_to_cvt_index(spec, hinfo->nid); + if (snd_BUG_ON(cvt_idx < 0)) + return -EINVAL; +-- +1.7.10 + diff --git a/packages/linux/patches/3.7.8/linux-990.06-hda-fix-broken-audio-over-optical-on-alc662.patch b/packages/linux/patches/3.7.8/linux-990.06-hda-fix-broken-audio-over-optical-on-alc662.patch deleted file mode 100644 index 0c7f1922f0..0000000000 --- a/packages/linux/patches/3.7.8/linux-990.06-hda-fix-broken-audio-over-optical-on-alc662.patch +++ /dev/null @@ -1,93 +0,0 @@ -From 09c206b7ee18b50d81916697150bd510f198716d Mon Sep 17 00:00:00 2001 -From: Stefan Saraev -Date: Fri, 15 Feb 2013 20:19:48 +0200 -Subject: [PATCH] hda: fix broken audio over optical on alc662+ - - original commit: - - > commit 2626d16bbdedcd64c6af3c519aecd5a6f2356e58 - > Author: Takashi Iwai - > Date: Fri Dec 14 10:22:35 2012 +0100 - > - > ALSA: hda - Always turn on pins for HDMI/DP - > - > commit 6169b673618bf0b2518ce413b54925782a603f06 upstream. - > - > We've seen the broken HDMI *video* output on some machines with GM965, - > and the debugging session pointed that the culprit is the disabled - > audio output pins. Toggling these pins dynamically on demand caused - > flickering of HDMI TV. - > - > This patch changes the behavior to keep the pin ON constantly. - > - > Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=51421 - > - > Signed-off-by: Takashi Iwai - > Signed-off-by: Greg Kroah-Hartman - - for now we revert the above commit, until we have a propper fix ---- - sound/pci/hda/patch_hdmi.c | 18 ++++++++++++++---- - 1 files changed, 14 insertions(+), 4 deletions(-) - -diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c -index 791ef80..2587119 100644 ---- a/sound/pci/hda/patch_hdmi.c -+++ b/sound/pci/hda/patch_hdmi.c -@@ -431,11 +431,9 @@ static void hdmi_init_pin(struct hda_codec *codec, hda_nid_t pin_nid) - if (get_wcaps(codec, pin_nid) & AC_WCAP_OUT_AMP) - snd_hda_codec_write(codec, pin_nid, 0, - AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE); -- /* Enable pin out: some machines with GM965 gets broken output when -- * the pin is disabled or changed while using with HDMI -- */ -+ /* Disable pin out until stream is active*/ - snd_hda_codec_write(codec, pin_nid, 0, -- AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT); -+ AC_VERB_SET_PIN_WIDGET_CONTROL, 0); - } - - static int hdmi_get_channel_count(struct hda_codec *codec, hda_nid_t cvt_nid) -@@ -1343,6 +1341,7 @@ static int generic_hdmi_playback_pcm_prepare(struct hda_pcm_stream *hinfo, - struct hdmi_spec *spec = codec->spec; - int pin_idx = hinfo_to_pin_index(spec, hinfo); - hda_nid_t pin_nid = spec->pins[pin_idx].pin_nid; -+ int pinctl; - bool non_pcm; - - non_pcm = check_non_pcm_per_cvt(codec, cvt_nid); -@@ -1351,6 +1350,11 @@ static int generic_hdmi_playback_pcm_prepare(struct hda_pcm_stream *hinfo, - - hdmi_setup_audio_infoframe(codec, pin_idx, non_pcm, substream); - -+ pinctl = snd_hda_codec_read(codec, pin_nid, 0, -+ AC_VERB_GET_PIN_WIDGET_CONTROL, 0); -+ snd_hda_codec_write(codec, pin_nid, 0, -+ AC_VERB_SET_PIN_WIDGET_CONTROL, pinctl | PIN_OUT); -+ - return hdmi_setup_stream(codec, cvt_nid, pin_nid, stream_tag, format); - } - -@@ -1370,6 +1374,7 @@ static int hdmi_pcm_close(struct hda_pcm_stream *hinfo, - int cvt_idx, pin_idx; - struct hdmi_spec_per_cvt *per_cvt; - struct hdmi_spec_per_pin *per_pin; -+ int pinctl; - - if (hinfo->nid) { - cvt_idx = cvt_nid_to_cvt_index(spec, hinfo->nid); -@@ -1386,6 +1391,11 @@ static int hdmi_pcm_close(struct hda_pcm_stream *hinfo, - return -EINVAL; - per_pin = &spec->pins[pin_idx]; - -+ pinctl = snd_hda_codec_read(codec, per_pin->pin_nid, 0, -+ AC_VERB_GET_PIN_WIDGET_CONTROL, 0); -+ snd_hda_codec_write(codec, per_pin->pin_nid, 0, -+ AC_VERB_SET_PIN_WIDGET_CONTROL, -+ pinctl & ~PIN_OUT); - snd_hda_spdif_ctls_unassign(codec, pin_idx); - per_pin->chmap_set = false; - memset(per_pin->chmap, 0, sizeof(per_pin->chmap)); --- -1.7.2.5 - diff --git a/packages/mediacenter/xbmc/patches/xbmc-990.15-PR2245.patch b/packages/mediacenter/xbmc/patches/xbmc-990.15-PR2245.patch new file mode 100644 index 0000000000..40b17c8756 --- /dev/null +++ b/packages/mediacenter/xbmc/patches/xbmc-990.15-PR2245.patch @@ -0,0 +1,53 @@ +From 8b6032793bcc05a6ec06773c95463a22d2c9881b Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Fri, 15 Feb 2013 17:58:41 +0000 +Subject: [PATCH] [rbp] Fix for hang after seeking introduced by ASS fix + +#2206 introduced a regression when seeking in some types of SD files where the video stutters and/or stalls. +This is caused by using the wrong clock in FlipPage +--- + xbmc/cores/omxplayer/OMXPlayerVideo.cpp | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +diff --git a/xbmc/cores/omxplayer/OMXPlayerVideo.cpp b/xbmc/cores/omxplayer/OMXPlayerVideo.cpp +index ec7e7f6..5a6e31e 100644 +--- a/xbmc/cores/omxplayer/OMXPlayerVideo.cpp ++++ b/xbmc/cores/omxplayer/OMXPlayerVideo.cpp +@@ -461,15 +461,15 @@ void OMXPlayerVideo::Output(int iGroupId, double pts, bool bDropPacket) + m_iSleepEndTime = iCurrentClock + iSleepTime; + } + +- if (!CThread::m_bStop && m_av_clock->GetAbsoluteClock(false) < m_iSleepEndTime) ++ if (!CThread::m_bStop && m_av_clock->GetAbsoluteClock(false) < m_iSleepEndTime + DVD_MSEC_TO_TIME(500)) + return; + +- m_iSleepEndTime = DVD_NOPTS_VALUE; +- + double pts_media = m_av_clock->OMXMediaTime(false, false); + ProcessOverlays(iGroupId, pts_media); + +- g_renderManager.FlipPage(CThread::m_bStop, pts_media / DVD_TIME_BASE, -1, FS_NONE); ++ g_renderManager.FlipPage(CThread::m_bStop, m_iSleepEndTime / DVD_TIME_BASE, -1, FS_NONE); ++ ++ m_iSleepEndTime = DVD_NOPTS_VALUE; + + //m_av_clock->WaitAbsoluteClock((iCurrentClock + iSleepTime)); + } +@@ -580,12 +580,14 @@ void OMXPlayerVideo::Process() + m_av_clock->OMXReset(false); + m_av_clock->UnLock(); + m_started = false; ++ m_iSleepEndTime = DVD_NOPTS_VALUE; + } + else if (pMsg->IsType(CDVDMsg::GENERAL_FLUSH)) // private message sent by (COMXPlayerVideo::Flush()) + { + CLog::Log(LOGDEBUG, "COMXPlayerVideo - CDVDMsg::GENERAL_FLUSH"); + m_stalled = true; + m_started = false; ++ m_iSleepEndTime = DVD_NOPTS_VALUE; + m_av_clock->Lock(); + m_av_clock->OMXStop(false); + m_omxVideo.Reset(); +-- +1.7.10 +