Changeset 15

Show
Ignore:
Timestamp:
05/04/07 12:41:46 (2 years ago)
Author:
satelliittipupu
Message:

Importing added. Drag and drop started.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/pihlaja/src/dsss.conf

    r14 r15  
    1616#debug symbols: 
    1717 
    18 buildflags += -debug=25 
     18#buildflags += -debug=25 
    1919buildflags += -debug=gstreamer 
    2020buildflags += -debug=gstreamerbus 
     
    2727buildflags += -debug=LinkableScene 
    2828buildflags += -debug=SceneChain 
    29 buildflags += -debug=Track 
     29#buildflags += -debug=Track 
    3030#buildflags += -debug=MaterialsTreeview 
    3131#buildflags += -debug=Render 
    3232#buildflags += -debug=Invalidation 
    3333#buildflags += -debug=AdjustTree 
    34 buildflags += -debug=RTree 
     34#buildflags += -debug=RTree 
    3535#buildflags += -debug=RTreeError 
    3636#buildflags += -debug=RTreeDebugCheck 
    3737#buildflags += -debug=RTreeTraverse 
    38 buildflags += -debug=RTreeNearestNeighbour 
     38#buildflags += -debug=RTreeNearestNeighbour 
    3939#buildflags += -debug=FindLeaf 
    4040#buildflags += -debug=List 
    4141#buildflags += -debug=ClosestCutFit 
    4242#buildflags += -debug=CheckOverlapping 
    43 #buildflags += -debug=Discoverer 
     43buildflags += -debug=Discoverer 
    4444#buildflags += -debug=EditGroup 
    4545#buildflags += -debug=IterateWithNearestNeighbour 
  • trunk/pihlaja/src/pihlaja/canvas/canvas.d

    r14 r15  
    200200        } 
    201201    } 
     202     
     203    /* 
     204    * This is used to draw stuff that the 
     205    * Movie wants to draw. So overload this 
     206    * to draw some stuff in Movie. 
     207    */ 
     208    void render( Cairo cr ) 
     209    { 
     210     
     211    } 
    202212 
    203213    int onExpose(GdkEventExpose* event, Widget widget) 
     
    367377                lastHitLinkableScene.renderLinkingRight( cr, crx(mouseCX), cry(mouseCY) ); 
    368378        } 
    369  
     379         
     380         
     381        render( cr ); 
     382         
     383         
    370384        cr.restore(); 
    371385 
  • trunk/pihlaja/src/pihlaja/core/discoverer.d

    r14 r15  
    137137    void addFile( char[] filename ) 
    138138    { 
    139         debug(Discoverer) Stdout("Discoverer.addFile() START. file: ", filename )
    140         debug(Discoverer) scope(exit) Stdout("Discoverer.addFile() END. file: ", filename )
     139        debug(Discoverer) Stdout("Discoverer.addFile() START. file: ")(filename).newline
     140        debug(Discoverer) scope(exit) Stdout("Discoverer.addFile() END. file: ")(filename).newline
    141141        //queue a filename to be discovered 
    142142        //gst.info("filename: %s" % filename) 
     
    156156        { 
    157157            //gst.warning 
    158             debug(Discoverer) Stdout("Discoverer.startAnalysis() called when still working!")
     158            debug(Discoverer) Stdout("Discoverer.startAnalysis() called when still working!").newline
    159159            return false; 
    160160        } 
     
    163163        { 
    164164            //gst.warning 
    165             debug(Discoverer) Stdout("Nothing to analyze!!")
     165            debug(Discoverer) Stdout("Nothing to analyze!!").newline
    166166            return false; 
    167167        } 
     
    169169        working = true; 
    170170         
    171         debug(Discoverer) Stdout("Discoverer.startAnalysis() Creating idle.")
     171        debug(Discoverer) Stdout("Discoverer.startAnalysis() Creating idle.").newline
    172172        //gobject.idle_add( &analyze ); 
    173173        m_idle = new Idle( &analyze ); 
     174         
    174175        /*if( m_mainloop !is null ) 
    175176        { 
     
    187188    protected bool finishAnalysis() 
    188189    { 
    189         debug(Discoverer) Stdout("Discoverer.finishAnalysis() START. ", current )
     190        debug(Discoverer) Stdout("Discoverer.finishAnalysis() START. ")( current ).newline
    190191        debug(Discoverer) scope(exit) Stdout("Discoverer.finishAnalysis() END.").newline; 
    191192        //Call this method when the current file is analyzed 
     
    194195        if( analyzing == false ) 
    195196        { 
    196             debug(Discoverer) Stdout("Discoverer.finishAnalysis() Called when not analyzing!!");//gst.warning 
     197            debug(Discoverer) Stdout("Discoverer.finishAnalysis() Called when not analyzing!!").newline;//gst.warning 
    197198            return false; 
    198199        } 
    199200 
    200         /*if( finishTimeout !is null ) 
    201         { 
    202             Stdout("Discoverer.finishAnalysis() Stopping and deleting finishTimeout.")
     201        if( finishTimeout !is null ) 
     202        { 
     203            Stdout("Discoverer.finishAnalysis() Stopping and deleting finishTimeout.").newline
    203204            finishTimeout.stop(); 
    204205            //finishTimeout = null; 
    205             delete finishTimeout; 
    206         }*/ 
     206            //delete finishTimeout; 
     207        } 
    207208         
    208209        //Source.remove( timeoutid ); 
     
    215216        thisdone = true; 
    216217 
    217         debug(Discoverer) Stdout("Discoverer.finishAnalysis() Cleaning up after finished analyzing", current );//gst.info 
     218        debug(Discoverer) Stdout("Discoverer.finishAnalysis() Cleaning up after finished analyzing")( current ).newline;//gst.info 
    218219 
    219220        //finish current, cleanup 
     
    234235            dbin.disconnectOnPadAdded(); 
    235236         
    236         debug(Discoverer) Stdout("before setting pipeline to NULL.");//gst.info 
     237        debug(Discoverer) Stdout("before setting pipeline to NULL.").newline;//gst.info 
    237238         
    238239        //res = 
     
    241242            if( pipeline.setState( GstState.NULL ) == GstStateChangeReturn.FAILURE ) 
    242243            { 
    243                 debug(Discoverer) Stdout("Discoverer.finishAnalysis() Pipeline didn't want to go to NULL. Somethings wrong.")
     244                debug(Discoverer) Stdout("Discoverer.finishAnalysis() Pipeline didn't want to go to NULL. Somethings wrong.").newline
    244245            } 
    245246        } 
    246247        //gst.info("after setting to NULL : %s" % res) 
    247248         
    248         debug(Discoverer) Stdout("setting fakesink to NULL.")
     249        debug(Discoverer) Stdout("setting fakesink to NULL.").newline
    249250        if( fakesink !is null ) 
    250251            fakesink.setState( GstState.NULL ); 
     
    252253        if( currentVideoMaterial !is null ) 
    253254        { 
    254             debug(Discoverer) Stdout("Here's where we set the mediatags for video.")
     255            debug(Discoverer) Stdout("Here's where we set the mediatags for video.").newline
    255256            ///////BACK currentVideoMaterial.addMediaTags( currentTags ); 
    256257             
    257258            //emit('finished-analyzing', currentVideoMaterial); 
    258259        } 
     260        else Stdout("\nNo video material found in ")( current ).newline; 
    259261         
    260262        if( currentAudioMaterial !is null ) 
    261263        { 
    262             debug(Discoverer) Stdout("Here's where we set the mediatags for audio.")
     264            debug(Discoverer) Stdout("Here's where we set the mediatags for audio.").newline
    263265            ///////BACK currentAudioMaterial.addMediaTags( currentTags ); 
    264266             
    265267            //emit('finished-analyzing', currentAudioMaterial); 
    266268        } 
    267          
    268         debug(Discoverer) Stdout("Set all to their initial state."); 
     269        else Stdout("\nNo audio material found in ")( current ).newline; 
     270         
     271        //This will create the materialMovie in project, if the 
     272        //material only had one video or audio part. 
     273        //And it will also set the last_material to null, 
     274        //so we don't get duplicate materials the next time 
     275        //we use discoverer. 
     276        project.discovererAddMaterialMovie( null ); 
     277         
     278         
     279         
     280        debug(Discoverer) Stdout("Set all to their initial state.").newline; 
    269281        //Set all to their initial state: 
    270282        //currentTags = []; 
     
    291303            working = false; 
    292304            //gst.info 
    293             debug(Discoverer) Stdout("\n!!!!!!!!\nDiscoverer is now ready again. All materials have been processed.\n!!!!!!!!\n")
     305            debug(Discoverer) Stdout("\n!!!!!!!!\nDiscoverer is now ready again. All materials have been processed.\n!!!!!!!!\n").newline
    294306            //emit("ready") 
    295307        } 
     
    302314    protected bool timeoutCb() 
    303315    { 
    304         debug(Discoverer) Stdout("Discoverer.timeoutCb() START. ", current )
     316        debug(Discoverer) Stdout("Discoverer.timeoutCb() START. ")( current ).newline
    305317        debug(Discoverer) scope(exit) Stdout("Discoverer.timeoutCb() END.").newline; 
    306         Stdout("timeoutCb."); 
    307318        //gobject.idle_add(_finishAnalysis); 
    308319         
    309320        if( analyzing == false ) 
    310321        { 
     322            Stdout("timeoutCb() analyzing is false. returning false.").newline; 
    311323            return false; 
    312324        } 
     325        Stdout("timeoutCb() analyzing is true. adding idle listener for finishAnalysis.").newline; 
    313326         
    314327        //m_mainloop.idleAdd( &finishAnalysis ); 
     
    323336        debug(Discoverer) scope(exit) Stdout("Discoverer.analyze() END.").newline; 
    324337         
    325         debug(Discoverer) Stdout("Sets up a pipeline to analyze the given uri")
     338        debug(Discoverer) Stdout("Sets up a pipeline to analyze the given uri.").newline
    326339         
    327340        analyzing = true; 
     
    331344        current = queue.head(); 
    332345        queue.removeHead();//Why can't there be a popStart() kind of method for LinkSeq? 
    333         debug(Discoverer) Stdout("Analyzing ", current)
     346        debug(Discoverer) Stdout("Analyzing ")( current).newline
    334347        currentVideoMaterial = null; 
    335348        currentAudioMaterial = null; 
    336349         
    337350        //setup graph and start analyzing 
    338         debug(Discoverer) Stdout("creating pipeline for Discoverer.")
     351        debug(Discoverer) Stdout("creating pipeline for Discoverer.").newline
    339352        pipeline = new Pipeline( "Discoverer-" ~ current ); 
    340353         
    341         debug(Discoverer) Stdout("Creating filesource.")
     354        debug(Discoverer) Stdout("Creating filesource.").newline
    342355        //source = gst.element_make_from_uri(gst.URI_SRC, current, "src-%s" % current); 
    343356        source = ElementFactory.make( "filesrc", "src-" ~ current ); 
     
    346359        { 
    347360            //gst.warning 
    348             debug(Discoverer) Stdout( "This is not a media file : ", current )
     361            debug(Discoverer) Stdout( "This is not a media file : ")( current ).newline
    349362            //emit("not_media_file", current, "Couldn't construct pipeline.") 
    350363            //gobject.idle_add(_finishAnalysis) 
     
    355368        } 
    356369         
    357         debug(Discoverer) Stdout("Setting location to ", current )
     370        debug(Discoverer) Stdout("Setting location to ")( current ).newline
    358371        source.location( current ); 
    359372 
    360         debug(Discoverer) Stdout("Creating decodebin2.")
     373        debug(Discoverer) Stdout("Creating decodebin2.").newline
    361374        //if os.getenv("USE_DECODEBIN2"): 
    362         dbin = ElementFactory.make("decodebin", "dbin"); 
     375        dbin = ElementFactory.make("decodebin2", "dbin"); 
    363376        //else: 
    364377        //  dbin = gst.element_factory_make("decodebin", "dbin") 
    365378 
    366         debug(Discoverer) Stdout("Adding onPadAdded signalhandlers.")
     379        debug(Discoverer) Stdout("Adding onPadAdded signalhandlers.").newline
    367380        //signalsid.append((dbin, dbin.connect("new-decoded-pad", _newDecodedPadCb))) 
    368381        //signalsid.append((dbin, dbin.connect("unknown-type", _unknownTypeCb))) 
     
    378391        pipeline.add( dbin ); 
    379392        source.link(dbin); 
    380         debug(Discoverer) Stdout("analysis pipeline created")
     393        debug(Discoverer) Stdout("analysis pipeline created").newline
    381394 
    382395        //adding fakesink to make pipeline not terminate state before receiving no-more-pads 
     
    384397        pipeline.add(fakesink); 
    385398 
    386         debug(Discoverer) Stdout("Adding busMessageCb.")
     399        debug(Discoverer) Stdout("Adding busMessageCb.").newline
    387400        //bus = pipeline.get_bus() 
    388401        //signalsid.append((bus, bus.connect("message", _busMessageCb))) 
     
    390403        busWatchId = pipeline.getBus().addWatch( &busMessageCb ); 
    391404 
    392         debug(Discoverer) Stdout("setting pipeline to PAUSED")
     405        debug(Discoverer) Stdout("setting pipeline to PAUSED").newline
    393406 
    394407        if( pipeline.setState(GstState.PAUSED) == GstStateChangeReturn.FAILURE ) 
    395408        { 
    396409            //emit("not_media_file", current, "Pipeline didn't want to go to PAUSED"); 
    397             debug(Discoverer) Stdout("Not media file. Pipeline didn't want to go to PAUSED")
     410            debug(Discoverer) Stdout("Not media file. Pipeline didn't want to go to PAUSED").newline
    398411            //gobject.idle_add(_finishAnalysis) 
    399412            //m_mainloop.idleAdd( &finishAnalysis ); 
     
    452465    bool busMessageCb( Message message ) 
    453466    { 
    454         //debug(Discoverer) Stdout("Discoverer.busMessageCb() START. ", current )
    455         //debug(Discoverer) scope(exit) Stdout("Discoverer.busMessageCb() END. ")
     467        debug(gstreamerbus) debug(Discoverer) Stdout("Discoverer.busMessageCb() START. ")( current ).newline
     468        debug(gstreamerbus) debug(Discoverer) scope(exit) Stdout("Discoverer.busMessageCb() END. ").newline
    456469         
    457470        if( thisdone || message is null || pipeline is null ) 
    458471        { 
    459             debug(Discoverer) Stdout("thisdone or message null or pipeline null.")
     472            debug(Discoverer) Stdout("thisdone or message null or pipeline null.").newline
    460473            return true; 
    461474        } 
    462         //gst.log("%s:%s" % (message.src.get_name(), message.type)) 
    463         if( message.type == GstMessageType.STATE_CHANGED ) 
    464         { 
    465             debug(Discoverer) Stdout("message.type == STATE_CHANGED."); 
     475         
     476        switch( message.type ) 
     477        { 
     478            case GstMessageType.UNKNOWN: 
     479                debug(gstreamerbus) Stdout("PipelinePlayer Unknown message type.").newline; 
     480            break; 
     481            case GstMessageType.EOS: 
     482                debug(gstreamerbus) Stdout("Discoverer End-of-stream.").newline; 
     483                 
     484                thisdone = true; 
     485                //filename = "/tmp/" + currentVideoMaterial.name.encode('base64').replace('\n','') + ".png"; 
     486                //if os.path.isfile(filename): 
     487                    //currentVideoMaterial.setThumbnail(filename) 
     488                //gobject.idle_add(_finishAnalysis) 
     489                //m_mainloop.idleAdd( &finishAnalysis ); 
     490                m_idle.addListener( &finishAnalysis ); 
     491                //finishAnalysis(); 
     492            break; 
     493 
     494            case GstMessageType.ERROR: 
     495            { 
     496                gchar *dbug; 
     497                GError *err; 
     498                message.parseError(&err, &dbug); 
     499                //g_free (dbug); 
     500                //debug(gstreamer)  
     501                Stdout("PipelinePlayer Error: ")(err.message).newline; 
     502                //g_error_free (err); 
     503                //GtkD.mainQuit(); 
     504            break; 
     505            } 
     506             
     507            case GstMessageType.WARNING: 
     508                debug(gstreamerbus) Stdout("Bus message: Warning.").newline; 
     509            break; 
     510 
     511            case GstMessageType.INFO: 
     512                debug(gstreamerbus) Stdout("Bus message: Info.").newline; 
     513            break; 
     514     
     515            case GstMessageType.TAG: 
     516                //debug(gstreamerbus) Stdout("Bus message: Tag.").newline; 
     517                debug(Discoverer) Stdout("Discoverer.busMessageCb() Got tag message for file ")( current ).newline; 
     518                //gst.debug("Got tags %s" % message.structure.to_string()) 
     519                //currentTags.append(message.parse_tag()); 
     520                currentTags = message.parseTag(); 
     521            break; 
     522         
     523            case GstMessageType.BUFFERING: 
     524                debug(gstreamerbus) Stdout("Bus message: Buffering.").newline; 
     525            break; 
     526 
     527            case GstMessageType.STATE_CHANGED: 
     528                debug(gstreamerbus) Stdout("Bus message: State changed.").newline; 
     529                 
    466530            //Pipeline blom = cast(Pipeline) message.src(); 
    467531         
     
    476540                if( prev == GstState.READY && anew == GstState.PAUSED && pending == GstState.VOID_PENDING ) 
    477541                { 
    478                     debug(Discoverer) Stdout("Pipeline is prerolled.")
     542                    debug(Discoverer) Stdout("Pipeline is prerolled.").newline
    479543                    prerolled = true; 
    480544                    // Let's get the information from all the pads 
     
    483547                    if( currentVideoMaterial !is null && currentVideoMaterial.materialType() == MaterialType.VIDEO )//currentVideoMaterial.is_video ) 
    484548                    { 
    485                         debug(Discoverer) Stdout("MaterialType == VIDEO.")
     549                        debug(Discoverer) Stdout("MaterialType == VIDEO.").newline
    486550                        //gst.log("pipeline has gone to PAUSED, now pushing to PLAYING") 
    487551                        if( pipeline.setState(GstState.PLAYING) == GstStateChangeReturn.FAILURE ) 
    488552                        { 
    489553                            //emit("not_media_file", current, "Pipeline didn't want to go to PLAYING") 
    490                             debug(Discoverer) Stdout("Pipeline didn't want to go to playing")
     554                            debug(Discoverer) Stdout("Pipeline didn't want to go to playing").newline
    491555                            //gobject.idle_add(_finishAnalysis) 
    492556                            //m_mainloop.idleAdd( &finishAnalysis ); 
     
    497561                    else if( nomorepads ) 
    498562                    { 
    499                         debug(Discoverer) Stdout("finished analyzing")
     563                        debug(Discoverer) Stdout("finished analyzing").newline
    500564                        //gobject.idle_add(_finishAnalysis) 
    501565                        //m_mainloop.idleAdd( &finishAnalysis ); 
     
    505569                    else 
    506570                    { 
    507                         debug(Discoverer) Stdout("got prerolled but haven't got all pads yet");//gst.warning 
     571                        debug(Discoverer) Stdout("got prerolled but haven't got all pads yet").newline;//gst.warning 
    508572                    } 
    509573                } 
    510574            //} 
    511575            //else Stdout("message.src != pipeline. blaah..."); 
     576                 
     577            break; 
     578 
     579            case GstMessageType.STATE_DIRTY: 
     580                debug(gstreamerbus) Stdout("Bus message: State dirty.").newline; 
     581            break; 
     582 
     583            case GstMessageType.STEP_DONE: 
     584                debug(gstreamerbus) Stdout("Bus message: Step done.").newline; 
     585            break; 
     586 
     587            case GstMessageType.CLOCK_PROVIDE: 
     588                debug(gstreamerbus) Stdout("Bus message: CLOCK_PROVIDE.").newline; 
     589            break; 
     590 
     591            case GstMessageType.CLOCK_LOST: 
     592                debug(gstreamerbus) Stdout("Bus message: CLOCK_LOST.").newline; 
     593            break; 
     594 
     595            case GstMessageType.NEW_CLOCK: 
     596                debug(gstreamerbus) Stdout("Bus message: NEW_CLOCK.").newline; 
     597            break; 
     598 
     599            case GstMessageType.STRUCTURE_CHANGE: 
     600                debug(gstreamerbus) Stdout("Bus message: STRUCTURE_CHANGE.").newline; 
     601            break; 
     602 
     603            case GstMessageType.STREAM_STATUS: 
     604                debug(gstreamerbus) Stdout("Bus message: STREAM_STATUS.").newline; 
     605            break; 
     606 
     607            case GstMessageType.APPLICATION: 
     608                debug(gstreamerbus) Stdout("Bus message: APPLICATION.").newline; 
     609            break; 
     610 
     611            case GstMessageType.ELEMENT: 
     612                debug(gstreamerbus) Stdout("Bus message: ELEMENT.").newline; 
     613                //gst.debug("Element message %s" % message.structure.to_string()) 
     614                if( message.structure.getName() == "redirect" ) 
     615                { 
     616                    debug(Discoverer) Stdout("We don't implement redirections currently, ignoring file").newline;//gst.warning 
     617                    //finishAnalysis();//gobject.idle_add(_finishAnalysis) 
     618                    //m_mainloop.idleAdd( &finishAnalysis ); 
     619                    m_idle.addListener( &finishAnalysis ); 
     620                } 
     621            break; 
     622 
     623            case GstMessageType.SEGMENT_START: 
     624                debug(gstreamerbus) Stdout("Bus message: SEGMENT_START.").newline; 
     625            break; 
     626 
     627            case GstMessageType.SEGMENT_DONE: 
     628                debug(gstreamerbus) Stdout("Bus message: SEGMENT_DONE.").newline; 
     629            break; 
     630 
     631            case GstMessageType.DURATION: 
     632                debug(gstreamerbus) Stdout("Bus message: DURATION.").newline; 
     633            break; 
     634 
     635            default: 
     636            break; 
     637        } 
     638        /* 
     639        //gst.log("%s:%s" % (message.src.get_name(), message.type)) 
     640        if( message.type == GstMessageType.STATE_CHANGED ) 
     641        {    
    512642        } 
    513643        else if( message.type == GstMessageType.EOS ) 
    514644        { 
    515             debug(Discoverer) Stdout("got EOS");//gst.log 
    516             thisdone = true; 
    517             //filename = "/tmp/" + currentVideoMaterial.name.encode('base64').replace('\n','') + ".png"; 
    518             //if os.path.isfile(filename): 
    519                 //currentVideoMaterial.setThumbnail(filename) 
    520             //gobject.idle_add(_finishAnalysis) 
    521             //m_mainloop.idleAdd( &finishAnalysis ); 
    522             m_idle.addListener( &finishAnalysis ); 
    523             //finishAnalysis(); 
    524645        } 
    525646        else if( message.type == GstMessageType.ERROR ) 
    526647        { 
    527             debug(Discoverer) Stdout("Discoverer.busMessageCb() Got error message.")
     648            //debug(Discoverer) Stdout("Discoverer.busMessageCb() Got error message.").newline
    528649            //error, detail = message.parse_error() 
    529650            //handleError(error, detail, message.src) 
     
    531652        else if( message.type == GstMessageType.WARNING ) 
    532653        { 
    533             debug(Discoverer) Stdout("got a WARNING");//gst.warning 
     654            //debug(Discoverer) Stdout("got a WARNING").newline;//gst.warning 
    534655        } 
    535656        else if( message.type == GstMessageType.ELEMENT ) 
    536657        { 
    537             //gst.debug("Element message %s" % message.structure.to_string()) 
    538             if( message.structure.getName() == "redirect" ) 
    539             { 
    540                 debug(Discoverer) Stdout("We don't implement redirections currently, ignoring file");//gst.warning 
    541                 //finishAnalysis();//gobject.idle_add(_finishAnalysis) 
    542                 //m_mainloop.idleAdd( &finishAnalysis ); 
    543                 m_idle.addListener( &finishAnalysis ); 
    544             } 
    545658        } 
    546659        else if( message.type == GstMessageType.TAG ) 
    547660        { 
    548             debug(Discoverer) Stdout("Discoverer.busMessageCb() Got tag message for file ", current ); 
    549             //gst.debug("Got tags %s" % message.structure.to_string()) 
    550             //currentTags.append(message.parse_tag()); 
    551             currentTags = message.parseTag(); 
    552661        } 
    553662        else 
     
    555664            //gst.log("%s:%s" % ( message.type, message.src)) 
    556665             
    557         } 
     666        }*/ 
    558667        return true; 
    559668    } 
     
    561670    protected void getPadsInfo() 
    562671    { 
    563         debug(Discoverer) Stdout("Discoverer.getPadsInfo() START. ", current )
    564         debug(Discoverer) scope(exit) Stdout("Discoverer.getPadsInfo() END. ", current )
     672        debug(Discoverer) Stdout("Discoverer.getPadsInfo() START. ")( current ).newline
     673        debug(Discoverer) scope(exit) Stdout("Discoverer.getPadsInfo() END. ")( current ).newline
    565674         
    566675        // iterate all src pads and check their information 
    567         debug(Discoverer) Stdout("Discoverer.getPadsInfo() Getting pads info on decodebin for file ", current )
    568  
    569         debug(Discoverer) Stdout("Discoverer.getPadsInfo() Iterating through decodebin pads:")
     676        debug(Discoverer) Stdout("Discoverer.getPadsInfo() Getting pads info on decodebin for file ")( current ).newline
     677 
     678        debug(Discoverer) Stdout("Discoverer.getPadsInfo() Iterating through decodebin pads:").newline
    570679         
    571680        if( dbin is null ) 
    572681        { 
    573             debug(Discoverer) Stdout("Discoverer.getPadsInfo() dbin is null. returning.")
     682            debug(Discoverer) Stdout("Discoverer.getPadsInfo() dbin is null. returning.").newline
    574683            return; 
    575684        } 
     
    579688        foreach(Pad pad; dbin.pads() )  //for pad in list(pipeline.get_by_name("dbin").pads()): 
    580689        { 
    581             debug(Discoverer) Stdout("Going through dbin pads: ", pad.getName() )
     690            debug(Discoverer) Stdout("Going through dbin pads: ")( pad.getName() ).newline
    582691         
    583692            if( pad.getDirection() == GstPadDirection.SINK ) 
    584693            { 
    585                 debug(Discoverer) Stdout("Discoverer.getPadsInfo() This is a sink pad. Skipping it.")
     694                debug(Discoverer) Stdout("Discoverer.getPadsInfo() This is a sink pad. Skipping it.").newline
    586695                continue; 
    587696            } 
     
    592701            if( caps is null ) 
    593702            { 
    594                 debug(Discoverer) Stdout("Discoverer.getPadsInfo() pads caps are null. Somethings wrong here. Skipping.");     
     703                debug(Discoverer) Stdout("Discoverer.getPadsInfo() pads caps are null. Somethings wrong here. Skipping.").newline;     
    595704                trytogetnegcaps = true; 
    596705            } 
    597706            else if( caps.getCapsStruct() is null ) 
    598707            { 
    599                 debug(Discoverer) Stdout("Discoverer.getPadsInfo() THIS IS YOUR WORST NIGHTMARE. caps.getCapsStruct is null.")
     708                debug(Discoverer) Stdout("Discoverer.getPadsInfo() THIS IS YOUR WORST NIGHTMARE. caps.getCapsStruct is null.").newline
    600709                trytogetnegcaps = true; 
    601710            } 
     
    603712            if( caps.isFixed() == false || trytogetnegcaps == true ) 
    604713            { 
    605                 debug(Discoverer) Stdout("Caps are not fixed. Trying to get negotiated caps.")
     714                debug(Discoverer) Stdout("Caps are not fixed. Trying to get negotiated caps.").newline
    606715                caps = pad.getNegotiatedCaps(); 
    607716            } 
     
    609718            if( caps is null )// || caps.getCapsStruct() is null ) 
    610719            { 
    611                 debug(Discoverer) Stdout("Discoverer.getPadsInfo() Negotiated pads caps are null. Somethings wrong here. Skipping.")
     720                debug(Discoverer) Stdout("Discoverer.getPadsInfo() Negotiated pads caps are null. Somethings wrong here. Skipping.").newline
    612721                continue; 
    613722            } 
    614723            else if( caps.getCapsStruct() is null ) 
    615724            { 
    616                 debug(Discoverer) Stdout("Discoverer.getPadsInfo() HORRIBLE HORRIBLE. Negotiated pads caps.getCapsStruct are null. Somethings wrong here. Skipping.")
     725                debug(Discoverer) Stdout("Discoverer.getPadsInfo() HORRIBLE HORRIBLE. Negotiated pads caps.getCapsStruct are null. Somethings wrong here. Skipping.").newline
    617726                continue; 
    618727            } 
    619728                 
    620             debug(Discoverer) Stdout("testing pad ", pad.getName(), " : caps: ", caps.toString() )
     729            debug(Discoverer) Stdout("testing pad ")( pad.getName())( " : caps: ")( caps.toString() ).newline
    621730             
    622             debug(Discoverer) Stdout("THIS IS IT: pad.duration: ", (cast(double)pad.queryDuration()) / (cast(double)FRAME_25) )
     731            debug(Discoverer) Stdout("THIS IS IT: pad.duration: ")( (cast(double)pad.queryDuration()) / (cast(double)FRAME_25) ).newline
    623732             
    624733            double pad_duration = (cast(double)pad.queryDuration()) / (cast(double)FRAME_25); 
     
    637746                        found_video = true; 
    638747                        currentVideoMaterial = new Material( current, MaterialType.VIDEO, pad_duration ); 
    639                         project.addMaterial( currentVideoMaterial ); 
     748                        project.discovererAddMaterialMovie( currentVideoMaterial ); 
    640749                        //TODO currentVideoMaterial.setAudioInfo(caps) 
    641750                    } 
     
    645754                        found_audio = true; 
    646755                        currentAudioMaterial = new Material( current, MaterialType.AUDIO, pad_duration ); 
    647                         project.addMaterial( currentAudioMaterial ); 
     756                        project.discovererAddMaterialMovie( currentAudioMaterial ); 
    648757                        //TODO currentVideoMaterial.setVideoInfo(caps) 
    649758                    } 
     
    656765            //  try: 
    657766                    //length, format = pad.query_duration(gst.FORMAT_TIME) 
    658                     //Stdout("THIS IS IT: pad.duration: ", (cast(double)pad.queryDuration()) / (cast(double)FRAME_25) )
     767                    //Stdout("THIS IS IT: pad.duration: ", (cast(double)pad.queryDuration()) / (cast(double)FRAME_25) ).newline
    659768             
    660769            //  except: 
     
    677786    protected bool newVideoPadCb( Pad pad, Element element ) 
    678787    { 
    679         debug(Discoverer) Stdout("Discoverer.newVideoPadCb() START. file: ", current )
    680         debug(Discoverer) scope(exit) Stdout("Discoverer.newVideoPadCb() END. file: ", current )
     788        debug(Discoverer) Stdout("Discoverer.newVideoPadCb() START. file: ")( current ).newline
     789        debug(Discoverer) scope(exit) Stdout("Discoverer.newVideoPadCb() END. file: ")( current ).newline
    681790        //a new video pad was found 
    682         debug(Discoverer) Stdout("padname:", pad.getName() );//gst.debug 
     791        debug(Discoverer) Stdout("padname:")( pad.getName() ).newline;//gst.debug 
    683792 
    684793        if( currentVideoMaterial !is null ) 
     
    743852    protected bool newAudioPadCb( Pad pad, Element unused_element ) 
    744853    { 
    745         debug(Discoverer) Stdout("Discoverer.newAudioPadCb() START. file: ", current )
    746         debug(Discoverer) scope(exit) Stdout("Discoverer.newAudioPadCb() END. file: ", current )
     854        debug(Discoverer) Stdout("Discoverer.newAudioPadCb() START. file: ")( current ).newline
     855        debug(Discoverer) scope(exit) Stdout("Discoverer.newAudioPadCb() END. file: ")( current ).newline
    747856        //a new audio pad was found 
    748         debug(Discoverer) Stdout("padname:", pad.getName() );//gst.debug 
    749  
    750         if( currentAudioMaterial !is null ) 
    751         { 
     857        debug(Discoverer) Stdout("padname:")( pad.getName() ).newline;//gst.debug 
     858 
     859        /*if( currentAudioMaterial !is null ) 
     860        { 
     861            debug(Discoverer) Stdout("Discoverer.newAudioPadCb() currentAudioMaterial !is null. Setting it's materialtype to AUDIO.").newline; 
    752862            currentAudioMaterial.materialType( MaterialType.AUDIO ); 
    753863        } 
     
    755865        { 
    756866            throw new Exception("Discoverer.newVideoPadCb() No currentVideoMaterial."); 
    757         } 
     867        }*/ 
    758868        //currentAudioMaterial.setAudio(True) 
    759869         
     
    762872        if( found_video ) 
    763873        { 
     874            debug(Discoverer) Stdout("Discoverer.newAudioPadCb() Already found video, calling noMorePadsCb.").newline; 
    764875            //gst.debug("already have video, calling no_more_pads") 
    765876            noMorePadsCb(null); 
     
    768879        if( pad.getCaps().isFixed() ) 
    769880        { 
     881            debug(Discoverer) Stdout("Discoverer.newAudioPadCb() Fixed caps.").newline; 
    770882            //gst.debug("fixed caps, setting info on factory") 
    771883            //currentVideoMaterial.setAudioInfo(pad.get_caps()); 
     
    774886        else 
    775887        { 
    776             debug(Discoverer) Stdout("non-fixed caps, adding queue and fakesink");//gst.debug 
     888            debug(Discoverer) Stdout("Discoverer.newAudioPadCb() non-fixed caps, adding queue and fakesink").newline;//gst.debug 
    777889            ////         if not currentVideoMaterial.is_video: 
    778890            // we need to add a fakesink 
     
    787899            fakesink.setState( GstState.PAUSED ); 
    788900        } 
    789            
     901        return false;  
    790902    } 
    791903/* 
     
    799911    protected void newDecodedPadCb( Pad pad, Element element )//, element, pad, is_last) 
    800912    { 
    801         debug(Discoverer) Stdout("Discoverer.newDecodedPadCb() START. ", current )
    802         debug(Discoverer) scope(exit) Stdout("Discoverer.newDecodedPadCb() END. ", current )
     913        debug(Discoverer) Stdout("Discoverer.newDecodedPadCb() START. ")( current ).newline
     914        debug(Discoverer) scope(exit) Stdout("Discoverer.newDecodedPadCb() END. ")( current ).newline
    803915         
    804916        if( pad is null ) 
    805917        { 
    806             debug(Discoverer) Stdout("Discoverer.newDecodedPadCb() pad is null. returning.")
     918            debug(Discoverer) Stdout("Discoverer.newDecodedPadCb() pad is null. returning.").newline
    807919            return; 
    808920        } 
    809921         
    810         debug(Discoverer) Stdout("\nDiscoverer.newDecodedPadCb() DOES IT STILL WORK HERE: pad.duration: ", (cast(double)pad.queryDuration()) / (cast(double)FRAME_25) ); 
     922        debug(Discoverer) Stdout("Discoverer.newDecodedPadCb() pad.name: ")( pad.getName() ).newline; 
     923         
     924        debug(Discoverer) Stdout("\nDiscoverer.newDecodedPadCb() DOES IT STILL WORK HERE: pad.duration: ")( (cast(double)pad.queryDuration()) / (cast(double)FRAME_25) ).newline; 
    811925        double pad_duration = (cast(double)pad.queryDuration()) / (cast(double)FRAME_25); 
    812926         
     
    815929            if( pad.getDirection() == GstPadDirection.SINK ) 
    816930            { 
    817                 debug(Discoverer) Stdout("Discoverer.newDecodedPadCb() This is a sink pad. Skipping it.")
     931                debug(Discoverer) Stdout("Discoverer.newDecodedPadCb() This is a sink pad. Skipping it.").newline
    818932                return; 
    819933            } 
     
    824938            if( caps is null ) 
    825939            { 
    826                 debug(Discoverer) Stdout("Discoverer.newDecodedPadCb() pads caps are null. Somethings wrong here. Skipping.");     
     940                debug(Discoverer) Stdout("Discoverer.newDecodedPadCb() pads caps are null. Somethings wrong here. Skipping.").newline;     
    827941                trytogetnegcaps = true; 
    828942            } 
    829943            else if( caps.getCapsStruct() is null ) 
    830944            { 
    831                 debug(Discoverer) Stdout("Discoverer.newDecodedPadCb() THIS IS YOUR WORST NIGHTMARE. caps.getCapsStruct is null.")
     945                debug(Discoverer) Stdout("Discoverer.newDecodedPadCb() THIS IS YOUR WORST NIGHTMARE. caps.getCapsStruct is null.").newline
    832946                trytogetnegcaps = true; 
    833947            } 
     
    835949            if( caps.isFixed() == false || trytogetnegcaps == true ) 
    836950            { 
    837                 debug(Discoverer) Stdout("Caps are not fixed. Trying to get negotiated caps.")
     951                debug(Discoverer) Stdout("Caps are not fixed. Trying to get negotiated caps.").newline
    838952                caps = pad.getNegotiatedCaps(); 
    839953            } 
     
    841955            if( caps is null )// || caps.getCapsStruct() is null ) 
    842956            { 
    843                 debug(Discoverer) Stdout("Discoverer.newDecodedPadCb() Negotiated pads caps are null. Somethings wrong here. Skipping.")
     957                debug(Discoverer) Stdout("Discoverer.newDecodedPadCb() Negotiated pads caps are null. Somethings wrong here. Skipping.").newline
    844958                return; 
    845959            } 
    846960            else if( caps.getCapsStruct() is null ) 
    847961            { 
    848                 debug(Discoverer) Stdout("Discoverer.newDecodedPadCb() HORRIBLE HORRIBLE. Negotiated pads caps.getCapsStruct are null. Somethings wrong here. Skipping.")
     962                debug(Discoverer) Stdout("Discoverer.newDecodedPadCb() HORRIBLE HORRIBLE. Negotiated pads caps.getCapsStruct are null. Somethings wrong here. Skipping.").newline
    849963                return; 
    850964            } 
    851965                 
    852             debug(Discoverer) Stdout("testing pad ", pad.getName(), " : caps: ", caps.toString() )
     966            debug(Discoverer) Stdout("testing pad ")( pad.getName() )( " : caps: " )( caps.toString() ).newline
    853967             
    854968         
     
    857971        //   create one, emit "new_sourcefile_factory" 
    858972        char[] capsstr = caps.toString();//pad.getCaps().toString(); 
    859         debug(Discoverer) Stdout("pad: ", pad.getName(), " caps:", capsstr, " is_last:")
     973        debug(Discoverer) Stdout("pad: " )( pad.getName() )( " caps:" )( capsstr )( " is_last:").newline
    860974        if( Util.containsPattern( capsstr, "video" ) == true ) 
    861975        { 
    862             debug(Discoverer) Stdout("video pad found for file ", current )
     976            debug(Discoverer) Stdout("video pad found for file ")( current ).newline
    863977            //capsstr.startswith("video/x-raw"): 
    864978            //if( currentVideoMaterial is null ) 
     
    869983            if( found_video == false ) 
    870984            { 
    871                 debug(Discoverer) Stdout("Discoverer.newDecodedPadCb() Creating new video material.")
     985                debug(Discoverer) Stdout("Discoverer.newDecodedPadCb() Creating new video material.").newline
    872986                found_video = true; 
    873987                currentVideoMaterial = new Material( current, MaterialType.VIDEO, pad_duration ); 
    874                 project.addMaterial( currentVideoMaterial ); 
    875                 debug(Discoverer) Stdout("Discoverer.newDecodedPadCb() Creating new video material. DONE.")
     988                project.discovererAddMaterialMovie( currentVideoMaterial ); 
     989                debug(Discoverer) Stdout("Discoverer.newDecodedPadCb() Creating new video material. DONE.").newline
    876990                //TODO currentVideoMaterial.setAudioInfo(caps) 
    877991            } 
     
    880994        else if( Util.containsPattern( capsstr, "audio" ) == true ) 
    881995        { 
    882             debug(Discoverer) Stdout("audio pad found for file ", current )
     996            debug(Discoverer) Stdout("audio pad found for file ")( current ).newline
    883997            //capsstr.startswith("audio/x-raw") 
    884998            //if( currentAudioMaterial is null ) 
     
    8891003            if( found_audio == false ) 
    8901004            { 
    891                 debug(Discoverer) Stdout("Discoverer.newDecodedPadCb() Creating new audio material.")
     1005                debug(Discoverer) Stdout("Discoverer.newDecodedPadCb() Creating new audio material.").newline
    8921006                found_audio = true; 
    8931007                currentAudioMaterial = new Material( current, MaterialType.AUDIO, pad_duration ); 
    894                 project.addMaterial( currentAudioMaterial ); 
     1008                project.discovererAddMaterialMovie( currentAudioMaterial ); 
    8951009                //TODO currentAudioMaterial.setVideoInfo(caps) 
    896                 debug(Discoverer) Stdout("Discoverer.newDecodedPadCb() Creating new audio material. DONE.")
     1010                debug(Discoverer) Stdout("Discoverer.newDeco