Projects
Multimedia
bino
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 4
View file
bino.changes
Changed
@@ -1,4 +1,11 @@ ------------------------------------------------------------------- +Tue Mar 08 13:41:08 UTC 2011 - pascal.bleser@opensuse.org + +- update to 0.9.2: + * fixes various minor problems + * improves compatibility with some video formats, especially Ogg/Theora + +------------------------------------------------------------------- Sun Feb 27 23:37:30 UTC 2011 - pascal.bleser@opensuse.org - update to 0.9.1:
View file
bino.spec
Changed
@@ -8,7 +8,7 @@ %endif Name: bino -Version: 0.9.1 +Version: 0.9.2 Release: 0.pm.1 Summary: Video Player with 3D and Multi-Display Video Support # http://download.savannah.gnu.org/releases/bino/bino-%{version}.tar.xz
View file
bino-0.9.1.tar.bz2/AUTHORS -> bino-0.9.2.tar.bz2/AUTHORS
Changed
@@ -1,7 +1,7 @@ Maintainer: Martin Lambers -Contributors up to version 0.9.1: +Contributors up to version 0.9.2: Frédéric Devernay Stefan Eilemann Gabriele Greco
View file
bino-0.9.1.tar.bz2/ChangeLog -> bino-0.9.2.tar.bz2/ChangeLog
Changed
@@ -1,3 +1,254 @@ +commit 0a703cc26bdc6773b96dd8d5be27904fc2f6ad9c +Author: Martin Lambers <marlam@marlam.de> +Date: 2011-03-05 10:30:51 +0100 + + Windows: simplify instructions to create binaries. + + README.Windows | 9 +++------ + 1 files changed, 3 insertions(+), 6 deletions(-) + +commit a0d2cfc4a20024c0cd9365d3c090b155cf792a62 +Author: Martin Lambers <marlam@marlam.de> +Date: 2011-03-04 15:13:12 +0100 + + Update documentation of file name conventions. + + doc/bino.texi | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +commit fe26b331705c28de6157a6c2b17ddf34fcafb33a +Author: Martin Lambers <marlam@marlam.de> +Date: 2011-03-04 06:42:54 +0100 + + Do not sleep after processing events. + + We do not know how long event processing takes, so only sleep when there are no + events to process. + + src/player.cpp | 7 +++++-- + src/player_equalizer.cpp | 1 + + src/video_output.h | 1 + + src/video_output_qt.cpp | 7 ++++++- + src/video_output_qt.h | 1 + + 5 files changed, 14 insertions(+), 3 deletions(-) + +commit 731ee3ea8b2855283fc3d3ae3db0983f48a62db7 +Author: Martin Lambers <marlam@marlam.de> +Date: 2011-03-02 09:01:30 +0100 + + Rebuild Qt ressources when necessary. + + src/Makefile.am | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit cab0d49aa0c1a7cf8528552caaf41e66d0e3ef1f +Author: Martin Lambers <marlam@marlam.de> +Date: 2011-03-02 08:53:02 +0100 + + Bump version to 0.9.2. + + AUTHORS | 2 +- + configure.ac | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 87f5a1bcdb129c061095918c4342d5a937fe502b +Author: Martin Lambers <marlam@marlam.de> +Date: 2011-03-02 06:37:36 +0100 + + Media data: micro optimization. + + Copy the video data in one piece if possible, and line-by-line only when + necessary. + + src/media_data.cpp | 17 ++++++++++++----- + 1 files changed, 12 insertions(+), 5 deletions(-) + +commit a70007bb3399edfe793ce7bb1027c7cb4fc84612 +Author: Martin Lambers <marlam@marlam.de> +Date: 2011-03-01 21:36:58 +0100 + + Fix video stream names. + + Use the raw width/height information in the stream name, not the width/height + information that depends on the stereo layout. + + src/media_data.cpp | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 729f33c1f882ba53e8a6eeb965617e7093d77df2 +Author: Martin Lambers <marlam@marlam.de> +Date: 2011-03-01 21:34:02 +0100 + + GUI: Improve resizing behaviour. + + src/video_output_qt.cpp | 9 +++++---- + 1 files changed, 5 insertions(+), 4 deletions(-) + +commit 32eb152a5f97e0789153aafdcbfd475b69f2fe8a +Author: Martin Lambers <marlam@marlam.de> +Date: 2011-03-01 17:36:22 +0100 + + Media object: remove wrong line from error handling path. + + src/media_object.cpp | 1 - + 1 files changed, 0 insertions(+), 1 deletions(-) + +commit ac74520f8cc7630eada17f8dc6347a4eb1fcc1cd +Author: Martin Lambers <marlam@marlam.de> +Date: 2011-03-01 17:33:08 +0100 + + Media object: never drop video packets. + + This partially reverts commit c5a247c7c3783b28182aef0e63e366d8aeefc574. We + cannot drop video packets because of their interdependencies: it would mess up + decoding. + + So we restrict this packet-dropping-because-of-missing-timestamp to audio + packets. Such packets should not have interdependencies, and timestamps are + more important there because the audio clock is the master clock. + + src/media_object.cpp | 35 ++++++++++++++--------------------- + 1 files changed, 14 insertions(+), 21 deletions(-) + +commit d5cf814d3fc83944592a4214f500faa7a2df7545 +Author: Martin Lambers <marlam@marlam.de> +Date: 2011-03-01 17:06:01 +0100 + + Equalizer: require >= 0.9.3 (aka 1.0-beta). + + This allows to simplify the instructions on how to build Bino with support for + Equalizer. + + configure.ac | 2 +- + doc/bino.texi | 11 +++-------- + 2 files changed, 4 insertions(+), 9 deletions(-) + +commit b5d527e549da5a447a91c4c69b2950855d7e26e5 +Author: Martin Lambers <marlam@marlam.de> +Date: 2011-02-28 12:47:10 +0100 + + Windows: update packaging rules and instructions. + + README.Windows | 41 ++++++++++++++--------------------------- + configure.ac | 1 + + pkg/w32/bino.nsi | 20 ++++++++++---------- + pkg/w32/notes.txt | 1 + + 4 files changed, 26 insertions(+), 37 deletions(-) + +commit 5976b83a65459827a2c6dd41e64f34c89859d1e0 +Author: Martin Lambers <marlam@marlam.de> +Date: 2011-02-28 08:37:53 +0100 + + Media object: use video timestamp fallbacks if necessary. + + This should never be necessary, but there are all kinds of problematic videos... + + src/media_object.cpp | 23 +++++++++++++++++++---- + 1 files changed, 19 insertions(+), 4 deletions(-) + +commit c5a247c7c3783b28182aef0e63e366d8aeefc574 +Author: Martin Lambers <marlam@marlam.de> +Date: 2011-02-28 07:10:19 +0100 + + Media object: make sure that packets have timestamps after a seek. + + src/media_object.cpp | 58 ++++++++++++++++++++++++++++++++++++------------- + 1 files changed, 42 insertions(+), 16 deletions(-) + +commit 25fe9b946781f9574852ce9fe914b15359684835 +Author: Martin Lambers <marlam@marlam.de> +Date: 2011-02-28 06:49:55 +0100 + + Media object: when no audio timestamp is available, guess. + + src/media_object.cpp | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +commit 8e1ee5e153efbbde420f321b395fc8d01eb9ee43 +Author: Martin Lambers <marlam@marlam.de> +Date: 2011-02-28 06:44:16 +0100 + + Avoid clang compiler warning. + + src/media_data.cpp | 10 ++++++---- + 1 files changed, 6 insertions(+), 4 deletions(-) + +commit ee0fd75f492157061aec2c2e76c73cbdbda8858f +Author: Frédéric Devernay <frederic.devernay@inrialpes.fr> +Date: 2011-02-27 14:44:22 +0100 + + configure.ac: make libavformat prerequisites explicit. + + It seems that sometimes the automatic dependency handling of pkg-config fails + to link libavcodec and libavutil. + + configure.ac | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit f2cb7edf2b67441055212828e19ff24ca5e97c04 +Author: Martin Lambers <marlam@marlam.de> +Date: 2011-02-27 12:02:40 +0100 + + Avoid a compiler warning. + + src/media_object.cpp | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 230b665430437232247e3e0ba2c3709a850ded33 +Author: Martin Lambers <marlam@marlam.de> +Date: 2011-02-27 11:57:32 +0100 + + Media object: fix audio timestamp handling. + + This removes the (wrong) approach of commit + 1ab9e8cd4e9a9e685b3624eb0cd38fc7ae847d21, and fixes seeking with .ogv and .webm + test cases. Finally. + + src/media_object.cpp | 9 ++++++--- + 1 files changed, 6 insertions(+), 3 deletions(-) + +commit 3f26ec5171f028a04235f48956e27944450f1714 +Author: Martin Lambers <marlam@marlam.de> +Date: 2011-02-27 01:34:51 +0100 + + Media object: do not destroy video packets before they are consumed. + + src/media_object.cpp | 17 ++++++++++++----- + 1 files changed, 12 insertions(+), 5 deletions(-) + +commit 3758874a571f9ef1834cf7d37031dd835f2b0e29 +Author: Martin Lambers <marlam@marlam.de> +Date: 2011-02-27 00:32:38 +0100 + + Equalizer: fix video frame synchronization on slave nodes + + after starting the player and after seeking. + + src/player_equalizer.cpp | 12 +++++++++--- + 1 files changed, 9 insertions(+), 3 deletions(-) + +commit f7d75e011a50239d0fe5b05124d198ad5f03a8e2 +Author: Martin Lambers <marlam@marlam.de> +Date: 2011-02-27 00:15:14 +0100 + + Equalizer: on a slave node, read a frame after seeking. + + This avoids a one-frame difference between master and slave nodes after seeking. + + src/player_equalizer.cpp | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit 1ab9e8cd4e9a9e685b3624eb0cd38fc7ae847d21 +Author: Martin Lambers <marlam@marlam.de> +Date: 2011-02-26 23:45:48 +0100 + + Media object: make timestamp handling a little bit more robust. + + This fixes seeking in a .webm video test case. + + src/media_object.cpp | 11 ++++++++++- + 1 files changed, 10 insertions(+), 1 deletions(-) + commit b5fca890b049c4d9074bbbdfcb69f7376aaec588 Author: Martin Lambers <marlam@marlam.de> Date: 2011-02-26 20:58:43 +0100
View file
bino-0.9.1.tar.bz2/README.Windows -> bino-0.9.2.tar.bz2/README.Windows
Changed
@@ -5,10 +5,8 @@ Mingw-cross-env not only provides a recent version of gcc as a cross compiler, but also all required libraries, and the nsis package to build an installer. -Unfortunately, some libraries do not provide pkg-config files for MinGW, so you -have to set a few options manually for the configure script. - -The following is known to work with Mingw-cross-env 2.18 installed in /path/to/mce: +The following is known to work with Mingw-cross-env 2.19 (in preparation of +release) installed in /path/to/mce: 1. Build the required libraries in Mingw-cross-env: @@ -18,41 +16,27 @@ If you want to build a Bino installer later, you need to build nsis, too: $ make nsis -2. Clean your environment from variables that might confuse your cross-compile setup: - - $ unset PKG_CONFIG_PATH CC CPPFLAGS CFLAGS CXXFLAGS LDFLAGS - -3. Set path variables: + Add Mingw-cross-env to your PATH: + $ export PATH="/path/to/mce/usr/bin:$PATH" - $ MCE=/path/to/mce - $ MCEPFX="$MCE/usr/i686-pc-mingw32" - $ export PATH="$MCE/usr/bin:$PATH" - -4. Build Bino +2. Build Bino $ cd /path/to/bino - $ QTOPENGLLIBS="`grep QMAKE_PRL_LIBS "$MCEPFX"/lib/QtOpenGL.prl | sed -e 's/QMAKE_PRL_LIBS = //'`" - $ ./configure --host=i686-pc-mingw32 \ - libglew_CFLAGS="-DGLEW_STATIC" libglew_LIBS="-lglew32s -lopengl32" \ - libqtopengl_CFLAGS="-D__glu_h__ -I$MCEPFX/include/Qt -I$MCEPFX/include/QtCore -I$MCEPFX/include/QtGui -I$MCEPFX/include/QtOpenGL" \ - libqtopengl_LIBS="-L$MCEPFX/lib -mwindows -lQtOpenGL $QTOPENGLLIBS" + $ ./configure --host=i686-pc-mingw32 $ make - $ i686-pc-mingw32-strip src/bino.exe -Now you can copy the bino.exe binary from the src subdirectory to any Windows -machine. If you want to access the Bino manual from the GUI, keep the following -directory structure on the Windows machine: + Optionally build the installer (if nsis was built in Mingw-cross-env): + $ make package-w32 + +The installer will install the binary and the manual along with start menu +entries, and provide uninstall functionality. + +You can also copy just the bino.exe binary from the src subdirectory to any +Windows machine. If you want to access the Bino manual from the GUI, keep the +following directory structure: c:\<path_to_bino>\bin\bino.exe c:\<path_to_bino>\doc\bino.html c:\<path_to_bino>\doc\<image_files...> -You can also build an NSIS-based installer to take care of this for you. - -5. Build installer - - (This only works if you built the nsis package in Mingw-cross-env) - $ make package-w32 - - This will produce the installer bino-VERSION.exe. Note that you might want to use a newer FFmpeg version than the one shipped with Mingw-cross-env for best results.
View file
bino-0.9.1.tar.bz2/configure -> bino-0.9.2.tar.bz2/configure
Changed
@@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.67 for Bino 0.9.1. +# Generated by GNU Autoconf 2.67 for Bino 0.9.2. # # Report bugs to <bino-list@nongnu.org>. # @@ -552,8 +552,8 @@ # Identity of this package. PACKAGE_NAME='Bino' PACKAGE_TARNAME='bino' -PACKAGE_VERSION='0.9.1' -PACKAGE_STRING='Bino 0.9.1' +PACKAGE_VERSION='0.9.2' +PACKAGE_STRING='Bino 0.9.2' PACKAGE_BUGREPORT='bino-list@nongnu.org' PACKAGE_URL='http://bino.nongnu.org/' @@ -1306,7 +1306,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Bino 0.9.1 to adapt to many kinds of systems. +\`configure' configures Bino 0.9.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1377,7 +1377,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Bino 0.9.1:";; + short | recursive ) echo "Configuration of Bino 0.9.2:";; esac cat <<\_ACEOF @@ -1508,7 +1508,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Bino configure 0.9.1 +Bino configure 0.9.2 generated by GNU Autoconf 2.67 Copyright (C) 2010 Free Software Foundation, Inc. @@ -2003,7 +2003,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Bino $as_me 0.9.1, which was +It was created by Bino $as_me 0.9.2, which was generated by GNU Autoconf 2.67. Invocation command line was $ $0 $@ @@ -4453,7 +4453,7 @@ # Define the identity of the package. PACKAGE='bino' - VERSION='0.9.1' + VERSION='0.9.2' cat >>confdefs.h <<_ACEOF @@ -5430,6 +5430,7 @@ case "${target}" in *-*-mingw32*) w32="yes" ;; *) w32="no " ;; esac if test "$w32" = "yes"; then + LDFLAGS="-mwindows $LDFLAGS" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args. set dummy ${ac_tool_prefix}windres; ac_word=$2 @@ -5932,12 +5933,12 @@ pkg_cv_libavformat_CFLAGS="$libavformat_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libavformat >= 52.64.2\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libavformat >= 52.64.2") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libavformat >= 52.64.2 libavcodec libavutil\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libavformat >= 52.64.2 libavcodec libavutil") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_libavformat_CFLAGS=`$PKG_CONFIG --cflags "libavformat >= 52.64.2" 2>/dev/null` + pkg_cv_libavformat_CFLAGS=`$PKG_CONFIG --cflags "libavformat >= 52.64.2 libavcodec libavutil" 2>/dev/null` else pkg_failed=yes fi @@ -5948,12 +5949,12 @@ pkg_cv_libavformat_LIBS="$libavformat_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libavformat >= 52.64.2\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libavformat >= 52.64.2") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libavformat >= 52.64.2 libavcodec libavutil\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libavformat >= 52.64.2 libavcodec libavutil") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_libavformat_LIBS=`$PKG_CONFIG --libs "libavformat >= 52.64.2" 2>/dev/null` + pkg_cv_libavformat_LIBS=`$PKG_CONFIG --libs "libavformat >= 52.64.2 libavcodec libavutil" 2>/dev/null` else pkg_failed=yes fi @@ -5973,9 +5974,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - libavformat_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libavformat >= 52.64.2" 2>&1` + libavformat_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libavformat >= 52.64.2 libavcodec libavutil" 2>&1` else - libavformat_PKG_ERRORS=`$PKG_CONFIG --print-errors "libavformat >= 52.64.2" 2>&1` + libavformat_PKG_ERRORS=`$PKG_CONFIG --print-errors "libavformat >= 52.64.2 libavcodec libavutil" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$libavformat_PKG_ERRORS" >&5 @@ -6467,12 +6468,12 @@ pkg_cv_libEqualizer_CFLAGS="$libEqualizer_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Equalizer >= 0.9.2\""; } >&5 - ($PKG_CONFIG --exists --print-errors "Equalizer >= 0.9.2") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Equalizer >= 0.9.3\""; } >&5 + ($PKG_CONFIG --exists --print-errors "Equalizer >= 0.9.3") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_libEqualizer_CFLAGS=`$PKG_CONFIG --cflags "Equalizer >= 0.9.2" 2>/dev/null` + pkg_cv_libEqualizer_CFLAGS=`$PKG_CONFIG --cflags "Equalizer >= 0.9.3" 2>/dev/null` else pkg_failed=yes fi @@ -6483,12 +6484,12 @@ pkg_cv_libEqualizer_LIBS="$libEqualizer_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Equalizer >= 0.9.2\""; } >&5 - ($PKG_CONFIG --exists --print-errors "Equalizer >= 0.9.2") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Equalizer >= 0.9.3\""; } >&5 + ($PKG_CONFIG --exists --print-errors "Equalizer >= 0.9.3") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_libEqualizer_LIBS=`$PKG_CONFIG --libs "Equalizer >= 0.9.2" 2>/dev/null` + pkg_cv_libEqualizer_LIBS=`$PKG_CONFIG --libs "Equalizer >= 0.9.3" 2>/dev/null` else pkg_failed=yes fi @@ -6508,9 +6509,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - libEqualizer_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "Equalizer >= 0.9.2" 2>&1` + libEqualizer_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "Equalizer >= 0.9.3" 2>&1` else - libEqualizer_PKG_ERRORS=`$PKG_CONFIG --print-errors "Equalizer >= 0.9.2" 2>&1` + libEqualizer_PKG_ERRORS=`$PKG_CONFIG --print-errors "Equalizer >= 0.9.3" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$libEqualizer_PKG_ERRORS" >&5 @@ -7179,7 +7180,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Bino $as_me 0.9.1, which was +This file was extended by Bino $as_me 0.9.2, which was generated by GNU Autoconf 2.67. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -7246,7 +7247,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -Bino config.status 0.9.1 +Bino config.status 0.9.2 configured by $0, generated by GNU Autoconf 2.67, with options \\"\$ac_cs_config\\"
View file
bino-0.9.1.tar.bz2/configure.ac -> bino-0.9.2.tar.bz2/configure.ac
Changed
@@ -22,7 +22,7 @@ dnl Autotools init stuff AC_PREREQ([2.65]) -AC_INIT([Bino], [0.9.1], [bino-list@nongnu.org], [bino], [http://bino.nongnu.org/]) +AC_INIT([Bino], [0.9.2], [bino-list@nongnu.org], [bino], [http://bino.nongnu.org/]) AC_CONFIG_SRCDIR([src/main.cpp]) AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_MACRO_DIR([m4]) @@ -44,6 +44,7 @@ dnl Special handling of W32 case "${target}" in *-*-mingw32*) w32="yes" ;; *) w32="no " ;; esac if test "$w32" = "yes"; then + LDFLAGS="-mwindows $LDFLAGS" AC_CHECK_TOOL([WINDRES], [windres], [:]) if test "$WINDRES" = ":"; then AC_MSG_ERROR([windres not found]) @@ -81,7 +82,7 @@ fi dnl FFmpeg -PKG_CHECK_MODULES([libavformat], [libavformat >= 52.64.2], [HAVE_LIBAVFORMAT=1], [HAVE_LIBAVFORMAT=0]) +PKG_CHECK_MODULES([libavformat], [libavformat >= 52.64.2 libavcodec libavutil], [HAVE_LIBAVFORMAT=1], [HAVE_LIBAVFORMAT=0]) if test "$HAVE_LIBAVFORMAT" != "1"; then AC_MSG_WARN([library libavformat >= 52.64.2 not found:]) AC_MSG_WARN([$libavformat_PKG_ERRORS]) @@ -123,7 +124,7 @@ [AS_HELP_STRING([--with-equalizer], [Enable multi-display support via Equalizer (disabled by default)])], [if test "$withval" = "yes"; then equalizer="yes"; else equalizer="no "; fi], [equalizer="no"]) if test "$equalizer" = "yes"; then - PKG_CHECK_MODULES([libEqualizer], [Equalizer >= 0.9.2], [HAVE_LIBEQUALIZER=1], [HAVE_LIBEQUALIZER=0]) + PKG_CHECK_MODULES([libEqualizer], [Equalizer >= 0.9.3], [HAVE_LIBEQUALIZER=1], [HAVE_LIBEQUALIZER=0]) if test "$HAVE_LIBEQUALIZER" != "1"; then AC_MSG_WARN([library libEqualizer not found:]) AC_MSG_WARN([$libEqualizer_PKG_ERRORS])
View file
bino-0.9.1.tar.bz2/doc/bino.html -> bino-0.9.2.tar.bz2/doc/bino.html
Changed
@@ -1,14 +1,14 @@ <html lang="en"> <head> -<title>Bino 0.9.1</title> +<title>Bino 0.9.2</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<meta name="description" content="Bino 0.9.1"> +<meta name="description" content="Bino 0.9.2"> <meta name="generator" content="makeinfo 4.13"> <link title="Top" rel="top" href="#Top"> <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> <!-- -This manual was last updated 26 February 2011 for version -0.9.1 of Bino. +This manual was last updated 5 March 2011 for version +0.9.2 of Bino. Copyright (C) 2011 Martin Lambers (<marlam@marlam.de>), @@ -34,7 +34,7 @@ --></style> </head> <body> -<h1 class="settitle">Bino 0.9.1</h1> +<h1 class="settitle">Bino 0.9.2</h1> <div class="node"> <a name="Top"></a> <p><hr> @@ -45,8 +45,8 @@ <h2 class="unnumbered">Bino</h2> -<p>This manual was last updated 26 February 2011 for version -0.9.1 of Bino. +<p>This manual was last updated 5 March 2011 for version +0.9.2 of Bino. <p>Copyright © 2011 Martin Lambers (<a href="mailto:marlam@marlam.de">marlam@marlam.de</a>), @@ -227,14 +227,14 @@ <dl> <dt><samp><span class="file">*-lr.ext</span></samp><dd><var>left-right</var> <br><dt><samp><span class="file">*-lrh.ext</span></samp><dt><samp><span class="file">*-lrq.ext</span></samp><dd><var>left-right-half</var> -<br><dt><samp><span class="file">*-rl.ext</span></samp><dd><var>left-right swapped</var> -<br><dt><samp><span class="file">*-rlh.ext</span></samp><dt><samp><span class="file">*-rlq.ext</span></samp><dd><var>left-right-half swapped</var> +<br><dt><samp><span class="file">*-rl.ext</span></samp><dd><var>right-left</var> +<br><dt><samp><span class="file">*-rlh.ext</span></samp><dt><samp><span class="file">*-rlq.ext</span></samp><dd><var>right-left-half</var> <br><dt><samp><span class="file">*-tb.ext</span></samp><dt><samp><span class="file">*-ab.ext</span></samp><dd><var>top-bottom</var> <br><dt><samp><span class="file">*-tbh.ext</span></samp><dt><samp><span class="file">*-abq.ext</span></samp><dd><var>top-bottom-half</var> -<br><dt><samp><span class="file">*-bt.ext</span></samp><dt><samp><span class="file">*-ba.ext</span></samp><dd><var>top-bottom swapped</var> -<br><dt><samp><span class="file">*-bth.ext</span></samp><dt><samp><span class="file">*-baq.ext</span></samp><dd><var>top-bottom-half swapped</var> +<br><dt><samp><span class="file">*-bt.ext</span></samp><dt><samp><span class="file">*-ba.ext</span></samp><dd><var>bottom-top</var> +<br><dt><samp><span class="file">*-bth.ext</span></samp><dt><samp><span class="file">*-baq.ext</span></samp><dd><var>bottom-top-half</var> <br><dt><samp><span class="file">*-eo.ext</span></samp><dt><samp><span class="file">*-eoq.ext</span></samp><dt><samp><span class="file">*-3dir.ext</span></samp><dd><var>even-odd-rows</var> -<br><dt><samp><span class="file">*-oe.ext</span></samp><dt><samp><span class="file">*-oeq.ext</span></samp><dt><samp><span class="file">*-3di.ext</span></samp><dd><var>even-odd-rows swapped</var> +<br><dt><samp><span class="file">*-oe.ext</span></samp><dt><samp><span class="file">*-oeq.ext</span></samp><dt><samp><span class="file">*-3di.ext</span></samp><dd><var>odd-even-rows</var> <br><dt><samp><span class="file">*-2d.ext</span></samp><dd><var>mono</var> </dl> @@ -346,18 +346,13 @@ <h3 class="section">8.1 Building Bino with Equalizer Support</h3> -<p>First, install Equalizer 0.9.2 or later. See +<p>First, install Equalizer 0.9.3 (also known as 1.0-beta) or later. See <a href="http://www.equalizergraphics.com/">http://www.equalizergraphics.com/</a>. Verify that it works by running the included eqHello example. <p>Then, build Bino with Equalizer support by using the <samp><span class="option">--with-equalizer</span></samp> -configure option. Note that Equalizer currently requires the application to be -compiled with the same setting of <code>NDEBUG</code> that was used to compile the -Equalizer libraries. Therefore, if you want to link against the debug version -of the Equalizer libraries, you must also add the <samp><span class="option">--enable-debug</span></samp> -configure option, and if you want to link against the release version of the -Equalizer libraries, you must not use this option. -<pre class="example"> $ ./configure --with-equalizer --enable-debug +configure option. +<pre class="example"> $ ./configure --with-equalizer </pre> <p>Now you need an Equalizer configuration file for your display setup.
View file
bino-0.9.1.tar.bz2/doc/bino.info -> bino-0.9.2.tar.bz2/doc/bino.info
Changed
@@ -1,7 +1,7 @@ This is ../../sources/bino/doc/bino.info, produced by makeinfo version 4.13 from ../../sources/bino/doc/bino.texi. -This manual was last updated 26 February 2011 for version 0.9.1 of Bino. +This manual was last updated 5 March 2011 for version 0.9.2 of Bino. Copyright (C) 2011 Martin Lambers (<marlam@marlam.de>), Stefan Eilemann (<eile@eyescale.ch>), Frédéric Devernay @@ -23,7 +23,7 @@ Bino **** -This manual was last updated 26 February 2011 for version 0.9.1 of Bino. +This manual was last updated 5 March 2011 for version 0.9.2 of Bino. Copyright (C) 2011 Martin Lambers (<marlam@marlam.de>), Stefan Eilemann (<eile@eyescale.ch>), Frédéric Devernay @@ -291,11 +291,11 @@ LEFT-RIGHT-HALF `*-rl.ext' - LEFT-RIGHT SWAPPED + RIGHT-LEFT `*-rlh.ext' `*-rlq.ext' - LEFT-RIGHT-HALF SWAPPED + RIGHT-LEFT-HALF `*-tb.ext' `*-ab.ext' @@ -307,11 +307,11 @@ `*-bt.ext' `*-ba.ext' - TOP-BOTTOM SWAPPED + BOTTOM-TOP `*-bth.ext' `*-baq.ext' - TOP-BOTTOM-HALF SWAPPED + BOTTOM-TOP-HALF `*-eo.ext' `*-eoq.ext' @@ -321,7 +321,7 @@ `*-oe.ext' `*-oeq.ext' `*-3di.ext' - EVEN-ODD-ROWS SWAPPED + ODD-EVEN-ROWS `*-2d.ext' MONO @@ -473,19 +473,13 @@ 8.1 Building Bino with Equalizer Support ======================================== -First, install Equalizer 0.9.2 or later. See +First, install Equalizer 0.9.3 (also known as 1.0-beta) or later. See `http://www.equalizergraphics.com/'. Verify that it works by running the included eqHello example. Then, build Bino with Equalizer support by using the -`--with-equalizer' configure option. Note that Equalizer currently -requires the application to be compiled with the same setting of -`NDEBUG' that was used to compile the Equalizer libraries. Therefore, -if you want to link against the debug version of the Equalizer -libraries, you must also add the `--enable-debug' configure option, and -if you want to link against the release version of the Equalizer -libraries, you must not use this option. - $ ./configure --with-equalizer --enable-debug +`--with-equalizer' configure option. + $ ./configure --with-equalizer Now you need an Equalizer configuration file for your display setup. @@ -772,15 +766,15 @@  Tag Table: -Node: Top771 -Node: Overview1529 -Node: Invocation2096 -Node: Input Layouts3362 -Node: Output Techniques4596 -Node: File Name Conventions6609 -Node: Interactive Control7498 -Node: Crosstalk Ghostbusting8564 -Node: Multi Display Support10644 +Node: Top767 +Node: Overview1521 +Node: Invocation2088 +Node: Input Layouts3354 +Node: Output Techniques4588 +Node: File Name Conventions6601 +Node: Interactive Control7450 +Node: Crosstalk Ghostbusting8516 +Node: Multi Display Support10596  End Tag Table
View file
bino-0.9.1.tar.bz2/doc/bino.texi -> bino-0.9.2.tar.bz2/doc/bino.texi
Changed
@@ -248,10 +248,10 @@ @itemx *-lrq.ext @var{left-right-half} @item *-rl.ext -@var{left-right swapped} +@var{right-left} @item *-rlh.ext @itemx *-rlq.ext -@var{left-right-half swapped} +@var{right-left-half} @item *-tb.ext @itemx *-ab.ext @var{top-bottom} @@ -260,10 +260,10 @@ @var{top-bottom-half} @item *-bt.ext @itemx *-ba.ext -@var{top-bottom swapped} +@var{bottom-top} @item *-bth.ext @itemx *-baq.ext -@var{top-bottom-half swapped} +@var{bottom-top-half} @item *-eo.ext @itemx *-eoq.ext @itemx *-3dir.ext @@ -271,7 +271,7 @@ @item *-oe.ext @itemx *-oeq.ext @itemx *-3di.ext -@var{even-odd-rows swapped} +@var{odd-even-rows} @item *-2d.ext @var{mono} @end table @@ -392,19 +392,14 @@ @section Building Bino with Equalizer Support -First, install Equalizer 0.9.2 or later. See +First, install Equalizer 0.9.3 (also known as 1.0-beta) or later. See @url{http://www.equalizergraphics.com/}. Verify that it works by running the included eqHello example. Then, build Bino with Equalizer support by using the @option{--with-equalizer} -configure option. Note that Equalizer currently requires the application to be -compiled with the same setting of @code{NDEBUG} that was used to compile the -Equalizer libraries. Therefore, if you want to link against the debug version -of the Equalizer libraries, you must also add the @option{--enable-debug} -configure option, and if you want to link against the release version of the -Equalizer libraries, you must not use this option. +configure option. @example -$ ./configure --with-equalizer --enable-debug +$ ./configure --with-equalizer @end example Now you need an Equalizer configuration file for your display setup.
View file
bino-0.9.1.tar.bz2/doc/stamp-vti -> bino-0.9.2.tar.bz2/doc/stamp-vti
Changed
@@ -1,4 +1,4 @@ -@set UPDATED 26 February 2011 -@set UPDATED-MONTH February 2011 -@set EDITION 0.9.1 -@set VERSION 0.9.1 +@set UPDATED 5 March 2011 +@set UPDATED-MONTH March 2011 +@set EDITION 0.9.2 +@set VERSION 0.9.2
View file
bino-0.9.1.tar.bz2/doc/version.texi -> bino-0.9.2.tar.bz2/doc/version.texi
Changed
@@ -1,4 +1,4 @@ -@set UPDATED 26 February 2011 -@set UPDATED-MONTH February 2011 -@set EDITION 0.9.1 -@set VERSION 0.9.1 +@set UPDATED 5 March 2011 +@set UPDATED-MONTH March 2011 +@set EDITION 0.9.2 +@set VERSION 0.9.2
View file
bino-0.9.1.tar.bz2/pkg/w32/bino.nsi -> bino-0.9.2.tar.bz2/pkg/w32/bino.nsi
Changed
@@ -7,17 +7,17 @@ !include "MUI.nsh" ; The name of the installer -Name "bino ${PACKAGE_VERSION}" +Name "Bino ${PACKAGE_VERSION}" ; The file to write OutFile "bino-${PACKAGE_VERSION}-w32.exe" ; The default installation directory -InstallDir "$PROGRAMFILES\bino-${PACKAGE_VERSION}" +InstallDir "$PROGRAMFILES\Bino ${PACKAGE_VERSION}" ; Registry key to check for directory (so if you install again, it will ; overwrite the old one automatically) -InstallDirRegKey HKLM "Software\bino-${PACKAGE_VERSION}" "Install_Dir" +InstallDirRegKey HKLM "Software\Bino ${PACKAGE_VERSION}" "Install_Dir" ;SetCompressor lzma ShowInstDetails show @@ -39,7 +39,7 @@ !insertmacro MUI_PAGE_DIRECTORY ;Start Menu Folder Page Configuration !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU" - !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\bino-${PACKAGE_VERSION}" + !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\Bino ${PACKAGE_VERSION}" !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder" !insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER !insertmacro MUI_PAGE_INSTFILES @@ -71,11 +71,11 @@ WriteUninstaller "$INSTDIR\uninstall.exe" ; Write the installation path into the registry - WriteRegStr HKLM "Software\bino-${PACKAGE_VERSION}" "Install_Dir" "$INSTDIR" + WriteRegStr HKLM "Software\Bino ${PACKAGE_VERSION}" "Install_Dir" "$INSTDIR" # Windows Add/Remove Programs support - StrCpy $MYTMP "Software\Microsoft\Windows\CurrentVersion\Uninstall\bino-${PACKAGE_VERSION}" - WriteRegStr HKLM $MYTMP "DisplayName" "bino ${PACKAGE_VERSION}" + StrCpy $MYTMP "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bino ${PACKAGE_VERSION}" + WriteRegStr HKLM $MYTMP "DisplayName" "Bino ${PACKAGE_VERSION}" WriteRegExpandStr HKLM $MYTMP "UninstallString" '"$INSTDIR\uninstall.exe"' WriteRegExpandStr HKLM $MYTMP "InstallLocation" "$INSTDIR" WriteRegStr HKLM $MYTMP "DisplayVersion" "${PACKAGE_VERSION}" @@ -113,8 +113,8 @@ Section "Uninstall" ; Remove registry keys - DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\bino-${PACKAGE_VERSION}" - DeleteRegKey HKLM "Software\bino-${PACKAGE_VERSION}" + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Bino ${PACKAGE_VERSION}" + DeleteRegKey HKLM "Software\Bino ${PACKAGE_VERSION}" ; Remove files Delete $INSTDIR\bin\bino.exe RMDir $INSTDIR\bin @@ -141,7 +141,7 @@ IfErrors startMenuDeleteLoopDone StrCmp $MUI_TEMP $SMPROGRAMS startMenuDeleteLoopDone startMenuDeleteLoop startMenuDeleteLoopDone: - DeleteRegKey /ifempty HKCU "Software\bino-${PACKAGE_VERSION}" + DeleteRegKey /ifempty HKCU "Software\Bino ${PACKAGE_VERSION}" ; Remove directories used RMDir "$INSTDIR"
View file
bino-0.9.1.tar.bz2/pkg/w32/notes.txt -> bino-0.9.2.tar.bz2/pkg/w32/notes.txt
Changed
@@ -1,5 +1,6 @@ Bino uses the following libraries: +- PThreads for multithreading: http://sourceware.org/pthreads-win32/ - FFmpeg for video and audio decoding: http://ffmpeg.org/ - OpenAL Soft for audio output: http://kcat.strangesoft.net/openal.html - OpenGL for video output: http://www.opengl.org/
View file
bino-0.9.1.tar.bz2/src/Makefile.am -> bino-0.9.2.tar.bz2/src/Makefile.am
Changed
@@ -50,6 +50,8 @@ video_output_color.fs.glsl \ video_output_render.fs.glsl +qt_resources-rcc.cpp: $(filter %.png,$(EXTRA_DIST)) ../AUTHORS ../COPYING + nodist_bino_SOURCES = \ qt_resources-rcc.cpp \ player_qt-moc.cpp \
View file
bino-0.9.1.tar.bz2/src/Makefile.in -> bino-0.9.2.tar.bz2/src/Makefile.in
Changed
@@ -788,6 +788,8 @@ ps ps-am tags tags-recursive uninstall uninstall-am \ uninstall-binPROGRAMS + +qt_resources-rcc.cpp: $(filter %.png,$(EXTRA_DIST)) ../AUTHORS ../COPYING @W32_TRUE@.ico.o: @W32_TRUE@ $(AM_V_GEN)echo "IDI_ICON1 ICON DISCARDABLE \"$<\"" | $(WINDRES) -o $@
View file
bino-0.9.1.tar.bz2/src/media_data.cpp -> bino-0.9.2.tar.bz2/src/media_data.cpp
Changed
@@ -255,7 +255,7 @@ std::string video_frame::format_info() const { - return str::asprintf("%dx%d, %.3g:1", width, height, aspect_ratio); + return str::asprintf("%dx%d, %.3g:1", raw_width, raw_height, aspect_ratio); } static int next_multiple_of_4(int x) @@ -353,12 +353,19 @@ break; } - size_t dst_offset = 0; - for (size_t y = 0; y < lines; y++) + if (src_row_size == dst_row_size) { - std::memcpy(dst + dst_offset, src + src_offset, dst_row_width); - dst_offset += dst_row_size; - src_offset += src_row_size; + std::memcpy(dst, src + src_offset, lines * src_row_size); + } + else + { + size_t dst_offset = 0; + for (size_t y = 0; y < lines; y++) + { + std::memcpy(dst + dst_offset, src + src_offset, dst_row_width); + dst_offset += dst_row_size; + src_offset += src_row_size; + } } } @@ -400,21 +407,23 @@ int audio_blob::sample_bits() const { + int bits = 0; switch (sample_format) { case u8: - return 8; + bits = 8; break; case s16: - return 16; + bits = 16; break; case f32: - return 32; + bits = 32; break; case d64: - return 64; + bits = 64; break; } + return bits; } parameters::parameters() :
View file
bino-0.9.1.tar.bz2/src/media_object.cpp -> bino-0.9.2.tar.bz2/src/media_object.cpp
Changed
@@ -135,6 +135,7 @@ std::vector<AVCodec *> video_codecs; std::vector<std::deque<AVPacket> > video_packet_queues; std::vector<mutex> video_packet_queue_mutexes; + std::vector<AVPacket> video_packets; std::vector<video_decode_thread> video_decode_threads; std::vector<AVFrame *> video_frames; std::vector<AVFrame *> video_out_frames; @@ -616,6 +617,8 @@ _ffmpeg->video_frame_templates.push_back(video_frame()); set_video_frame_template(j); // Allocate things required for decoding + _ffmpeg->video_packets.push_back(AVPacket()); + av_init_packet(&(_ffmpeg->video_packets[j])); _ffmpeg->video_decode_threads.push_back(video_decode_thread(_url, _ffmpeg, j)); _ffmpeg->video_frames.push_back(avcodec_alloc_frame()); if (!_ffmpeg->video_frames[j]) @@ -938,34 +941,52 @@ { if (packet.stream_index == _ffmpeg->video_streams[i]) { + // We do not check for missing timestamps here, as we do with audio + // packets, for the following reasons: + // 1. The video decoder might fill in a timestamp for us + // 2. We cannot drop video packets anyway, because of their + // interdependencies. We would mess up decoding. if (av_dup_packet(&packet) < 0) { throw exc(_url + ": Cannot duplicate packet."); } _ffmpeg->video_packet_queue_mutexes[i].lock(); _ffmpeg->video_packet_queues[i].push_back(packet); + _ffmpeg->video_packet_queue_mutexes[i].unlock(); + packet_queued = true; msg::dbg(_url + ": " + str::from(_ffmpeg->video_packet_queues[i].size()) + " packets queued in video stream " + str::from(i) + "."); - _ffmpeg->video_packet_queue_mutexes[i].unlock(); - packet_queued = true; } } for (size_t i = 0; i < _ffmpeg->audio_streams.size() && !packet_queued; i++) { if (packet.stream_index == _ffmpeg->audio_streams[i]) { - if (av_dup_packet(&packet) < 0) + _ffmpeg->audio_packet_queue_mutexes[i].lock(); + if (_ffmpeg->audio_packet_queues[i].empty() + && _ffmpeg->audio_last_timestamps[i] == std::numeric_limits<int64_t>::min() + && packet.dts == static_cast<int64_t>(AV_NOPTS_VALUE)) { - throw exc(_url + ": Cannot duplicate packet."); + // We have no packet in the queue and no last timestamp, probably + // because we just seeked. We *need* a packet with a timestamp. + msg::dbg(_url + ": audio stream " + str::from(i) + + ": dropping packet because it has no timestamp"); + } + else + { + if (av_dup_packet(&packet) < 0) + { + _ffmpeg->audio_packet_queue_mutexes[i].unlock(); + throw exc(_url + ": Cannot duplicate packet."); + } + _ffmpeg->audio_packet_queues[i].push_back(packet); + packet_queued = true; + msg::dbg(_url + ": " + + str::from(_ffmpeg->audio_packet_queues[i].size()) + + " packets queued in audio stream " + str::from(i) + "."); } - _ffmpeg->audio_packet_queue_mutexes[i].lock(); - _ffmpeg->audio_packet_queues[i].push_back(packet); - msg::dbg(_url + ": " - + str::from(_ffmpeg->audio_packet_queues[i].size()) - + " packets queued in audio stream " + str::from(i) + "."); _ffmpeg->audio_packet_queue_mutexes[i].unlock(); - packet_queued = true; } } if (!packet_queued) @@ -998,7 +1019,6 @@ void video_decode_thread::run() { - AVPacket pkt; int frame_finished = 0; do { @@ -1021,14 +1041,15 @@ } } while (empty); + av_free_packet(&(_ffmpeg->video_packets[_video_stream])); _ffmpeg->video_packet_queue_mutexes[_video_stream].lock(); - pkt = _ffmpeg->video_packet_queues[_video_stream].front(); + _ffmpeg->video_packets[_video_stream] = _ffmpeg->video_packet_queues[_video_stream].front(); _ffmpeg->video_packet_queues[_video_stream].pop_front(); _ffmpeg->video_packet_queue_mutexes[_video_stream].unlock(); _ffmpeg->reader->start(); // Refill the packet queue avcodec_decode_video2(_ffmpeg->video_codec_ctxs[_video_stream], - _ffmpeg->video_frames[_video_stream], &frame_finished, &pkt); - av_free_packet(&pkt); + _ffmpeg->video_frames[_video_stream], &frame_finished, + &(_ffmpeg->video_packets[_video_stream])); } while (!frame_finished); @@ -1055,9 +1076,24 @@ _frame.line_size[0][2] = _ffmpeg->video_frames[_video_stream]->linesize[2]; } - _frame.presentation_time = handle_timestamp(pkt.dts * 1000000 - * _ffmpeg->format_ctx->streams[_ffmpeg->video_streams[_video_stream]]->time_base.num - / _ffmpeg->format_ctx->streams[_ffmpeg->video_streams[_video_stream]]->time_base.den); + if (_ffmpeg->video_packets[_video_stream].dts != static_cast<int64_t>(AV_NOPTS_VALUE)) + { + _frame.presentation_time = handle_timestamp(_ffmpeg->video_packets[_video_stream].dts * 1000000 + * _ffmpeg->format_ctx->streams[_ffmpeg->video_streams[_video_stream]]->time_base.num + / _ffmpeg->format_ctx->streams[_ffmpeg->video_streams[_video_stream]]->time_base.den); + } + else if (_ffmpeg->video_last_timestamps[_video_stream] != std::numeric_limits<int64_t>::min()) + { + msg::wrn(_url + ": video stream " + str::from(_video_stream) + + ": no timestamp available, using a questionable guess"); + _frame.presentation_time = _ffmpeg->video_last_timestamps[_video_stream]; + } + else + { + msg::wrn(_url + ": video stream " + str::from(_video_stream) + + ": no timestamp available, using a bad guess"); + _frame.presentation_time = _ffmpeg->pos; + } } void media_object::start_video_frame_read(int video_stream) @@ -1134,7 +1170,7 @@ _ffmpeg->audio_packet_queues[_audio_stream].pop_front(); _ffmpeg->audio_packet_queue_mutexes[_audio_stream].unlock(); _ffmpeg->reader->start(); // Refill the packet queue - if (timestamp == std::numeric_limits<int64_t>::min()) + if (timestamp == std::numeric_limits<int64_t>::min() && packet.dts != static_cast<int64_t>(AV_NOPTS_VALUE)) { timestamp = packet.dts * 1000000 * _ffmpeg->format_ctx->streams[_ffmpeg->audio_streams[_audio_stream]]->time_base.num @@ -1168,6 +1204,16 @@ av_free_packet(&packet); } } + if (timestamp == std::numeric_limits<int64_t>::min()) + { + timestamp = _ffmpeg->audio_last_timestamps[_audio_stream]; + } + if (timestamp == std::numeric_limits<int64_t>::min()) + { + msg::wrn(_url + ": audio stream " + str::from(_audio_stream) + + ": no timestamp available, using a bad guess"); + timestamp = _ffmpeg->pos; + } _blob = _ffmpeg->audio_blob_templates[_audio_stream]; _blob.data = _ffmpeg->audio_blobs[_audio_stream].ptr(); @@ -1240,6 +1286,14 @@ _ffmpeg->audio_packet_queues[i].clear(); } // The next read request must update the position + for (size_t i = 0; i < _ffmpeg->video_streams.size(); i++) + { + _ffmpeg->video_last_timestamps[i] = std::numeric_limits<int64_t>::min(); + } + for (size_t i = 0; i < _ffmpeg->audio_streams.size(); i++) + { + _ffmpeg->audio_last_timestamps[i] = std::numeric_limits<int64_t>::min(); + } _ffmpeg->pos = std::numeric_limits<int64_t>::min(); // Restart packet reading _ffmpeg->reader->reset(); @@ -1300,6 +1354,10 @@ av_free_packet(&_ffmpeg->video_packet_queues[i][j]); } } + for (size_t i = 0; i < _ffmpeg->video_packets.size(); i++) + { + av_free_packet(&(_ffmpeg->video_packets[i])); + } for (size_t i = 0; i < _ffmpeg->audio_codec_ctxs.size(); i++) { if (i < _ffmpeg->audio_codecs.size() && _ffmpeg->audio_codecs[i])
View file
bino-0.9.1.tar.bz2/src/player.cpp -> bino-0.9.2.tar.bz2/src/player.cpp
Changed
@@ -610,8 +610,11 @@ _video_output->activate_next_frame(); } - _video_output->process_events(); - if (allowed_sleep > 0) + if (_video_output->has_events()) + { + _video_output->process_events(); + } + else if (allowed_sleep > 0) { usleep(allowed_sleep); }
View file
bino-0.9.1.tar.bz2/src/player_equalizer.cpp -> bino-0.9.2.tar.bz2/src/player_equalizer.cpp
Changed
@@ -63,6 +63,7 @@ { private: bool _is_master; + bool _first_step; protected: video_output *create_video_output() @@ -78,7 +79,7 @@ } public: - player_eq_node() : player(player::slave), _is_master(false) + player_eq_node() : player(player::slave), _is_master(false), _first_step(true) { } @@ -106,6 +107,8 @@ void seek(int64_t pos) { get_media_input_nonconst().seek(pos); + // The master player read a video frame; do the same to keep sync + start_frame_read(); } void start_frame_read() // Only called on slave nodes @@ -130,6 +133,12 @@ void step(bool *more_steps, int64_t *seek_to, bool *prep_frame, bool *drop_frame, bool *display_frame) { + if (!_is_master && _first_step) + { + // The master player reads a video frame; do the same on slave players to keep sync + start_frame_read(); + _first_step = false; + } player::step(more_steps, seek_to, prep_frame, drop_frame, display_frame); } }; @@ -169,6 +178,7 @@ void enter_fullscreen() { } void exit_fullscreen() { } bool toggle_fullscreen() { return false; } + bool has_events() { return false; } void process_events() { } void receive_notification(const notification &) { } @@ -743,7 +753,6 @@ if (frame_data.seek_to >= 0) { _player.seek(frame_data.seek_to); - _player.start_frame_read(); } if (frame_data.prep_frame) {
View file
bino-0.9.1.tar.bz2/src/video_output.h -> bino-0.9.2.tar.bz2/src/video_output.h
Changed
@@ -141,6 +141,7 @@ virtual bool toggle_fullscreen() = 0; /* Process window system events (if applicable) */ + virtual bool has_events() = 0; virtual void process_events() = 0; /* Prepare a new frame for display. */
View file
bino-0.9.1.tar.bz2/src/video_output_qt.cpp -> bino-0.9.2.tar.bz2/src/video_output_qt.cpp
Changed
@@ -201,6 +201,8 @@ setWindowIcon(QIcon(":logo/bino_logo_small_64x64.png")); // Set minimum size > 0 so that the container is always visible setMinimumSize(_w, _h); + // Set suitable size policy + setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); // Always paint the complete widget black QPalette p(palette()); p.setColor(QPalette::Background, Qt::black); @@ -348,7 +350,7 @@ container_layout->setColumnStretch(0, 1); delete _container_widget->layout(); _container_widget->setLayout(container_layout); - _container_widget->adjustSize(); + _container_widget->updateGeometry(); _widget->show(); _container_widget->show(); _container_widget->raise(); @@ -381,8 +383,8 @@ void video_output_qt::trigger_resize(int w, int h) { _container_widget->set_recommended_size(w, h); - _container_widget->resize(w, h); - _container_widget->layout()->update(); + _container_widget->updateGeometry(); + _container_widget->window()->adjustSize(); } void video_output_qt::mouse_set_pos(float dest) @@ -515,16 +517,20 @@ } _container_widget->setWindowState(_widget->windowState() & ~Qt::WindowFullScreen); _container_widget->setCursor(Qt::ArrowCursor); - _widget->resize(width(), height()); _container_widget->show(); _widget->setFocus(Qt::OtherFocusReason); } } +bool video_output_qt::has_events() +{ + return QApplication::hasPendingEvents(); +} + void video_output_qt::process_events() { + QApplication::sendPostedEvents(); QApplication::processEvents(); - QCoreApplication::sendPostedEvents(); } void video_output_qt::receive_notification(const notification ¬e)
View file
bino-0.9.1.tar.bz2/src/video_output_qt.h -> bino-0.9.2.tar.bz2/src/video_output_qt.h
Changed
@@ -132,6 +132,7 @@ virtual void exit_fullscreen(); virtual bool toggle_fullscreen(); + virtual bool has_events(); virtual void process_events(); virtual void receive_notification(const notification ¬e);
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.