Jump to content

Ugochukwu Mmaduekwe

Members
  • Content Count

    112
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by Ugochukwu Mmaduekwe


  1. 3 minutes ago, Turan Can said:

    Hi All,

     

    My only problem is AEC. I couldn't find much information.

     

    I'm dealing with voice transfer, I did everything. I have a problem. As the two sides begin to speak, voices begin to mingle. As I understand it, it echoes. Is there a code example that clears it?
    Or "AEC Echo Cancellation" in a sdk. may be in paid product.

     

    AEC.png

    art_echo.gif

    art_echoAEC.gif

    you did not state your platform, Android, iOS, Windows?


  2. 12 hours ago, David Schwartz said:

    I think the problem you're going to run into is in how the RTTI support changed massively in D2010. Legacy apps built before that aren't going to care. But most libraries since then have come to depend heavily on it for a variety of things, especially when it comes to offering services of many kinds. There's stuff that simply cannot be done in D7 or even D2007 that can be done with the new RTTI support in D2010 and fwd.

     

    A lot of these have to do with design-time support as well. So you can sometimes find libs that have run-time support back that far, but not much design-time support.

     

    A straightforward REST/JSON API shouldn't be terribly difficult to write, unless you want to be able to send objects over the wire and have them reconstituted at the other end. Short of that, you might find something that works for you. 

    @David Schwartz Thanks for this answer. Also, this project will involves transmitting quite a number of binary data over the wire.
    I am also considering the fact that I will be working with Unicode data so that will impose issues of it's own especially considering the fact that Delphi 2007 RTL is not Unicode aware.


  3. Hi all, as the question stated, what is the possibility of having a rest/soap webapi written in Delphi 2007?

    What challenges are we bound to face? what components do you think will be needed? what advice can you give?

     

    lastly do you think it will be  a better option to write the rest/soap webapi in C# using VS 2017 instead?

    Unfortunately the version of Delphi can't be upgraded.

     

    thanks.


  4. 5 minutes ago, Stefan Glienke said:

    Keep in mind that I have a dict<int, int> so all I do is hash an integer - so the overhead of each gethashcode call is significant for the overall result. If I would hash like some larger data the overhead shrinks - that's what I mentioned earlier about benchmarks and comparing things 🙂

    so for your use case, the other leaf xxHash unit will be more suitable after some optimizations due to it's simplistic stack based approach


  5. 10 minutes ago, Stefan Glienke said:

    Still like >20times slower than using the one from your xxHash32 unit.

     

    THash.TransformUntyped has huge overhead with that dynamic array and the implicit finally associated with it and probably way more stuff going on while the TxxHash32.CalculateHash32 only works with some variables on the stack.

     

    BTW for the xxHash32 unit: at least the Delphi compiler will never ever inline RotateLeft32 as the body comes after the call and in such situations it never inlines (see http://docwiki.embarcadero.com/RADStudio/Rio/en/Calling_Procedures_and_Functions_(Delphi)#Using_the_inline_Directive)

    >20times slower is really strange as that is not what happens on my end.

    as regards the dynamic array, I am aware it has it's overhead but I added it since it gives people the ability to adjust the buffer size to one of their choice.


  6. 21 minutes ago, Stefan Glienke said:

    hash.ComputeUntyped(value, SizeOf(Integer)).GetHashCode; // hash is an IHash instance where I created a TXXHash32 for.

    @Stefan Glienke

    The above should be

    hash.ComputeUntyped(value, SizeOf(Integer)).GetUInt32; // hash is an IHash instance where I created a TXXHash32 for.
    
    //or
    
    hash.ComputeUntyped(value, SizeOf(Integer)).GetInt32; // hash is an IHash instance where I created a TXXHash32 for.

    Also, you could use TXXHash32  and avoid the whole slowdown associated with interface virtual calls but then you will have to manage the memory yourself.
    doing what I described above then you will have

     

    hash.ComputeUntyped(value, SizeOf(Integer)).GetUInt32; // where hash is a THash instance.

    Could you please try this and post your results?


  7. first of all, I must intercept here.
    MurmurHash is not faster than xxHash, never.
    That implementation been used is naive and has never been optimized.
    I suggest you use the version in HashLib4Pascal as that has been optimized over time.

     

    Benchmarks

     

    Results on My PC are attached below.

    As you can see in the benchmark, xxHash blows MurmurHash out of the waters especially in FPC. :classic_biggrin:

     

    Delphi.jpg

    FPC.jpg


  8. Hi,

    So here is what I want to achieve.

    I have a class named TA. in class TA, I have a record named TB.

    is it possible to get the constructed instance of TA as a variable in TB without the use of an external variable that is assigned at the construction of TA of course?

     

    type
      TA = class abstract(TObject)
      strict private
      type
        TB = record
        private
        var
          ClassAInstance: TA;  // ========================> is it possible to get the constructed instance of TA in TB so I can assign it to the variable.
          Block: array [0 .. 7] of Byte;
          Offset: UInt64;
          BlockOffset: Int32;
    
          function Clone(): TB;
    
          procedure Read(const ADestination: TBytes;
            ADestinationOffset, AOutputLength: UInt64);
    
          class function DefaultB(): TB; static;
    
        end;

    Thanks.


  9. 2 hours ago, Attila Kovacs said:

    Hi all,

     

    Is there any existing unit/module whatever for handling In-App clipboard functionality?

    App should not leak data over clipboard, but I would like to keep the feature inside the app.

     

    It's shouldn't be too hard, I'm just curious if there is already any solution.

     

    Handling text is sufficient.

     

    (VCL/Windows)

    @Attila Kovacs you might have to end up writing your own app specific clipboard because the Windows clipboard content is accessible to all running programs.


  10. 2 hours ago, Andy Vines said:

    My CE licence ran out on Sunday, so this morning the licence wizard appears, I tried to download the new version but I received an email saying:

     

    'Our records show that you have previously obtained a trial license for this product and version. A trial license can be issued only once. If you would like to extend the product evaluation, please contact Embarcadero Support'

     

    I have never downloaded a trial, only the CE version, so I have asked support for a new CE licence, if nothing comes then I guess it will be time to move to Visual Studio, I only use Delphi for personal and hobby applications so I can't afford the price of a commercial licence.

    You can give Lazarus and FreePascal a try, at least that's what I do these days.

    • Like 1

  11. 10 hours ago, Remy Lebeau said:

    However, you don't actually need OAuth to access GMail.  You can instead go into your Google account settings and generate an Application-specific password, which works just fine with Indy.

    The problem with application password is that it requires 2FA setup which in turn forces you to authenticate each login even though it's for something as trivial as sending mails from your app.

    • Like 1
×