[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Re: Movie module being merged



"tstate mix-up". I've looked, and there are no Python calls done without having the GIL. Like I said, its an extremely weird bug. It also occurs if you do five play throughs(play(0)) sequentially.

-Tyler

On Fri, Aug 21, 2009 at 6:11 PM, Lenard Lindstrom <len-l@xxxxxxxxx> wrote:
Hi,

Is it always a "tstate mix-up". If so, then it is likely a threading problem. Absolutely no Python api calls should be made while the GIL is released. If not then probably a memory problem.

Lenard

Tyler Laing wrote:
Yeah I know about that. Its because of everything that is done to the video file in the example code. Its a very hard error to pindown. Sometimes it happens during debugging, sometimes not. It happens on various kinds of videos, so its not format dependent, and it only happens after stopping and restarting, and adding surfaces. I haven't found it happening any other way.

Thanks for the feedback.

-Tyler

On Thu, Aug 20, 2009 at 2:05 PM, Lenard Lindstrom <len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>> wrote:

   Hi,

   It builds and installs in Debian lenny now. The __movie_test.py
   even works for the most part, though fails at the end with this error:

   Unpausing...
   True
   True
   Stopping..., sleeping for 3 seconds
   Playing again...
   done restart play...
   Surface time...
   ValueError: surface does not have the same aspect ratio as the
   video. This would cause surface corruption.
   Fatal Python error: ceval: tstate mix-up
   Aborted

   I was playing an .flv file, so maybe that had something to do with it.

   Lenard

   Tyler Laing wrote:

       Fixed that, sorry. I should have done an else, but I did an
       endif >.>

       -Tyler

       On Thu, Aug 20, 2009 at 1:09 PM, Lenard Lindstrom
       <len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>
       <mailto:len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>>> wrote:

          Hi Tyler,

          It is finding the headers, but now I am getting this
       compiler error:

          gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall
          -Wstrict-prototypes -fPIC -D_REENTRANT -I/usr/X11R6/include
          -I/usr/include/SDL -I/usr/include/ffmpeg -I/usr/include/ffmpeg
          -I/usr/include/SDL -I/usr/include/python2.5 -c src/_gmovie.c -o
          build/temp.linux-i686-2.5/src/_gmovie.o

          src/_gmovie.c: In function ‘video_image_display’:
          src/_gmovie.c:516: warning: unused variable ‘_oldtstate’
          src/_gmovie.c: In function ‘queue_picture’:
          src/_gmovie.c:826: warning: unused variable ‘_oldtstate’
          src/_gmovie.c: In function ‘stream_open’:
          src/_gmovie.c:1482: warning: unused variable
       ‘wanted_subti_stream’

          src/_gmovie.c: In function ‘video_render’:
          src/_gmovie.c:2444: error: ‘AVCodecContext’ has no member named
          ‘reordered_opaque’

          error: command 'gcc' failed with exit status 1
          l

          Here is the version information returned by ffmpeg:

          $/usr/bin/ffmpeg
          FFmpeg version r11872+debian_0.svn20080206-17+lenny1, Copyright
          (c) 2000-2008 Fabrice Bellard, et al.
           configuration: --enable-gpl --enable-libfaad --enable-pp
          --enable-swscaler --enable-x11grab --prefix=/usr
       --enable-libgsm
          --enable-libtheora --enable-libvorbis --enable-pthreads
          --disable-strip --enable-libdc1394 --disable-armv5te
          --disable-armv6 --disable-altivec --disable-vis --enable-shared
          --disable-static
           libavutil version: 49.6.0
           libavcodec version: 51.50.0
           libavformat version: 52.7.0
           libavdevice version: 52.0.0
           built on Apr 28 2009 02:12:01, gcc: 4.3.2

          Though ffmpeg is statically linked I assume it use the same
          library versions as the share libraries.

          Lenard

          Tyler Laing wrote:

              And I've now committed a fix for throwing exceptions if the
              surface given has the wrong aspect ratio.

              -Tyler

              On Thu, Aug 20, 2009 at 9:46 AM, Tyler Laing
              <trinioler@xxxxxxxxx <mailto:trinioler@xxxxxxxxx>
       <mailto:trinioler@xxxxxxxxx <mailto:trinioler@xxxxxxxxx>>
              <mailto:trinioler@xxxxxxxxx
       <mailto:trinioler@xxxxxxxxx> <mailto:trinioler@xxxxxxxxx
       <mailto:trinioler@xxxxxxxxx>>>> wrote:

                 I have this fixed, with it committed in revision
       2628. I have a
                 custom Dependency class that adds extra directories
       to the
              include
                 search path(like libavformat or ffmpeg). This
       prevents any
                 accidental conflict of namespaces. Let me know if this
              works or not.

                 -Tyler


                 On Tue, Aug 18, 2009 at 5:17 PM, Lenard Lindstrom
              <len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>
       <mailto:len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>>
                 <mailto:len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>
       <mailto:len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>>>> wrote:

                     Hi,

                     No, I don't see any Debian specific predefined
       compiler
                     macros. ffmpeg library information is available
       through
                     pkg-config.

                     Lenard

                     Tyler Laing wrote:

                         Does debian have a unique compile time flag
       I can use?

                         -Tyler

                         On Tue, Aug 18, 2009 at 12:09 PM, Lenard
       Lindstrom
                         <len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>
       <mailto:len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>>
              <mailto:len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>
       <mailto:len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>>>
                         <mailto:len-l@xxxxxxxxx
       <mailto:len-l@xxxxxxxxx> <mailto:len-l@xxxxxxxxx
       <mailto:len-l@xxxxxxxxx>>
              <mailto:len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>
       <mailto:len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>>>>> wrote:

                            Hi Tyler,

                            /usr/include is included in the default
       header
              search
                         paths. What
                            is installed is
       /usr/include/ffmpeg/avformat.h, not
                                  /usr/include/ffmpeg/libavformat/avformat.h. This
              may be
                         a quirk of
                            the Debian dev package and not the
       general case.

                            Lenard

                            Tyler Laing wrote:

                                You don't have -l/usr/include
       actually. What
              I will
                         do is add
                                to the directories searched, for the
       specific
                         libraries to
                                search in /usr/include/ffmpeg &&
              /usr/include/<relevant
                                library name> for if people install
       from source.
                         Does that
                                sound like a good solution?

                                -Tyler

                                On Tue, Aug 18, 2009 at 9:03 AM, Lenard
              Lindstrom
                                <len-l@xxxxxxxxx
       <mailto:len-l@xxxxxxxxx> <mailto:len-l@xxxxxxxxx
       <mailto:len-l@xxxxxxxxx>>
              <mailto:len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>
       <mailto:len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>>>
                         <mailto:len-l@xxxxxxxxx
       <mailto:len-l@xxxxxxxxx> <mailto:len-l@xxxxxxxxx
       <mailto:len-l@xxxxxxxxx>>
              <mailto:len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>
       <mailto:len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>>>>
                                <mailto:len-l@xxxxxxxxx
       <mailto:len-l@xxxxxxxxx>
              <mailto:len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>>
       <mailto:len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>
              <mailto:len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>>>
                         <mailto:len-l@xxxxxxxxx
       <mailto:len-l@xxxxxxxxx> <mailto:len-l@xxxxxxxxx
       <mailto:len-l@xxxxxxxxx>>
              <mailto:len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>
       <mailto:len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>>>>>> wrote:

                                   Ok, when I add

                                   _movie src/_gsound.c src/_gmovie.c
                         src/_gcommand.c src/gmovie.c
                                   $(SDL) $(AVFORMAT) $(SWSCALE) $(MIXER)
              $(DEBUG)

                                   to Setup I get these build errors:


                                   building 'pygame._movie' extension
                                   gcc -pthread -fno-strict-aliasing
       -DNDEBUG -g
                         -fwrapv -O2 -Wall
                                   -Wstrict-prototypes -fPIC -D_REENTRANT
                         -I/usr/X11R6/include
                                   -I/usr/include/SDL -I/usr/include/SDL
                                -I/usr/include/python2.5 -c
                                   src/_gsound.c -o
                         build/temp.linux-i686-2.5/src/_gsound.o
                                   In file included from
       src/_gsound.c:35:
                                   src/_gsound.h:36:34: error:
                         libavformat/avformat.h: No such
                                file
                                   or directory
                                   src/_gsound.c: In function
       ‘seekBuffer’:
                                   src/_gsound.c:403: error:
       ‘AV_NOPTS_VALUE’
                         undeclared
                                (first use
                                   in this function)
                                   src/_gsound.c:403: error: (Each
       undeclared
                         identifier is
                                reported
                                   only once
                                   src/_gsound.c:403: error: for each
              function it
                         appears in.)
                                   error: command 'gcc' failed with exit
              status 1

                                   The Debian dev package installs
       avformat.h in
                         ffmpeg, not
                                libavformat.

                                   Lenard


                                   Lenard Lindstrom wrote:

                                       Hi René,

                                       My mistake. I didn't pay
       attention to
              the error.
                                _movie.so was
                                       not event built since the
       _movie entry is
                         missing in
                                Setup.in.
                                       I had to manually enter it to
       Setup
              the last
                         time, and that
                                       was clobbered when I reran
       config.py.

                                       Lenard


                                       René Dudfield wrote:

                                           On Tue, Aug 18, 2009 at
       4:47 PM,
              Lenard
                                           Lindstrom<len-l@xxxxxxxxx
       <mailto:len-l@xxxxxxxxx>
              <mailto:len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>>
                         <mailto:len-l@xxxxxxxxx
       <mailto:len-l@xxxxxxxxx> <mailto:len-l@xxxxxxxxx
       <mailto:len-l@xxxxxxxxx>>>
              <mailto:len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>
       <mailto:len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>>
                         <mailto:len-l@xxxxxxxxx
       <mailto:len-l@xxxxxxxxx> <mailto:len-l@xxxxxxxxx
       <mailto:len-l@xxxxxxxxx>>>>
                                <mailto:len-l@xxxxxxxxx
       <mailto:len-l@xxxxxxxxx>
              <mailto:len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>>
       <mailto:len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>
              <mailto:len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>>>
                         <mailto:len-l@xxxxxxxxx
       <mailto:len-l@xxxxxxxxx> <mailto:len-l@xxxxxxxxx
       <mailto:len-l@xxxxxxxxx>>
              <mailto:len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>
       <mailto:len-l@xxxxxxxxx <mailto:len-l@xxxxxxxxx>>>>>> wrote:

                                               Hi Tyler,

                                               The module now builds,
       but the
                         _movie_test.py unit
                                               tests fail:

                                               ERROR:
       MovieTypeTest.test_height
                                                                           ----------------------------------------------------------------------
                                               Traceback (most recent
       call
              last):
                                               File
                                                                           "/home/lenard/.local/lib/python2.5/site-packages/pygame/tests/_movie_test.py",

                                               line 125, in test_height
                                               movie =
       gmovie.Movie(movie_file)
                                               AttributeError: 'NoneType'
              object has no
                                attribute 'Movie'

                                               If "movie_file" is missing
              shouldn't
                         gmovie.Movie
                                               raise an exception?

                                               Lenard


                                           hi,

                                           check out the try/except
       at the
              top of
                         that test...
                                maybe
                                           it is
                                           raising an exception, and
              catching it.

                                           that try/except was added
       to try
              and get
                         the build
                                bot to
                                           build again.

                                           cheers,






                                --        Visit my blog at
              http://oddco.ca/zeroth/zblog





                         --            Visit my blog at
              http://oddco.ca/zeroth/zblog






                 --    Visit my blog at http://oddco.ca/zeroth/zblog




              --        Visit my blog at http://oddco.ca/zeroth/zblog





       --        Visit my blog at http://oddco.ca/zeroth/zblog





--
Visit my blog at http://oddco.ca/zeroth/zblog




--
Visit my blog at http://oddco.ca/zeroth/zblog