[gephex-devel] gephex--main--0.4--patch-1855
gephex at sonnenland.kexbox.org
gephex at sonnenland.kexbox.org
Sat Mar 5 13:38:12 CET 2005
Archive: gephex at gephex.org--2004
New revision: gephex--main--0.4--patch-1855
--
Revision: gephex--main--0.4--patch-1855
Archive: gephex at gephex.org--2004
Creator: The Gephex Source Archive <gephex at gephex.org>
Date: Sat Mar 5 13:34:57 CET 2005
Standard-date: 2005-03-05 12:34:57 GMT
Modified-files: NEWS doc/documentation.xml
modules/src/frbinmodule/ffmpegdriver.cpp
qtgui/src/gui/base/picmanager.cpp
qtgui/src/gui/dialogs/changesdialogimpl.cpp
qtgui/src/gui/editor/grapheditor.cpp
New-patches: georg at gephex.org--2004-home/gephex--georg--0.4--patch-398
georg at gephex.org--2004-home/gephex--georg--0.4--patch-399
georg at gephex.org--2004-home/gephex--georg--0.4--patch-400
georg at gephex.org--2004-home/gephex--georg--0.4--patch-401
georg at gephex.org--2004-home/gephex--georg--0.4--patch-402
gephex at gephex.org--2004/gephex--main--0.4--patch-1855
Summary: [MERGE-REQUEST] Updated ffmpeg driver (now works with newer ffmpeg versions), updated changes dialog, changed color of midi type
Keywords:
Patches applied:
* georg at gephex.org--2004-home/gephex--georg--0.4--patch-398
Changed ffmpegdriver to work with both old and new ffmpeg av_seek_frame interface
* georg at gephex.org--2004-home/gephex--georg--0.4--patch-399
Fixed typo in documentation, updated changesdialog
* georg at gephex.org--2004-home/gephex--georg--0.4--patch-400
Gui now opens property view on left click on a module (bug #97)
* georg at gephex.org--2004-home/gephex--georg--0.4--patch-401
Updated NEWS and changes dialog
* georg at gephex.org--2004-home/gephex--georg--0.4--patch-402
Changed color of midi type in graph editor
* added files
{arch}/gephex/gephex--georg/gephex--georg--0.4/georg at gephex.org--2004-home/patch-log/patch-398
{arch}/gephex/gephex--georg/gephex--georg--0.4/georg at gephex.org--2004-home/patch-log/patch-399
{arch}/gephex/gephex--georg/gephex--georg--0.4/georg at gephex.org--2004-home/patch-log/patch-400
{arch}/gephex/gephex--georg/gephex--georg--0.4/georg at gephex.org--2004-home/patch-log/patch-401
{arch}/gephex/gephex--georg/gephex--georg--0.4/georg at gephex.org--2004-home/patch-log/patch-402
{arch}/gephex/gephex--main/gephex--main--0.4/gephex at gephex.org--2004/patch-log/patch-1855
* modified files
--- orig/NEWS
+++ mod/NEWS
@@ -7,7 +7,7 @@
* some usability improvements
- * fixed bugs #79, #81, #82, #83, #84, #86, #87, #89, #96, #100
+ * fixed bugs #79, #81, #82, #83, #84, #86, #87, #89, #96, #97, #100
0.4.2:
------
--- orig/doc/documentation.xml
+++ mod/doc/documentation.xml
@@ -585,7 +585,7 @@
<citetitle>let us know</citetitle></ulink>!
</para>
-We are looking for people to improve gephex on mac os x.
+We are looking for people to improve gephex on Mac OS X.
Important areas that need work:
<itemizedlist>
--- orig/modules/src/frbinmodule/ffmpegdriver.cpp
+++ mod/modules/src/frbinmodule/ffmpegdriver.cpp
@@ -1,6 +1,6 @@
/* This source file is a part of the GePhex Project.
- Copyright (C) 2001-2004
+ Copyright (C) 2001-2005
Georg Seidel <georg at gephex.org>
Martin Bayer <martin at gephex.org>
@@ -51,6 +51,8 @@
static void close_stream(AVFormatContext* av_fc, int stream_index);
static void dump_stream_info(AVFormatContext *s);
+static int seek_to_second(AVFormatContext* st, int stream_index, double sec);
+
//----------------------------------------------------------------------
static int next_video_frame(AVPacket* pkt, AVFormatContext* fc,
@@ -309,6 +311,9 @@
std::cout << "start_time: " << m_start_time << " s
";
std::cout << "fps : " << m_fps << "
";
+ std::cout << "timebase : "
+ << video_stream->time_base.num /
+ (double)video_stream->time_base.den << "
";
m_frame = avcodec_alloc_frame();
file_name = filename;
@@ -367,8 +372,6 @@
{
assert(av_fc != 0);
- AVStream* video_stream = av_fc->streams[video_stream_index];
-
double wanted_timestamp = m_start_time + ((double) frame_number) / m_fps;
double frame_duration = 1.0 / m_fps;
@@ -386,8 +389,8 @@
#endif
// first seek to the nearest keyframe before wanted_timestamp
- int ret = av_seek_frame(av_fc, video_stream_index,
- (int64_t) (wanted_timestamp*AV_TIME_BASE));
+ int ret = seek_to_second(av_fc, video_stream_index, wanted_timestamp);
+
if (ret < 0)
{
std::cerr << "Could not seek
";
@@ -426,6 +429,8 @@
int dst_pix_fmt = PIX_FMT_RGBA32;
AVPicture pict;
+ AVStream* video_stream = av_fc->streams[video_stream_index];
+
int cwidth = video_stream->codec.width;
int cheight = video_stream->codec.height;
@@ -645,8 +650,8 @@
if (duration_0 <= 0) duration_0 = frame_duration*25;
// std::cout << "seeking until success...
";
- int ret = av_seek_frame(av_fc, stream_index,
- (int64_t) (duration_0*AV_TIME_BASE) + start_pts);
+
+ int ret = seek_to_second(av_fc, stream_index, duration_0);
int seek_count = 1;
// decrease duration until seek succeeds
@@ -654,8 +659,7 @@
{
// std::cout << ".
";
duration_0 -= frame_duration;
- ret = av_seek_frame(av_fc, stream_index,
- (int64_t) (duration_0*AV_TIME_BASE) + start_pts);
+ ret = seek_to_second(av_fc, stream_index, duration_0);
++seek_count;
}
@@ -711,3 +715,41 @@
}
//----------------------------------------------------------------------
+
+// TODO: check whether this number reflects the seek_frame api change
+
+#if LIBAVCODEC_BUILD <= 4721
+
+static int64_t get_timestamp(double ts_sec)
+{
+ return static_cast<int64_t>(ts_sec / AV_TIME_BASE + 0.5);
+}
+
+static int seek_to_second(AVFormatContext* av_fc, int stream_index,
+ double sec)
+{
+ int64_t ts = get_timestamp(sec);
+
+ return av_seek_frame(av_fc, stream_index, ts);
+}
+
+#else
+
+static int64_t get_timestamp(double ts_sec, const AVRational& time_base)
+{
+ return static_cast<int64_t>(ts_sec*time_base.den /
+ static_cast<double>(time_base.num) + 0.5);
+}
+
+static int seek_to_second(AVFormatContext* av_fc, int stream_index,
+ double sec)
+{
+ AVStream* video_stream = av_fc->streams[stream_index];
+
+ int64_t ts = get_timestamp(sec, video_stream->time_base);
+
+ return av_seek_frame(av_fc, stream_index, ts, AVSEEK_FLAG_BACKWARD);
+}
+#endif
+
+//----------------------------------------------------------------------
--- orig/qtgui/src/gui/base/picmanager.cpp
+++ mod/qtgui/src/gui/base/picmanager.cpp
@@ -41,7 +41,7 @@
}
else if (type == "typ_MidiType")
{
- return QColor(221, 79, 8);
+ return QColor(255, 255, 0);
}
else if (type == "typ_AudioType")
{
--- orig/qtgui/src/gui/dialogs/changesdialogimpl.cpp
+++ mod/qtgui/src/gui/dialogs/changesdialogimpl.cpp
@@ -34,7 +34,21 @@
ChangesDialog::ChangesDialog( QWidget* parent, const char* name, bool modal, WFlags fl )
: ChangesDialogBase( parent, name, modal, fl )
{
- changes_view->setText("<h3>0.4.2:</h3>
"
+ changes_view->setText("<h3>0.4.3:</h3>
"
+"<p>
"
+"<ul><li>support for Mac OS X
"
+"</ul>
"
+"<p>
"
+"<ul><li>ports of almost all effecTV effects
"
+"</ul>
"
+"<p>
"
+"<ul><li>some usability improvements
"
+"</ul>
"
+"<p>
"
+"<ul><li>fixed bugs #79, #81, #82, #83, #84, #86, #87, #89, #96, #97, #100
"
+"</ul>
"
+"<p>
"
+"<h3>0.4.2:</h3>
"
"<p>
"
"<ul><li>support for frei0r plugins
"
"</ul>
"
--- orig/qtgui/src/gui/editor/grapheditor.cpp
+++ mod/qtgui/src/gui/editor/grapheditor.cpp
@@ -485,9 +485,10 @@
}
}
- void GraphEditor::nodeWidgetClicked(NodeWidget* /*n*/)
+ void GraphEditor::nodeWidgetClicked(NodeWidget* n)
{
-
+ emit displayProperties(n->getProperties());
+ m_property_id = n->getID();
}
void GraphEditor::nodeWidgetMoved(NodeWidget* n, const QPoint& pos)
More information about the gephex-devel
mailing list