Hello, Need Urgent Help please. Why neonhttpsrc and gnomevfssrc cannot seek for HTTP Streaming.

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Hello, Need Urgent Help please. Why neonhttpsrc and gnomevfssrc cannot seek for HTTP Streaming.

xiupeng xie
Hi All, Please give your kind help.
This question cause me several days without final idea.
 
My purpose is to seek on HTTP wav stream over either neonhttpsrc or gnomevfssrc(, maybe there are other plugin).
But the problem is seek cannot jump to the position which i want to seek and cannot change the state.
with error:
 
<neonhttpsrc> pausing after gst_pad_push() = wrong-state
basesink gstbasesink.c:2099:gst_base_sink_render_object:<alsasink0> do_sync returned wrong-state
 
 
I first give my codes logic, then with the debug logs.
The gst version on my FEDORA 8
gstreamer.i386                           0.10.15-1.fc8          installed
gstreamer-devel.i386                     0.10.15-1.fc8          installed
gstreamer-ffmpeg.i386                    0.10.3-7.fc8           installed
gstreamer-plugins-bad.i386               0.10.5-16.fc8          installed
gstreamer-plugins-base.i386              0.10.15-4.fc8          installed
gstreamer-plugins-base-devel.i386        0.10.15-4.fc8          installed
gstreamer-plugins-good.i386              0.10.6-7.fc8           installed
gstreamer-plugins-pulse.i386             0.9.5-0.4.svn20070924. installed
gstreamer-plugins-ugly.i386              0.10.6-6.fc8           installed
gstreamer-python.i386                    0.10.8-2.fc8           installed
gstreamer-tools.i386                     0.10.15-1.fc8          installed
codes logic:
-------------------------------------------------------------------------------------------
    const char *src_name = "neonhttpsrc";   
    
    memset(&(renderer->audioDecoder), 0, sizeof(renderer->audioDecoder));
    memset(pHttpDecoder, 0, sizeof(*pHttpDecoder));
    renderer->selectionFlag |= pkSTREAM_SELECTION_FLAG_AUDIO;
    renderer->audioDecoder.pipeline = gst_pipeline_new("pcm-decoder-over-http");
  //1. open src:
    pHttpDecoder->fakesrc = gst_element_factory_make(src_name,src_name);
    if(!(pHttpDecoder->fakesrc))   
    {
    }
    g_object_set (G_OBJECT (pHttpDecoder->fakesrc), "location", pcszUrl, NULL);
  
  
    //2. open wavparse
    pHttpDecoder->decoder = gst_element_factory_make("wavparse", "wavparse0");
    
    //3. open audioconvert
    pHttpDecoder->convert = gst_element_factory_make("audioconvert", "audioconvert0");
    //4. open audioconvert
    pHttpDecoder->aresample = gst_element_factory_make("audioresample", "audioresample0");
    //5. open alsasink
    pHttpDecoder->audiosink = gst_element_factory_make("alsasink", "alsasink0");
    /* Setup pipeline */
    gst_bin_add_many(GST_BIN(renderer->audioDecoder.pipeline),
        pHttpDecoder->fakesrc,
        pHttpDecoder->decoder,
        pHttpDecoder->convert,
        pHttpDecoder->aresample,
        pHttpDecoder->audiosink, NULL);
    gst_element_link_many(pHttpDecoder->fakesrc, pHttpDecoder->decoder, NULL);
    gst_element_link_many(pHttpDecoder->decoder, pHttpDecoder->convert, NULL);
 
    g_signal_connect(pHttpDecoder->decoder, "pad-added", G_CALLBACK(NewPad_Cb), pHttpDecoder->convert);
       
    gst_element_link_many(pHttpDecoder->convert, pHttpDecoder->aresample, pHttpDecoder->audiosink, NULL);
    gst_element_set_state(pipeline, GST_STATE_PAUSED);
    for(index=0; index < 5; index++)
    {
        gst_element_get_state (pipeline, &cur_state, NULL, 1 * GST_SECOND);
        if ( WaitchangeToState != cur_state )                    
        {}
       else
        {break;}
    }
    // begin seek.
    b_seek_result = gst_element_seek (audiosink, 1.0, format, SeekFlags ,
                     GST_SEEK_TYPE_SET, time_nanoseconds,
                    GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE);   
 
    gst_element_set_state(hRenderer->audioDecoder.pipeline, GST_STATE_PLAYING);
 
 
-------------------------------------------------------------------------------------------
logs:
-------------------------------------------------------------------------------------------
 
0:00:26.600566000 32405 0xb9dc3e0 DEBUG             basesink gstbasesink.c:1718:gst_base_sink_do_sync:<alsasink0> non syncable object 0x8ccb278
0:00:26.600574000 32405 0x8cb5560 DEBUG            GST_EVENT gstpad.c:4214:gst_pad_send_event:<audioresample0:sink> have event type 19 (FLUSH_START)
0:00:26.600577000 32405 0xb9dc3e0 DEBUG             basesink gstbasesink.c:2057:gst_base_sink_render_object:<alsasink0> rendering event 0x8ccb278, type newsegment
0:00:26.600584000 32405 0x8cb5560 DEBUG            GST_EVENT gstpad.c:4220:gst_pad_send_event:<audioresample0:sink> set flush flag
0:00:26.600589000 32405 0xb9dc3e0 DEBUG        baseaudiosink gstbaseaudiosink.c:629:gst_base_audio_sink_event:<alsasink0> new segment rate of 1.000000
0:00:26.600596000 32405 0x8cb5560 DEBUG            GST_EVENT gstpad.c:4214:gst_pad_send_event:<alsasink0:sink> have event type 19 (FLUSH_START)
0:00:26.600610000 32405 0x8cb5560 DEBUG            GST_EVENT gstpad.c:4220:gst_pad_send_event:<alsasink0:sink> set flush flag
0:00:26.600606000 32405 0xb9dc3e0 DEBUG             basesink gstbasesink.c:1122:gst_base_sink_configure_segment:<alsasink0> configured NEWSEGMENT update 0, rate 1.000000, applied rate 1.000000, format GST_FORMAT_TIME, 0:00:00.000000000 -- 0:04:42.906660998, time 0:00:00.000000000, accum 0:00:00.000000000
0:00:26.600623000 32405 0x8cb5560 DEBUG             basesink gstbasesink.c:2309:gst_base_sink_event:<alsasink0> event 0x8ccb2c8 (flush-start)
0:00:26.600639000 32405 0x8cb5560 DEBUG           ringbuffer gstringbuffer.c:1112:gst_ring_buffer_clear_all:<audiosinkringbuffer0> clear all segments
0:00:26.600641000 32405 0xb9dc3e0 DEBUG             basesink gstbasesink.c:2091:gst_base_sink_render_object:<alsasink0> object unref after render 0x8ccb278
0:00:26.600661000 32405 0xb9dc3e0 DEBUG             basesink gstbasesink.c:2215:gst_base_sink_queue_object_unlocked:<alsasink0> rendering queued object 0x8d054a0
0:00:26.600662000 32405 0x8cb5560 DEBUG           ringbuffer gstringbuffer.c:866:gst_ring_buffer_pause_unlocked:<audiosinkringbuffer0> pausing ringbuffer
0:00:26.600674000 32405 0xb9dc3e0 DEBUG             basesink gstbasesink.c:1718:gst_base_sink_do_sync:<alsasink0> non syncable object 0x8d054a0
0:00:26.600680000 32405 0x8cb5560 DEBUG           ringbuffer gstringbuffer.c:895:gst_ring_buffer_pause_unlocked:<audiosinkringbuffer0> was not started
0:00:26.600684000 32405 0xb9dc3e0 DEBUG             basesink gstbasesink.c:2057:gst_base_sink_render_object:<alsasink0> rendering event 0x8d054a0, type tag
0:00:26.600690000 32405 0x8cb5560 DEBUG             basesink gstbasesink.c:2375:gst_base_sink_event:<alsasink0> flush-start 0x8ccb2c8
0:00:26.600694000 32405 0xb9dc3e0 DEBUG             basesink gstbasesink.c:2091:gst_base_sink_render_object:<alsasink0> object unref after render 0x8d054a0
0:00:26.600751000 32405 0xb9dc3e0 DEBUG             basesink gstbasesink.c:1344:gst_base_sink_get_sync_times:<alsasink0> got times start: 0:00:00.000000000, stop: 0:00:00.023219955, do_sync 0
0:00:26.600764000 32405 0xb9dc3e0 DEBUG             basesink gstbasesink.c:1653:gst_base_sink_do_sync:<alsasink0> prerolling object 0xb9ddca0
0:00:26.600777000 32405 0xb9dc3e0 DEBUG             basesink gstbasesink.c:1506:gst_base_sink_wait_preroll:<alsasink0> waiting in preroll for flush or PLAYING
0:00:26.600792000 32405 0x8cb5560 DEBUG             basesink gstbasesink.c:2713:gst_base_sink_set_flushing:<alsasink0> flushing out data thread, need preroll to TRUE
0:00:26.600802000 32405 0x8cb5560 DEBUG             basesink gstbasesink.c:1067:gst_base_sink_preroll_queue_flush:<alsasink0> flushing queue 0xb9ac040
0:00:26.600820000 32405 0xb9dc3e0 DEBUG             basesink gstbasesink.c:1519:gst_base_sink_wait_preroll:<alsasink0> preroll interrupted
0:00:26.600830000 32405 0xb9dc3e0 DEBUG             basesink gstbasesink.c:1723:gst_base_sink_do_sync:<alsasink0> we are flushing
0:00:26.600839000 32405 0xb9dc3e0 DEBUG             basesink gstbasesink.c:2099:gst_base_sink_render_object:<alsasink0> do_sync returned wrong-state
0:00:26.600848000 32405 0xb9dc3e0 DEBUG             basesink gstbasesink.c:2091:gst_base_sink_render_object:<alsasink0> object unref after render 0xb9ddca0
0:00:26.600862000 32405 0xb9dc3e0 WARN              wavparse gstwavparse.c:1645:gst_wavparse_stream_data:<wavparse0> Error pushing on srcpad 0xb99e630, is linked? = 1
0:00:26.600873000 32405 0xb9dc3e0 INFO               basesrc gstbasesrc.c:2054:gst_base_src_loop:<neonhttpsrc> pausing after gst_pad_push() = wrong-state
0:00:26.600885000 32405 0xb9dc3e0 DEBUG              basesrc gstbasesrc.c:2080:gst_base_src_loop:<neonhttpsrc> pausing task, reason wrong-state
0:00:26.600887000 32405 0x8cb5560 DEBUG           GST_STATES gstelement.c:2209:gst_element_lost_state:<alsasink0> lost state of PAUSED to PAUSED
0:00:26.600900000 32405 0xb9dc3e0 DEBUG             GST_PADS gstpad.c:4394:gst_pad_pause_task:<neonhttpsrc:src> pause task
0:00:26.600912000 32405 0xb9dc3e0 DEBUG                 task gsttask.c:476:gst_task_pause:<task0> Pausing task 0xb859948
0:00:26.600910000 32405 0x8cb5560 DEBUG              GST_BUS gstbus.c:337:gst_bus_post:<bus0> [msg 0x8d0e158] posting on bus, type state-changed, GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_PAUSED; from source <alsasink0>
0:00:26.600939000 32405 0x8cb5560 DEBUG                  bin gstbin.c:2699:gst_bin_handle_message_func:<pcm-decoder-over-http> [msg 0x8d0e158] handling child alsasink0 message of type state-changed
0:00:26.600949000 32405 0x8cb5560 DEBUG                  bin gstbin.c:2903:gst_bin_handle_message_func:<pcm-decoder-over-http> posting message upward
0:00:26.600960000 32405 0x8cb5560 DEBUG              GST_BUS gstbus.c:337:gst_bus_post:<bus1> [msg 0x8d0e158] posting on bus, type state-changed, GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_PAUSED; from source <alsasink0>
0:00:26.600986000 32405 0x8cb5560 DEBUG              GST_BUS gstbus.c:367:gst_bus_post:<bus1> [msg 0x8d0e158] pushing on async queue
0:00:26.600998000 32405 0x8cb5560 DEBUG              GST_BUS gstbus.c:372:gst_bus_post:<bus1> [msg 0x8d0e158] pushed on async queue
0:00:26.601008000 32405 0x8cb5560 DEBUG              GST_BUS gstbus.c:363:gst_bus_post:<bus0> [msg 0x8d0e158] dropped
0:00:26.601022000 32405 0x8cb5560 DEBUG              GST_BUS gstbus.c:337:gst_bus_post:<bus0> [msg 0x8d0e198] posting on bus, type async-start, GstMessageAsyncStart, new-base-time=(boolean)true; from source <alsasink0>
0:00:26.601043000 32405 0x8cb5560 DEBUG             pipeline gstpipeline.c:326:reset_stream_time:<pcm-decoder-over-http> reset stream_time to 0
0:00:26.601053000 32405 0x8cb5560 DEBUG                  bin gstbin.c:2699:gst_bin_handle_message_func:<pcm-decoder-over-http> [msg 0x8d0e198] handling child alsasink0 message of type async-start
0:00:26.601065000 32405 0x8cb5560 DEBUG                  bin gstbin.c:2833:gst_bin_handle_message_func:<pcm-decoder-over-http> ASYNC_START message 0x8d0e198, alsasink0
0:00:26.601075000 32405 0x8cb5560 DEBUG                  bin gstbin.c:739:find_message:<pcm-decoder-over-http> no message found matching types 00100000
0:00:26.601085000 32405 0x8cb5560 DEBUG                  bin gstbin.c:775:bin_replace_message:<pcm-decoder-over-http> got new message 0x8d0e198, async-start from alsasink0
0:00:26.601095000 32405 0x8cb5560 DEBUG           GST_STATES gstbin.c:2464:bin_handle_async_start:<pcm-decoder-over-http> lost state of PAUSED, new PAUSED
0:00:26.601109000 32405 0x8cb5560 DEBUG              GST_BUS gstbus.c:337:gst_bus_post:<bus1> [msg 0x8d0e1d8] posting on bus, type state-changed, GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_PAUSED; from source <pcm-decoder-over-http>
0:00:26.601136000 32405 0x8cb5560 DEBUG              GST_BUS gstbus.c:367:gst_bus_post:<bus1> [msg 0x8d0e1d8] pushing on async queue
0:00:26.601146000 32405 0x8cb5560 DEBUG              GST_BUS gstbus.c:372:gst_bus_post:<bus1> [msg 0x8d0e1d8] pushed on async queue
0:00:26.601158000 32405 0x8cb5560 DEBUG              GST_BUS gstbus.c:363:gst_bus_post:<bus0> [msg 0x8d0e198] dropped
0:00:26.601172000 32405 0x8cb5560 DEBUG             GST_PADS gstpad.c:4261:gst_pad_send_event:<alsasink0:sink> sent event, result 1
0:00:26.601183000 32405 0x8cb5560 DEBUG             GST_PADS gstpad.c:4261:gst_pad_send_event:<audioresample0:sink> sent event, result 1
0:00:26.601193000 32405 0x8cb5560 DEBUG             GST_PADS gstpad.c:4261:gst_pad_send_event:<audioconvert0:sink> sent event, result 1
0:00:26.601202000 32405 0x8cb5560 DEBUG             wavparse gstwavparse.c:800:gst_wavparse_perform_seek:<wavparse0> stopped streaming at 23219955
0:00:26.601212000 32405 0x8cb5560 DEBUG             wavparse gstwavparse.c:809:gst_wavparse_perform_seek:<wavparse0> configuring seek
0:00:26.601221000 32405 0x8cb5560 DEBUG             wavparse gstwavparse.c:819:gst_wavparse_perform_seek:<wavparse0> cur_type =2
0:00:26.601244000 32405 0x8cb5560 DEBUG                query gstquery.c:371:gst_query_new: creating new query 0x8d9b4e0 2
0:00:26.601256000 32405 0x8cb5560 DEBUG             GST_PADS gstpad.c:3053:gst_pad_query:<neonhttpsrc:src> sending query 0x8d9b4e0
0:00:26.601268000 32405 0x8cb5560 DEBUG              basesrc gstbasesrc.c:776:gst_base_src_default_query:<neonhttpsrc> duration query in format bytes
0:00:26.601283000 32405 0x8cb5560 DEBUG              basesrc gstbasesrc.c:884:gst_base_src_default_query:<neonhttpsrc> query duration returns 1
0:00:26.601295000 32405 0x8cb5560 DEBUG             wavparse gstwavparse.c:868:gst_wavparse_perform_seek:<wavparse0> seek: offset 17992828, end 49904764, segment 0:01:42.000000000 -- 0:04:42.906660998
0:00:26.601307000 32405 0x8cb5560 DEBUG             wavparse gstwavparse.c:874:gst_wavparse_perform_seek:<wavparse0> sending flush stop
0:00:26.601317000 32405 0x8cb5560 DEBUG            GST_EVENT gstevent.c:286:gst_event_new: creating new event 0x8ccb2f0 flush-stop 39
0:00:26.601329000 32405 0x8cb5560 DEBUG            GST_EVENT gstpad.c:4224:gst_pad_send_event:<audioconvert0:sink> cleared flush flag
0:00:26.601341000 32405 0x8cb5560 DEBUG            GST_EVENT gstpad.c:4224:gst_pad_send_event:<audioresample0:sink> cleared flush flag
0:00:26.601351000 32405 0x8cb5560 DEBUG     libaudioresample resample.c:130:resample_input_flush: flush
0:00:26.601364000 32405 0x8cb5560 DEBUG            GST_EVENT gstpad.c:4224:gst_pad_send_event:<alsasink0:sink> cleared flush flag
0:00:26.601374000 32405 0x8cb5560 DEBUG             basesink gstbasesink.c:2309:gst_base_sink_event:<alsasink0> event 0x8ccb2f0 (flush-stop)
0:00:26.601384000 32405 0x8cb5560 DEBUG           ringbuffer gstringbuffer.c:1112:gst_ring_buffer_clear_all:<audiosinkringbuffer0> clear all segments
0:00:26.601399000 32405 0x8cb5560 DEBUG             basesink gstbasesink.c:2404:gst_base_sink_event:<alsasink0> flush-stop 0x8ccb2f0
0:00:26.601413000 32405 0x8cb5560 DEBUG             GST_PADS gstpad.c:4261:gst_pad_send_event:<alsasink0:sink> sent event, result 1
0:00:26.601424000 32405 0x8cb5560 DEBUG             GST_PADS gstpad.c:4261:gst_pad_send_event:<audioresample0:sink> sent event, result 1
0:00:26.601442000 32405 0x8cb5560 DEBUG             GST_PADS gstpad.c:4261:gst_pad_send_event:<audioconvert0:sink> sent event, result 1
0:00:26.601451000 32405 0x8cb5560 DEBUG             wavparse gstwavparse.c:906:gst_wavparse_perform_seek:<wavparse0> Creating newsegment from 102000000000 to 282906660998
0:00:26.601463000 32405 0x8cb5560 INFO             GST_EVENT gstevent.c:528:gst_event_new_new_segment_full: creating newsegment update 0, rate 1.000000, format GST_FORMAT_TIME, start 0:01:42.000000000, stop 0:04:42.906660998, position 0:01:42.000000000
0:00:26.601482000 32405 0x8cb5560 DEBUG            GST_EVENT gstevent.c:286:gst_event_new: creating new event 0x8ccb318 newsegment 102
0:00:26.601495000 32405 0x8cb5560 DEBUG             wavparse gstwavparse.c:918:gst_wavparse_perform_seek:<wavparse0> mark DISCONT, we did a seek to another position
0:00:26.601508000 32405 0x8cb5560 DEBUG             GST_PADS gstpad.c:4261:gst_pad_send_event:<wavparse0:src> sent event, result 1
0:00:26.601526000 32405 0x8cb5560 DEBUG             GST_PADS gstpad.c:4261:gst_pad_send_event:<audioconvert0:src> sent event, result 1
0:00:26.601539000 32405 0x8cb5560 DEBUG             GST_PADS gstpad.c:4261:gst_pad_send_event:<audioresample0:src> sent event, result 1
():Line[2361]: Seek success!
():LINE[2507] seeking returned result 0
0:00:26.601558000 32405 0x8cb5560 DEBUG           GST_STATES gstelement.c:2283:gst_element_set_state_func:<pcm-decoder-over-http> set_state to PLAYING
0:00:26.601568000 32405 0x8cb5560 DEBUG           GST_STATES gstelement.c:2319:gst_element_set_state_func:<pcm-decoder-over-http> current PAUSED, old_pending PAUSED, next PAUSED, old return ASYNC
0:00:26.601579000 32405 0x8cb5560 DEBUG           GST_STATES gstelement.c:2373:gst_element_set_state_func:<pcm-decoder-over-http> element was busy with async state change
0:00:26.601591000 32405 0x8cb5560 INFO            GST_STATES gstbin.c:1537:gst_bin_get_state_func:<pcm-decoder-over-http> getting state
0:00:26.601600000 32405 0x8cb5560 DEBUG           GST_STATES gstelement.c:1840:gst_element_get_state_func:<pcm-decoder-over-http> getting state, timeout 0:00:01.000000000
0:00:26.601615000 32405 0x8cb5560 DEBUG           GST_STATES gstelement.c:1845:gst_element_get_state_func:<pcm-decoder-over-http> RETURN is ASYNC
0:00:26.601625000 32405 0x8cb5560 INFO            GST_STATES gstelement.c:1881:gst_element_get_state_func:<pcm-decoder-over-http> waiting for element to commit state
0:00:27.601655000 32405 0x8cb5560 INFO            GST_STATES gstelement.c:1885:gst_element_get_state_func:<pcm-decoder-over-http> timed out
0:00:27.601688000 32405 0x8cb5560 DEBUG           GST_STATES gstelement.c:1918:gst_element_get_state_func:<pcm-decoder-over-http> state current: PAUSED, pending: PLAYING, result: ASYNC
():Line[2512]: cur_state is 3
 returned with retVal 0x(0)

 



 

------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Hello, Need Urgent Help please. Why neonhttpsrc and gnomevfssrc cannot seek for HTTP Streaming.

Zeeshan Ali (Khattak)-2
On Fri, Feb 13, 2009 at 7:11 PM, xiupeng xie <[hidden email]> wrote:
> Hi All, Please give your kind help.
> This question cause me several days without final idea.
>
> My purpose is to seek on HTTP wav stream over either neonhttpsrc or
> gnomevfssrc(, maybe there are other plugin).
> But the problem is seek cannot jump to the position which i want to seek and
> cannot change the state.
> with error:

  They don't implement seeking afaik, use souphttpsrc. That is the future.

--
Regards,

Zeeshan Ali (Khattak)
FSF member#5124

------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel