Hello Jeff, It's getting less obscure with: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/duration "Value A double. If the media data is available but the length is unknown, this value is NaN. If the media is streamed and has no predefined length, the value is Inf."
I get more or less this behavior on Firefox and similar on Safari: HTML: <audio controls preload="auto" id="g12"></audio> Javascript: -- Sound file not loaded $(gnoga['g12']).prop ('readyState') 0 $(gnoga['g12']).prop ('duration') NaN -- Sound file loaded $(gnoga['g12']).prop ('src','glass.ogg') Object [ <audio#g12> ] $(gnoga['g12']).prop ('readyState') 4 $(gnoga['g12']).prop ('duration') Infinity -- Sound file not played $(gnoga['g12']).get(0).play() Promise { <state>: "pending" } $(gnoga['g12']).prop ('readyState') 2 $(gnoga['g12']).prop ('duration') 0.751836 Thus, even loaded, the duration seems not known and more is set to "Infinity". I don't know how to get the duration without playing the file. Sorry not helping more, Pascal. http://blady.pagesperso-orange.fr > Le 30 sept. 2017 à 12:06, Jeffrey R. Carter <jrcar...@acm.org> a écrit : > > On 09/30/2017 10:57 AM, Pascal via Gnoga-list wrote: >> Two points: >> - it seems that duration is not available before the sound is ready to play >> (with Firefox) >> - the duration function should return Float >> >> I modify Play_Sound as follow with a waiting loop for readiness: >> >> procedure Play_Sound (Object : in out Gnoga.Gui.Base.Base_Type'Class) is >> pragma Unreferenced (Object); >> -- Empty; >> begin -- Play_Sound >> Player.Media_Source (Source => "glass.ogg"); >> while not Player.Ready_To_Play loop >> Gnoga.Log (Message => Player.Ready_To_Play'Img); >> delay 0.01; >> end loop; >> Gnoga.Log >> (Message => Player.Media_Source & Float'Image >> (Player.Media_Duration)); >> Player.Play; >> exception -- Play_Sound >> when E : others => >> Gnoga.Log >> (Message => >> "Play_Sound: " & Ada.Exceptions.Exception_Information (E)); >> end Play_Sound; >> >> Results: >> 2017-09-30 10:42:47.27 : New connection - ID 1 >> 2017-09-30 10:42:49.80 : TRUE >> 2017-09-30 10:42:49.84 : http://localhost:8080/glass.ogg 7.51836E-01 >> >> Note: in my case just one round is needed. > > OK, with those patches and changing Play_Sound to > > procedure Play_Sound (Object : in out Gnoga.Gui.Base.Base_Type'Class) is > -- Empty; > begin -- Play_Sound > Player.Media_Source (Source => "glass.ogg"); > > Wait_For_Ready : loop > Gnoga.Log (Message => Integer'Image (Player.Property ("readyState") ) > & ' ' & Boolean'Image (Player.Ready_To_Play) ); > > exit Wait_For_Ready when Player.Ready_To_Play; > > delay 0.01; > end loop Wait_For_Ready; > > Gnoga.Log (Message => Player.Media_Source & Float'Image > (Player.Media_Duration) ); > Player.Play; > exception -- Play_Sound > when E : others => > Gnoga.Log (Message => "Play_Sound: " & > Ada.Exceptions.Exception_Information (E) ); > end Play_Sound; > > I get > > 2017-09-30 11:58:16.95 : 0 TRUE > 2017-09-30 11:58:17.04 : Error jQuery_Execute converting to Float (forced to > 0.0). > 2017-09-30 11:58:17.04 : raised CONSTRAINT_ERROR : bad input for 'Value: > "Infinity" > Call stack traceback locations: > 0x7f47fa1091c1 0x7f47fa108958 0x7f47fa108c5b 0x5633f90a0ae0 0x5633f90a0d3a > 0x5633f90abc69 0x5633f9079201 0x5633f908fd6d 0x5633f9104751 0x7f47fa431222 > 0x7f47f96816d8 0x7f47f99a0d7d 0xfffffffffffffffe > > 2017-09-30 11:58:17.08 : http://localhost:8080/glass.ogg 0.00000E+00 > > in the log output with Firefox. Also, the thing that is most important to me > hasn't changed: the total time isn't displayed in the widget until playback > finishes. > > It looks to me as if Ready_To_Play should probably be Property ("readyState") > > 1. > >> If patches are ok for you I'll push them in Gnoga. > Looks OK to me. >> PS: Jeff, I'll put Ding into test stuff of Gnoga if you don't mind. > Fine with me. > > -- > Jeff Carter > "Frankie Wolf, wanted by Federal authorities for > dancing with a mailman." > Take the Money and Run > 143 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Gnoga-list mailing list Gnoga-list@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gnoga-list