Projects
Multimedia
bino
Sign Up
Log In
Username
Password
We truncated the diff of some files because they were too big. If you want to see the full diff for every file,
click here
.
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
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
.