This commit is contained in:
parent
40a257c796
commit
a41d5e68c3
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -23,4 +23,3 @@
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
||||
## Specific LFS patterns
|
||||
logo.ogg filter=lfs diff=lfs merge=lfs -text
|
||||
logo04.mpg filter=lfs diff=lfs merge=lfs -text
|
||||
|
@ -1,11 +0,0 @@
|
||||
--- po/de.po 2006/11/27 09:58:23 1.1
|
||||
+++ po/de.po 2006/11/27 09:58:55
|
||||
@@ -1936,7 +1936,7 @@
|
||||
|
||||
#: kaffeine.cpp:193
|
||||
msgid "Player Window"
|
||||
-msgstr "Wiedergabe-Fenster andocken"
|
||||
+msgstr "Wiedergabe-Fenster"
|
||||
|
||||
#: kaffeine.cpp:219
|
||||
msgid "Supported Media Formats"
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:42719f4eab6a27a06ec247369424f5a9d796fca74672573c467d024983a861b2
|
||||
size 2940941
|
3
kaffeine-0.8.4.tar.bz2
Normal file
3
kaffeine-0.8.4.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a15ad9f6b154ef1c83f3d0e818f94efd7ba6c2ae4e6affcc9d28afacb701df74
|
||||
size 2903979
|
@ -1,472 +0,0 @@
|
||||
--- configure.in 2006/12/05 09:02:33 1.1
|
||||
+++ configure.in 2006/12/05 09:08:44
|
||||
@@ -222,10 +222,10 @@
|
||||
if test "$with_gstreamer" != "no" ; then
|
||||
AC_MSG_CHECKING([for GStreamer])
|
||||
|
||||
- if "$PKG_CONFIG" --exists "gstreamer-0.8 >= 0.8.4" "gstreamer-interfaces-0.8 >= 0.8.4" ; then
|
||||
+ if "$PKG_CONFIG" --exists "gstreamer-0.10 >= 0.10.4" "gstreamer-plugins-base-0.10 >= 0.10.4" ; then
|
||||
with_gstreamer=yes
|
||||
- CFLAGS_GSTREAMER=`"$PKG_CONFIG" --cflags gstreamer-0.8 gstreamer-interfaces-0.8`
|
||||
- LIB_GSTREAMER=`"$PKG_CONFIG" --libs gstreamer-0.8 gstreamer-interfaces-0.8`
|
||||
+ CFLAGS_GSTREAMER=`"$PKG_CONFIG" --cflags gstreamer-0.10 gstreamer-plugins-base-0.10`
|
||||
+ LIB_GSTREAMER="`"$PKG_CONFIG" --libs gstreamer-0.10 gstreamer-plugins-base-0.10` -lgstinterfaces-0.10"
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
with_gstreamer=no
|
||||
--- kaffeine/configure.in.in 2006/12/05 09:02:33 1.1
|
||||
+++ kaffeine/configure.in.in 2006/12/05 09:10:36
|
||||
@@ -142,10 +142,10 @@
|
||||
if test "$with_gstreamer" != "no" ; then
|
||||
AC_MSG_CHECKING([for GStreamer])
|
||||
|
||||
- if "$PKG_CONFIG" --exists "gstreamer-0.8 >= 0.8.4" "gstreamer-interfaces-0.8 >= 0.8.4" ; then
|
||||
+ if "$PKG_CONFIG" --exists "gstreamer-0.10 >= 0.10.4" "gstreamer-plugins-base-0.10 >= 0.10.4" ; then
|
||||
with_gstreamer=yes
|
||||
- CFLAGS_GSTREAMER=`"$PKG_CONFIG" --cflags gstreamer-0.8 gstreamer-interfaces-0.8`
|
||||
- LIB_GSTREAMER=`"$PKG_CONFIG" --libs gstreamer-0.8 gstreamer-interfaces-0.8`
|
||||
+ CFLAGS_GSTREAMER=`"$PKG_CONFIG" --cflags gstreamer-0.10 gstreamer-plugins-base-0.10`
|
||||
+ LIB_GSTREAMER="`"$PKG_CONFIG" --libs gstreamer-0.10 gstreamer-plugins-base-0.10` -lgstinterfaces-0.10"
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
with_gstreamer=no
|
||||
--- kaffeine/src/player-parts/gstreamer-part/gstreamer_part.cpp
|
||||
+++ kaffeine/src/player-parts/gstreamer-part/gstreamer_part.cpp
|
||||
@@ -361,6 +361,7 @@
|
||||
}
|
||||
gchar *uri = g_strdup(url.local8Bit());
|
||||
kdDebug() << "GStreamerPart: play URL: " << uri << endl;
|
||||
+ g_message ("GST Uri %s", uri);
|
||||
g_object_set(G_OBJECT(m_play), "uri", uri, NULL);
|
||||
g_free(uri);
|
||||
|
||||
@@ -386,7 +387,7 @@
|
||||
g_object_set(G_OBJECT(m_play), "suburi", NULL, NULL);
|
||||
}
|
||||
|
||||
- if (gst_element_set_state(m_play, GST_STATE_PLAYING) != GST_STATE_SUCCESS)
|
||||
+ if (!gst_element_set_state(m_play, GST_STATE_PLAYING))
|
||||
{
|
||||
// KMessageBox::error(0, i18n("Playback failed. Reason unknown."));
|
||||
// if (m_url != m_logoPath)
|
||||
@@ -421,12 +422,12 @@
|
||||
gst_object_unref(GST_OBJECT (cdda));
|
||||
return;
|
||||
}
|
||||
- if (gst_element_set_state(cdda, GST_STATE_PAUSED) != GST_STATE_SUCCESS)
|
||||
+ if (!gst_element_set_state(cdda, GST_STATE_PAUSED))
|
||||
{
|
||||
gst_object_unref(GST_OBJECT (cdda));
|
||||
return;
|
||||
}
|
||||
- if (!gst_pad_query (gst_element_get_pad(cdda, "src"), GST_QUERY_TOTAL, &fmt, &tracks))
|
||||
+ if (!gst_element_query_duration (cdda, &fmt, &tracks))
|
||||
{
|
||||
gst_element_set_state(cdda, GST_STATE_NULL);
|
||||
gst_object_unref(GST_OBJECT (cdda));
|
||||
@@ -545,7 +546,8 @@
|
||||
emit setStatusBarText(i18n("Mute") + ": " + i18n("On"));
|
||||
else
|
||||
emit setStatusBarText(i18n("Mute") + ": " + i18n("Off"));
|
||||
- g_object_set(G_OBJECT(m_audiosink), "mute", m_mute, NULL);
|
||||
+ // FIXME this is not really muting
|
||||
+ g_object_set(G_OBJECT(m_play), "volume", m_mute ? 0.0 : 2.0, NULL);
|
||||
}
|
||||
|
||||
void GStreamerPart::gstStateChanged()
|
||||
@@ -702,9 +704,51 @@
|
||||
GstElement* visual = gst_element_factory_make (name.ascii(), "visualization");
|
||||
if (visual)
|
||||
{
|
||||
- g_object_set(G_OBJECT (m_play), "vis-plugin", visual, NULL);
|
||||
- g_object_unref(m_visual);
|
||||
- m_visual = visual;
|
||||
+ GstElement *vis_bin, *vis_capsfilter = NULL;
|
||||
+ GstPad *pad = NULL;
|
||||
+ GstCaps *caps = NULL;
|
||||
+
|
||||
+ vis_capsfilter = gst_element_factory_make ("capsfilter", "vis_capsfilter");
|
||||
+ if (!GST_IS_ELEMENT (vis_capsfilter)) {
|
||||
+ kdWarning() << "GStreamer: Initialization of visualization capsfilter failed (" << name << ")" << endl;
|
||||
+ }
|
||||
+
|
||||
+ vis_bin = gst_bin_new ("vis_bin");
|
||||
+ if (!GST_IS_ELEMENT (vis_bin)) {
|
||||
+ kdWarning() << "GStreamer: Initialization of visualization bin failed (" << name << ")" << endl;
|
||||
+ }
|
||||
+
|
||||
+ gst_bin_add_many (GST_BIN (vis_bin), visual, vis_capsfilter, NULL);
|
||||
+
|
||||
+ /* Sink ghostpad */
|
||||
+ pad = gst_element_get_pad (visual, "sink");
|
||||
+ gst_element_add_pad (vis_bin, gst_ghost_pad_new ("sink", pad));
|
||||
+ gst_object_unref (pad);
|
||||
+
|
||||
+ /* Source ghostpad, link with visual */
|
||||
+ pad = gst_element_get_pad (vis_capsfilter, "src");
|
||||
+ gst_element_add_pad (vis_bin, gst_ghost_pad_new ("src", pad));
|
||||
+ gst_element_link_pads (visual, "src", vis_capsfilter, "sink");
|
||||
+ gst_object_unref (pad);
|
||||
+
|
||||
+ /* Get allowed output caps from visualisation element */
|
||||
+ pad = gst_element_get_pad (visual, "src");
|
||||
+ caps = gst_pad_get_allowed_caps (pad);
|
||||
+ gst_object_unref (pad);
|
||||
+
|
||||
+ if (caps && !gst_caps_is_fixed (caps)) {
|
||||
+ g_object_set (vis_capsfilter, "caps", caps, NULL);
|
||||
+ }
|
||||
+
|
||||
+ GST_DEBUG ("visualisation caps: %" GST_PTR_FORMAT, caps);
|
||||
+ if (GST_IS_CAPS (caps)) {
|
||||
+ gst_caps_unref (caps);
|
||||
+ }
|
||||
+
|
||||
+ g_object_set(G_OBJECT (m_play), "vis-plugin", vis_bin, NULL);
|
||||
+ if (m_visual)
|
||||
+ g_object_unref(m_visual);
|
||||
+ m_visual = vis_bin;
|
||||
m_visualPluginName = name;
|
||||
}
|
||||
else
|
||||
@@ -877,27 +921,21 @@
|
||||
*/
|
||||
bool GStreamerPart::initGStreamer()
|
||||
{
|
||||
- if (!gst_init_check(NULL, NULL))
|
||||
+ GstBus *bus;
|
||||
+
|
||||
+ if (!gst_init_check(NULL, NULL, NULL))
|
||||
{
|
||||
KMessageBox::error(0, i18n("GStreamer could not be initialized!"));
|
||||
return false;
|
||||
}
|
||||
|
||||
- // Check if registry exists
|
||||
- GstElement* dummy = gst_element_factory_make("fakesink", "fakesink");
|
||||
- if (!dummy || !gst_scheduler_factory_make( NULL, GST_ELEMENT(dummy)))
|
||||
- {
|
||||
- KMessageBox::error(0, i18n("Missing GStreamer-registry! Did you forget to run <b>gst-register</b> (as root) after installation?"));
|
||||
- return false;
|
||||
- }
|
||||
-
|
||||
/* check GStreamer version */
|
||||
- guint maj, min, mic;
|
||||
- gst_version(&maj, &min, &mic);
|
||||
- kdDebug() << "GStreamerPart: Found GStreamer version " << maj << "." << min << "." << mic << endl << endl;
|
||||
+ guint maj, min, mic, nan;
|
||||
+ gst_version(&maj, &min, &mic, &nan);
|
||||
+ kdDebug() << "GStreamerPart: Found GStreamer version " << maj << "." << min << "." << mic << "." << nan << endl << endl;
|
||||
|
||||
/* check for visualization plugins */
|
||||
- GList* factories = gst_registry_pool_feature_list(GST_TYPE_ELEMENT_FACTORY);
|
||||
+ GList* factories = gst_registry_get_feature_list (gst_registry_get_default (), GST_TYPE_ELEMENT_FACTORY);
|
||||
QString name, cat;
|
||||
while (factories)
|
||||
{
|
||||
@@ -912,7 +950,7 @@
|
||||
m_videoPluginList.append(name);
|
||||
factories = g_list_next(factories);
|
||||
}
|
||||
- g_list_free(factories);
|
||||
+ gst_plugin_feature_list_free(factories);
|
||||
|
||||
/* initialize GStreamer objects */
|
||||
m_play = gst_element_factory_make ("playbin", "player");
|
||||
@@ -967,21 +1005,20 @@
|
||||
/*
|
||||
* Visualization
|
||||
*/
|
||||
- kdDebug() << "GStreamerPart: Using visualization plugin: " << m_visualPluginName << endl;
|
||||
- if (m_visualPluginName != "none")
|
||||
- {
|
||||
- m_visual = gst_element_factory_make (m_visualPluginName.ascii(), "visualization");
|
||||
- if (!m_visual)
|
||||
- kdWarning() << "GStreamer: Initialization of visualization plugin failed" << endl;
|
||||
- }
|
||||
+ slotSetVisualPlugin (m_visualPluginName);
|
||||
|
||||
- g_object_set(G_OBJECT(m_play), "video-sink", m_videosink, "audio-sink", m_audiosink, "vis-plugin", m_visual, NULL);
|
||||
+ g_object_set(G_OBJECT(m_play), "video-sink", m_videosink, "audio-sink", m_audiosink, NULL);
|
||||
//subtitle font
|
||||
//g_object_set(G_OBJECT(m_play), "subtitle-font-desc", "sans normal 14", NULL);
|
||||
- g_signal_connect(m_play, "error", G_CALLBACK (cb_error), this);
|
||||
- g_signal_connect(m_play, "found-tag", G_CALLBACK (cb_foundtag), this);
|
||||
- g_signal_connect(m_play, "eos", G_CALLBACK (cb_eos), this);
|
||||
- g_signal_connect(m_play, "state-change", G_CALLBACK (cb_state), this);
|
||||
+
|
||||
+ bus = gst_element_get_bus(m_play);
|
||||
+ gst_bus_add_signal_watch(bus);
|
||||
+ g_signal_connect(bus, "message::error", G_CALLBACK (cb_error), this);
|
||||
+ g_signal_connect(bus, "message::tag", G_CALLBACK (cb_foundtag), this);
|
||||
+ g_signal_connect(bus, "message::eos", G_CALLBACK (cb_eos), this);
|
||||
+ g_signal_connect(bus, "message::state-changed", G_CALLBACK (cb_state), this);
|
||||
+
|
||||
+ /* FIXME Where is this signal now */
|
||||
g_signal_connect(m_play, "notify::source", G_CALLBACK(got_source), this);
|
||||
gst_element_set_state(m_play, GST_STATE_READY);
|
||||
return true;
|
||||
@@ -989,23 +1026,28 @@
|
||||
|
||||
/******************* CALLBACKS ************************/
|
||||
|
||||
-void GStreamerPart::cb_error(GstElement* /*play*/, GstElement* /*src*/, GError *err, const char *debug, gpointer data)
|
||||
+void GStreamerPart::cb_error(GstBus* /*bus*/, GstMessage *message, gpointer data)
|
||||
{
|
||||
GStreamerPart* gp = (GStreamerPart*)data;
|
||||
+ GError *err = NULL;
|
||||
+
|
||||
+ gst_message_parse_error (message, &err, NULL);
|
||||
gp->m_errorMsg = err->message;
|
||||
- gp->m_errorDetails = debug;
|
||||
+ gp->m_errorDetails = "";
|
||||
QApplication::postEvent(gp, new QTimerEvent(TIMER_EVENT_ERROR));
|
||||
}
|
||||
|
||||
-void GStreamerPart::cb_foundtag(GstElement* /*play*/, GstElement* /*src*/, const GstTagList *taglist, gpointer data)
|
||||
+void GStreamerPart::cb_foundtag(GstBus* /*bus*/, GstMessage *message, gpointer data)
|
||||
{
|
||||
GStreamerPart* gp = (GStreamerPart*)data;
|
||||
+ GstTagList *taglist;
|
||||
kdDebug() << " Received meta tags..." << endl;
|
||||
|
||||
char* string;
|
||||
guint intVal = 0;
|
||||
bool success = false;
|
||||
|
||||
+ gst_message_parse_tag (message, &taglist);
|
||||
if (gst_tag_list_get_string(taglist, GST_TAG_TITLE, &string) && string)
|
||||
{
|
||||
gp->m_title = string;
|
||||
@@ -1052,21 +1094,25 @@
|
||||
gp->m_videoCodec = string;
|
||||
//kdDebug() << "GStreamerPart: 'Video Codec': " << string << endl;
|
||||
}
|
||||
-
|
||||
+ gst_tag_list_free(taglist);
|
||||
+
|
||||
if (success)
|
||||
QApplication::postEvent(gp, new QTimerEvent(TIMER_EVENT_FOUND_TAG));
|
||||
}
|
||||
|
||||
-void GStreamerPart::cb_eos (GstElement* /*play*/, gpointer data)
|
||||
+void GStreamerPart::cb_eos (GstBus* /*bus*/, GstMessage* /*message*/, gpointer data)
|
||||
{
|
||||
GStreamerPart* gp = (GStreamerPart*)data;
|
||||
QApplication::postEvent(gp, new QTimerEvent(TIMER_EVENT_PLAYBACK_FINISHED));
|
||||
}
|
||||
|
||||
-void GStreamerPart::cb_state(GstElement* /*play*/, GstElementState /*old_state*/, GstElementState new_state, gpointer data)
|
||||
+void GStreamerPart::cb_state(GstBus* /*bus*/, GstMessage *message, gpointer data)
|
||||
{
|
||||
+ GstState old_state, new_state;
|
||||
+
|
||||
//kdDebug() << "GStreamerPart: state changed callback" << endl;
|
||||
GStreamerPart* gp = (GStreamerPart*)data;
|
||||
+ gst_message_parse_state_changed(message, &old_state, &new_state, NULL);
|
||||
gp->m_newState = new_state;
|
||||
QApplication::postEvent(gp, new QTimerEvent(TIMER_EVENT_NEW_STATE));
|
||||
}
|
||||
--- kaffeine/src/player-parts/gstreamer-part/gstreamer_part.h
|
||||
+++ kaffeine/src/player-parts/gstreamer-part/gstreamer_part.h
|
||||
@@ -102,10 +102,10 @@
|
||||
void setAudioSink(QString sinkName);
|
||||
|
||||
//callbacks
|
||||
- static void cb_error (GstElement *play, GstElement *src, GError *err, const char *debug, gpointer data);
|
||||
- static void cb_foundtag (GstElement *play, GstElement *src, const GstTagList *list, gpointer data);
|
||||
- static void cb_eos (GstElement *play, gpointer data);
|
||||
- static void cb_state (GstElement *play, GstElementState old_state, GstElementState new_state, gpointer data);
|
||||
+ static void cb_error (GstBus *bus, GstMessage *message, gpointer data);
|
||||
+ static void cb_foundtag (GstBus *bus, GstMessage *message, gpointer data);
|
||||
+ static void cb_eos (GstBus *bus, GstMessage *message, gpointer data);
|
||||
+ static void cb_state (GstBus *bus, GstMessage *message, gpointer data);
|
||||
static void got_source (GstElement* play, GParamSpec* pspec, gpointer data);
|
||||
|
||||
private:
|
||||
@@ -113,7 +113,7 @@
|
||||
GstElement* m_videosink;
|
||||
GstElement* m_audiosink;
|
||||
GstElement* m_visual;
|
||||
- GstElementState m_newState;
|
||||
+ GstState m_newState;
|
||||
|
||||
VideoWindow* m_video;
|
||||
Timer* m_timer;
|
||||
--- kaffeine/src/player-parts/gstreamer-part/timer.cpp
|
||||
+++ kaffeine/src/player-parts/gstreamer-part/timer.cpp
|
||||
@@ -40,6 +40,8 @@
|
||||
|
||||
Timer::Timer(GstElement *_play) : QObject()
|
||||
{
|
||||
+ GstBus *bus;
|
||||
+
|
||||
m_label = new QLabel("0:00 / 0:00", 0);
|
||||
m_slider = new QSlider(Qt::Horizontal, 0);
|
||||
m_slider->setMinValue(0);
|
||||
@@ -49,7 +51,10 @@
|
||||
|
||||
gst_object_ref(GST_OBJECT(_play));
|
||||
m_play = _play;
|
||||
- g_signal_connect(m_play, "state-change", G_CALLBACK (cb_state), this);
|
||||
+
|
||||
+ bus = gst_element_get_bus(m_play);
|
||||
+ gst_bus_add_signal_watch(bus);
|
||||
+ g_signal_connect(bus, "message::state-changed", G_CALLBACK (cb_state), this);
|
||||
|
||||
m_pos = GST_CLOCK_TIME_NONE;
|
||||
m_len = GST_CLOCK_TIME_NONE;
|
||||
@@ -77,9 +82,8 @@
|
||||
|
||||
/* do actual seek */
|
||||
gint64 val = m_slider->value ();
|
||||
- gst_element_seek (m_play, (GstSeekType) (GST_SEEK_METHOD_SET |
|
||||
- GST_FORMAT_TIME | GST_SEEK_FLAG_FLUSH),
|
||||
- val * GST_SECOND);
|
||||
+ gst_element_seek (m_play, 1.0, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH,
|
||||
+ GST_SEEK_TYPE_SET, val * GST_SECOND, GST_SEEK_TYPE_NONE, -1);
|
||||
}
|
||||
|
||||
static char *niceTime(guint64 t)
|
||||
@@ -130,7 +134,7 @@
|
||||
/* get media m_length if not yet known */
|
||||
if (!GST_CLOCK_TIME_IS_VALID (m_len))
|
||||
{
|
||||
- if (gst_element_query (m_play, GST_QUERY_TOTAL, &fmt, &t))
|
||||
+ if (gst_element_query_duration (m_play, &fmt, &t))
|
||||
{
|
||||
m_len = t;
|
||||
m_len_change = TRUE;
|
||||
@@ -139,7 +143,7 @@
|
||||
}
|
||||
|
||||
/* get m_position in the media now */
|
||||
- if (!gst_element_query (m_play, GST_QUERY_POSITION, &fmt, &t))
|
||||
+ if (!gst_element_query_position (m_play, &fmt, &t))
|
||||
return;
|
||||
|
||||
if (!GST_CLOCK_TIME_IS_VALID (m_pos) || (int) (m_pos / GST_SECOND) != (int) (t / GST_SECOND))
|
||||
@@ -173,7 +177,7 @@
|
||||
m_slider->setValue (m_pos / GST_SECOND);
|
||||
}
|
||||
|
||||
-void Timer::newState(GstElementState old_state, GstElementState new_state)
|
||||
+void Timer::newState(GstState old_state, GstState new_state)
|
||||
{
|
||||
if (old_state <= GST_STATE_PAUSED && new_state >= GST_STATE_PLAYING)
|
||||
{
|
||||
@@ -207,8 +211,11 @@
|
||||
|
||||
/************ CALLBACKS ****************/
|
||||
|
||||
-void Timer::cb_state(GstElement* /*play*/, GstElementState old_state, GstElementState new_state, gpointer data)
|
||||
+void Timer::cb_state(GstBus */*bus*/, GstMessage *message, gpointer data)
|
||||
{
|
||||
+ GstState old_state, new_state;
|
||||
+
|
||||
+ gst_message_parse_state_changed (message, &old_state, &new_state, NULL);
|
||||
((Timer*)data)->newState(old_state, new_state);
|
||||
}
|
||||
|
||||
--- kaffeine/src/player-parts/gstreamer-part/timer.h
|
||||
+++ kaffeine/src/player-parts/gstreamer-part/timer.h
|
||||
@@ -63,10 +63,10 @@
|
||||
void slotEndseek();
|
||||
|
||||
private:
|
||||
- void newState(GstElementState old_state, GstElementState new_state);
|
||||
+ void newState(GstState old_state, GstState new_state);
|
||||
|
||||
//callbacks
|
||||
- static void cb_state (GstElement* play, GstElementState old_state, GstElementState new_state, gpointer data);
|
||||
+ static void cb_state (GstBus*, GstMessage *message, gpointer data);
|
||||
|
||||
private:
|
||||
QTimer *m_timer;
|
||||
--- kaffeine/src/player-parts/gstreamer-part/video.cpp
|
||||
+++ kaffeine/src/player-parts/gstreamer-part/video.cpp
|
||||
@@ -35,7 +35,7 @@
|
||||
#include <kmenubar.h>
|
||||
#include <kdebug.h>
|
||||
|
||||
-#include <gst/xoverlay/xoverlay.h>
|
||||
+#include <gst/interfaces/xoverlay.h>
|
||||
|
||||
#include "video.h"
|
||||
|
||||
@@ -45,9 +45,14 @@
|
||||
VideoWindow::VideoWindow(QWidget *parent, GstElement *_element, GstElement *_play)
|
||||
: QWidget (parent), m_width(0), m_height(0), m_aspectRatio(AUTO)
|
||||
{
|
||||
+ GstBus *bus;
|
||||
+
|
||||
gst_object_ref(GST_OBJECT(_play));
|
||||
m_play = _play;
|
||||
- g_signal_connect(m_play, "state-change", G_CALLBACK (cb_state), this);
|
||||
+
|
||||
+ bus = gst_element_get_bus(m_play);
|
||||
+ gst_bus_add_signal_watch(bus);
|
||||
+ g_signal_connect(bus, "message::state-changed", G_CALLBACK (cb_state), this);
|
||||
|
||||
gst_object_ref(GST_OBJECT (_element));
|
||||
m_element = _element;
|
||||
@@ -132,7 +137,7 @@
|
||||
setGeometry();
|
||||
}
|
||||
|
||||
-void VideoWindow::newState(GstElementState old_state, GstElementState new_state)
|
||||
+void VideoWindow::newState(GstState old_state, GstState new_state)
|
||||
{
|
||||
if (old_state <= GST_STATE_READY && new_state >= GST_STATE_PAUSED)
|
||||
{
|
||||
@@ -153,14 +158,14 @@
|
||||
|
||||
if (strstr(val->value_name, "VIDEO"))
|
||||
{
|
||||
- g_object_get (info, "object", &pad, NULL);
|
||||
- pad = (GstPad *) GST_PAD_REALIZE (pad);
|
||||
+ g_object_get (info, "pad", &pad, NULL);
|
||||
if (GST_PAD_CAPS (pad))
|
||||
{
|
||||
cb_capsset(pad, NULL, this);
|
||||
}
|
||||
else
|
||||
{
|
||||
+ /* FIXME Where does this map to now? */
|
||||
g_signal_connect(pad, "notify::caps", G_CALLBACK(cb_capsset), this);
|
||||
}
|
||||
}
|
||||
@@ -303,9 +308,12 @@
|
||||
|
||||
/***************** CALLBACKS ********************/
|
||||
|
||||
-void VideoWindow::cb_state(GstElement */*play*/, GstElementState old_state, GstElementState new_state, gpointer data)
|
||||
+void VideoWindow::cb_state(GstBus */*bus*/, GstMessage *message, gpointer data)
|
||||
{
|
||||
+ GstState old_state, new_state;
|
||||
+
|
||||
//kdDebug() << "VideoWindow: state changed callback" << endl;
|
||||
+ gst_message_parse_state_changed(message, &old_state, &new_state, NULL);
|
||||
((VideoWindow *)data)->newState (old_state, new_state);
|
||||
}
|
||||
|
||||
--- kaffeine/src/player-parts/gstreamer-part/video.h
|
||||
+++ kaffeine/src/player-parts/gstreamer-part/video.h
|
||||
@@ -51,7 +51,7 @@
|
||||
SQUARE
|
||||
};
|
||||
|
||||
- void newState (GstElementState old_state, GstElementState new_state);
|
||||
+ void newState (GstState old_state, GstState new_state);
|
||||
void newCapsset (const GstCaps *caps);
|
||||
|
||||
void refresh();
|
||||
@@ -91,7 +91,7 @@
|
||||
|
||||
private:
|
||||
//callbacks
|
||||
- static void cb_state (GstElement *play, GstElementState old_state, GstElementState new_state, gpointer data);
|
||||
+ static void cb_state (GstBus *bus, GstMessage *message, gpointer data);
|
||||
static void cb_capsset (GstPad *pad, GParamSpec *pspec, gpointer data);
|
||||
|
||||
private:
|
@ -1,3 +1,33 @@
|
||||
-------------------------------------------------------------------
|
||||
Sat Apr 14 07:51:37 CEST 2007 - stbinner@suse.de
|
||||
|
||||
- update to version 0.8.4:
|
||||
* Playlist: menu option to not auto switch to player window
|
||||
* DVB: added osd browsing dcop calls
|
||||
* xine-part: dragndrop subtitles files
|
||||
* fixed: removed readonly parts support
|
||||
* fixed: improve screensaver disabling method again
|
||||
(old behaviour for non-kde environments)
|
||||
* DVB: added a "source" column in channels list.
|
||||
* Playlist: fix opening playlists
|
||||
* DVB: rotors support (usals and mem_pos)
|
||||
* DVB: fixed multi devices usage.
|
||||
* DVB: fixed devices probing
|
||||
* DVB: added tuning timeout options
|
||||
* DVB: fixed OSD epg bug with diseqc settings
|
||||
* DVB: use klocale for datetime format
|
||||
* Playlist: fix google fetcher
|
||||
* xine-part: support for xcb. Requires libxcb 1.0 and xine-lib
|
||||
1.1.5. Fixes several issues.
|
||||
* gstreamer-part: port to gst 0.10
|
||||
* fixed: allow small window size in minimal mode
|
||||
* added: allow toggling (show / hide) panels by clicking tabs
|
||||
* xine-part: reduced audio/sub combos sizes
|
||||
* xine-part: add volume+/- to embedded context menu.
|
||||
* Playlist: don't cut bottom font in rollingtitle.
|
||||
* xine-part: better "Track infos" box layout.
|
||||
* xine-part: don't restore video settings if not previously saved
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Dec 4 16:33:29 CET 2006 - stbinner@suse.de
|
||||
|
||||
|
@ -1,23 +1,22 @@
|
||||
--- kaffeine/src/kaffeine.desktop
|
||||
+++ kaffeine/src/kaffeine.desktop 2005/09/06 09:01:52
|
||||
@@ -19,3 +19,4 @@
|
||||
Name[sv]=Kaffeine
|
||||
Terminal=false
|
||||
Type=Application
|
||||
X-KDE-HasTempFileOption=true
|
||||
+InitialPreference=4
|
||||
--- kaffeine/src/player-parts/xine-part/kxinewidget.cpp
|
||||
+++ kaffeine/src/player-parts/xine-part/kxinewidget.cpp 2005/09/06 09:01:52
|
||||
@@ -1069,8 +1069,8 @@
|
||||
globalPosChanged(); /* get global pos of the window */
|
||||
|
||||
/**** INIT XINE DISPLAY ****/
|
||||
-
|
||||
--- kaffeine/src/player-parts/xine-part/kxinewidget.cpp 2007/04/14 05:59:48 1.1
|
||||
+++ kaffeine/src/player-parts/xine-part/kxinewidget.cpp 2007/04/14 06:01:37
|
||||
@@ -1080,7 +1080,8 @@
|
||||
/**** INIT XINE DISPLAY ****/
|
||||
|
||||
#ifndef HAVE_XCB
|
||||
- XInitThreads();
|
||||
+ // too late, it will crash for sure
|
||||
+ // XInitThreads();
|
||||
|
||||
m_xineDisplay = XOpenDisplay( getenv("DISPLAY") );
|
||||
|
||||
+ // too late, it will crash for sure
|
||||
+ // XInitThreads();
|
||||
|
||||
connection = XOpenDisplay(NULL);
|
||||
#else
|
||||
--- kaffeine/src/instwizard.cpp
|
||||
+++ kaffeine/src/instwizard.cpp 2005/09/06 09:01:52
|
||||
@@ -106,8 +106,7 @@
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package kaffeine (Version 0.8.3)
|
||||
# spec file for package kaffeine (Version 0.8.4)
|
||||
#
|
||||
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# This file and all modifications and additions to the pristine
|
||||
# package are under the same license as the package itself.
|
||||
#
|
||||
@ -21,7 +21,7 @@ URL: http://kaffeine.sourceforge.net/
|
||||
License: GNU General Public License (GPL)
|
||||
Group: Productivity/Multimedia/Video/Players
|
||||
Summary: Xine-Based Multimedia Player
|
||||
Version: 0.8.3
|
||||
Version: 0.8.4
|
||||
Release: 1
|
||||
%define rversion %version
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
@ -29,7 +29,6 @@ Requires: kdelibs3 >= %( echo `rpm -q --queryformat '%{VERSION}' kdelibs3`
|
||||
Provides: kaxtv
|
||||
Obsoletes: kaxtv
|
||||
Source0: %name-%rversion.tar.bz2
|
||||
Source3: logo04.mpg
|
||||
Source4: logo.ogg
|
||||
Source5: cs.po
|
||||
Patch0: %name.diff
|
||||
@ -37,9 +36,7 @@ Patch1: adjust-mimetypes.diff
|
||||
Patch2: messagebox-dvd.diff
|
||||
Patch4: mutex.diff
|
||||
Patch5: kaffeine-media.diff
|
||||
Patch7: kaffeine-gstreamer-0-10.patch
|
||||
Patch8: kaffeine-quote-subs.patch
|
||||
Patch10: fix-german-translation.diff
|
||||
|
||||
%description
|
||||
Kaffeine plays all files and devices supported by Xine. For example,
|
||||
@ -76,11 +73,7 @@ Authors:
|
||||
%patch2
|
||||
%patch4
|
||||
#%patch5
|
||||
%if %suse_version > 1001
|
||||
%patch7
|
||||
%endif
|
||||
%patch8
|
||||
%patch10
|
||||
cp %SOURCE5 po/
|
||||
. /etc/opt/kde3/common_options
|
||||
update_admin
|
||||
@ -95,14 +88,11 @@ make %{?jobs:-j%jobs}
|
||||
make DESTDIR=${RPM_BUILD_ROOT} $INSTALL_TARGET
|
||||
kde_post_install
|
||||
#
|
||||
%if %suse_version > 910
|
||||
install -m 0644 %SOURCE4 $RPM_BUILD_ROOT/opt/kde3/share/apps/kaffeine/logo.avi
|
||||
%else
|
||||
install -m 0644 %SOURCE3 $RPM_BUILD_ROOT/opt/kde3/share/apps/kaffeine/logo.avi
|
||||
%endif
|
||||
# -r to get rid of Music
|
||||
%suse_update_desktop_file -r kaffeine KDE AudioVideo Player Video
|
||||
rm -rf $RPM_BUILD_ROOT/opt/kde3/share/locale/xx
|
||||
rm $RPM_BUILD_ROOT/opt/kde3/share/doc/HTML/en/doc/CMakeLists.txt
|
||||
rm $RPM_BUILD_ROOT/opt/kde3/share/mimelnk/application/x-mplayer2.desktop
|
||||
%find_lang %name
|
||||
|
||||
@ -129,10 +119,7 @@ rm $RPM_BUILD_ROOT/opt/kde3/share/mimelnk/application/x-mplayer2.desktop
|
||||
/opt/kde3/share/services/kaffeineoggvorbis.desktop
|
||||
/opt/kde3/share/servicetypes/kaffeineaudioencoder.desktop
|
||||
/opt/kde3/share/servicetypes/kaffeinedvbplugin.desktop
|
||||
/opt/kde3/share/doc/HTML/en/kaffeine
|
||||
%if %suse_version < 930
|
||||
%doc %lang(zh_CN) /opt/kde3/share/doc/HTML/zh_CN
|
||||
%endif
|
||||
%doc %lang(en) /opt/kde3/share/doc/HTML/en/kaffeine
|
||||
|
||||
%files gstreamer
|
||||
%defattr(-,root,root)
|
||||
@ -140,7 +127,34 @@ rm $RPM_BUILD_ROOT/opt/kde3/share/mimelnk/application/x-mplayer2.desktop
|
||||
/opt/kde3/share/apps/gstreamerpart
|
||||
/opt/kde3/share/services/gstreamer_part.desktop
|
||||
|
||||
%changelog -n kaffeine
|
||||
%changelog
|
||||
* Sat Apr 14 2007 - stbinner@suse.de
|
||||
- update to version 0.8.4:
|
||||
* Playlist: menu option to not auto switch to player window
|
||||
* DVB: added osd browsing dcop calls
|
||||
* xine-part: dragndrop subtitles files
|
||||
* fixed: removed readonly parts support
|
||||
* fixed: improve screensaver disabling method again
|
||||
(old behaviour for non-kde environments)
|
||||
* DVB: added a "source" column in channels list.
|
||||
* Playlist: fix opening playlists
|
||||
* DVB: rotors support (usals and mem_pos)
|
||||
* DVB: fixed multi devices usage.
|
||||
* DVB: fixed devices probing
|
||||
* DVB: added tuning timeout options
|
||||
* DVB: fixed OSD epg bug with diseqc settings
|
||||
* DVB: use klocale for datetime format
|
||||
* Playlist: fix google fetcher
|
||||
* xine-part: support for xcb. Requires libxcb 1.0 and xine-lib
|
||||
1.1.5. Fixes several issues.
|
||||
* gstreamer-part: port to gst 0.10
|
||||
* fixed: allow small window size in minimal mode
|
||||
* added: allow toggling (show / hide) panels by clicking tabs
|
||||
* xine-part: reduced audio/sub combos sizes
|
||||
* xine-part: add volume+/- to embedded context menu.
|
||||
* Playlist: don't cut bottom font in rollingtitle.
|
||||
* xine-part: better "Track infos" box layout.
|
||||
* xine-part: don't restore video settings if not previously saved
|
||||
* Mon Dec 04 2006 - stbinner@suse.de
|
||||
- update to version 0.8.3:
|
||||
* DVB: selectAll button in scandialog
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a701a06fac079d1b253c123a0ac78301e1e09b6afa4376cc8882f954d8c6c370
|
||||
size 312561
|
@ -15,13 +15,10 @@
|
||||
if ( reply.isValid() ) {
|
||||
--- po/de.po 2006/12/05 09:33:47 1.15
|
||||
+++ po/de.po 2006/12/05 09:34:21
|
||||
@@ -3210,6 +3210,9 @@
|
||||
@@ -3210,2 +3210,6 @@
|
||||
msgid "DummyPart"
|
||||
msgstr "DummyPart"
|
||||
|
||||
+
|
||||
+msgid "This version of Xine (used by Kaffeine) has only a reduced\nset of supported codecs. It is not able to play DVDs.\nPlease read http://portal.suse.com/sdb/en/2003/09/xine_dvd.html for further details."
|
||||
+msgstr "Diese Version von Xine (wird von Kaffeine benutzt) hat nur\neine limitierte Anzahl von Codecs. Daher ist es nicht möglich eine DVD anzusehen.\nBitte lesen Sie diese Seite http://en.opensuse.org/XINE für weitere Informationen."
|
||||
+
|
||||
#~ msgid "These channels already exist and were not added:"
|
||||
#~ msgstr "Diese Kanäle existieren bereits und werden nicht hinzugefügt:"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user