Open cxg1023 opened 2 months ago
And the log printed is:
audio_player_set_src length: 51945 time: Instant { tv_sec: 110400, tv_nsec: 341247431 } player state changed to: Buffering, time: Instant { tv_sec: 110400, tv_nsec: 344656431 } player need data. push data called, data length: 51945 push data called, data pushed. player state changed to: Paused, time: Instant { tv_sec: 110405, tv_nsec: 351023725 } Leaving Object::GetInterface (SL_RESULT_FEATURE_UNSUPPORTED) player seek data event with pos: 1 player seek data pushed. player need data.
The 1st strange phenomena is: set_input_size with 51945, and then 51945 data pushed, the state changed to paused? 2nd is: Why seeked to 1 byte after data pushed?
Seems the data hasn't pushed enough? I am not pushing data when NeedData event fired, instead in SeekData event.
I have also tried this: set_input_size -> push_data in 5s After data pushed, metadata duration is 0ns.
` ----- set_input_size 51945 and need data event fired -------- audio_player_set_src: 51945 time: Instant { tv_sec: 115780, tv_nsec: 514727163 } player state changed to: Buffering, time: Instant { tv_sec: 115780, tv_nsec: 516338246 } player need data.
----- manually push_data in 5 secs ------ push data called, data pushed 51945.
------ data pushed, state changed to Paused because I havn't called player.play() yet ??? ---------- player state changed to: Paused, time: Instant { tv_sec: 115785, tv_nsec: 520992707 } Leaving Object::GetInterface (SL_RESULT_FEATURE_UNSUPPORTED)
------ SeekData event fired with pos 1, why ??? ---------------- player seek data event with pos: 1 player seek data pushed. --------- push data from pos when SeekData fired ------------- player state changed to: Buffering, time: Instant { tv_sec: 115785, tv_nsec: 529875415 } player state changed to: Paused, time: Instant { tv_sec: 115785, tv_nsec: 529903207 } 0xb4000071c43f5850 ../gst-libs/gst/audio/audio-resampler.c:274:convert_taps_gint16_c can't find exact taps PlayerBase::PlayerBase() TrackPlayerBase::TrackPlayerBase() channel mask behavior (ignoring positional mask 0x3, using default mask 0x3 based on channel count of 2)
-------- why duration 0 ns ? -------------- player metadata updated: Metadata { duration: Some(0ns), width: 0, height: 0, format: "Ogg", is_seekable: false, video_tracks: [], audio_tracks: ["Vorbis"], is_live: false, title: Some("Horned Viper") } `
Do you have runnable code that can make this straightforward to reproduce?
My invoke flow is: invoke with an url -> read from file -> player.set_input_size -> invoke player.push_data in 5 secs
note : i havn't called player.play yet.
Here is my code snippet: