Menu

#100 pix_film with DS eats up cpu in W32

0.93
open
w32
5
2014-07-08
2010-03-27
sistisette
No

When I send an [open( message to a pix_film object, if it uses DirectShow (as opposed to QuickTime) to decode the file, it starts consuming an enormous amount of cpu: around 30% of a 2.5GHz Intel Core Duo machine. Furthermore, it never stops eating that much cpu, even if you stop repdorucing the file (by setting auto to 0 and not changing the frame through the right inlet) and even if you disconnect it from the gemhead.

This happens with file encoded with various codecs: DV-PAL, H.264, Animation+, and I suspect everything else.

Note that if I open the files with QuickTime instead of DS (by appending the proper number to the open message), then this does not happen: the impact of opening the file on the CPU is minimal, almost impossible to note, and it only consumes cpu during few seconds after opening the file, and when _actually_ playing it (i.e. a gemhead connected to it and changing frame). That is, with quicktime pix_film only consumes CPU when it is supposed to, and it is much much less CPU: you can easily read 6 full-size DV-PAL files actually rendering some portion of them on the screen, and you can have a dozen of pix_film with [open(ed files without impact on CPU (or even many more, then the impact won't be on CPU but on performance in general due to the memory trashing).

This can't be normal: DirectShow is supposed to be much faster than QuickTime on Windows; also, any given media player will open a video file using DirectSHow and without eating up nearly as much cpu, especially when not playing.
There must be something wrong in GEM.

Discussion

  • IOhannes m zmölnig

    that's a touch one.
    there might be a problem with Gem using frame accurate seeking for playback, which might be handled better by QT than by DS.

     
  • IOhannes m zmölnig

    i meant to say, that this is a "tough" one, rather than touching...

     
  • sistisette

    sistisette - 2010-08-22

    I'm not sure but I don't think it is related to seeking because:

    - cpu consumption doesn't stop even if you don't send any frame number AND turn off "auto", that is, if you stop at a given frame
    - cpu consumption doesn't stop even after you disconnect pix_film from the gemhead

    If you remember the problem I reported in Linux, where there _is_ apparently a problem with frame-accurate seeking (but only with some codecs, maybe only h264), cpu consumption stops when you stop sending frame numbers to pix_film with auto turned off, and of course it stops if you disconnect it from the gemhead.

     
  • IOhannes m zmölnig

    i think the problem might be caused by threaded reading (which is prohibited by QuickTime, as it is not thread safe).

    you can disable threaded film decoding by sending a [thread 0( message prior to opening a new file.

     
  • IOhannes m zmölnig

    • labels: Pixes (pix_ objects) --> Pixes (pix_ objects), pix_film, DirectShow, w32
    • Group: win32 --> 0.93
     
  • IOhannes m zmölnig

    • OS: --> w32
     
  • IOhannes m zmölnig

    • Owner: Anonymous --> IOhannes m zmölnig
     

Anonymous
Anonymous

Add attachments
Cancel