App-MHFS

 view release on metacpan or  search on metacpan

lib/MHFS/HTTP/Server.pm  view on Meta::CPAN


sub onReadReady {
    my ($server) = @_;
    # accept the connection
    my $csock = $server->{'sock'}->accept();
    if(! $csock) {
        say "server: cannot accept client";
        return 1;
    }

    # gather connection details and verify client host is acceptable
    my $peerhost = $csock->peerhost();
    if(! $peerhost) {
        say "server: no peerhost";
        return 1;
    }
    my $peerip = do {
        try { parse_ipv4($peerhost) }
        catch ($e) {
            say "server: error parsing ip $peerhost";
            return 1;

lib/MHFS/HTTP/Server/Client/Request.pm  view on Meta::CPAN

            say "RECV: $1";
            $self->{'header'}{$2} = $3;
        }
        else {
            say "X-MHFS-CONN-ID: " . $self->{'outheaders'}{'X-MHFS-CONN-ID'} . ' Invalid header, closing conn';
            return undef;
        }
    }
    # when $ipos is 0 we recieved the end of the headers: \r\n\r\n

    # verify correct host is specified when required
    if($self->{'client'}{'serverhostname'}) {
        if((! $self->{'header'}{'Host'}) ||
        ($self->{'header'}{'Host'} ne $self->{'client'}{'serverhostname'})) {
            my $printhostname = $self->{'header'}{'Host'} // '';
            say "Host: $printhostname does not match ". $self->{'client'}{'serverhostname'};
            return undef;
        }
    }

    $self->{'ip'} = $self->{'client'}{'ip'};

share/public_html/static/music_worklet_inprogress/decoder/src/mhfs_cl_track.h  view on Meta::CPAN

    {
        MHFSCLTR_PRINT("VBRI found\n");
        const uint8_t *vbriFields;
        const blockvf_error vbriFieldsError = blockvf_read_view(&pTrack->vf, 22, &vbriFields, &pReturnData->needed_offset);
        if(vbriFieldsError != BLOCKVF_SUCCESS)
        {
            return mhfs_cl_error_from_blockvf_error(vbriFieldsError);
        }
        const uint32_t frames = unaligned_beu32_to_native(&vbriFields[10]);
        MHFSCLTR_PRINT("vbri frames %u\n", frames);
        // FIX ME FIX ME need to verify pcmframes  calculation
        mhfs_cl_track_meta_audioinfo_init(&pTrack->meta, (frames + 1) * 1152, sampleRate, channels, MCT_MAI_FLD_BITRATE, 0, bitrate);
        if(on_metablock != NULL)
        {
            on_metablock(context, MHFS_CL_TRACK_M_AUDIOINFO, &pTrack->meta);
        }
        pTrack->meta_initialized = true;
        return MHFS_CL_SUCCESS;
    }

    // TODO

share/public_html/static/music_worklet_inprogress/decoder/src/mhfs_cl_track.h  view on Meta::CPAN

    const char *lastFourChars = (namelen >= 4) ? (fullfilename + namelen - 4) : "";
    const uint32_t uMagic = unaligned_beu32_to_native(id);
    if(memcmp(id, "fLaC", 4) == 0)
    {
        return ma_encoding_format_flac;
    }
    else if(memcmp(id, "RIFF", 4) == 0)
    {
        return ma_encoding_format_wav;
    }
    // check mpeg sync and verify the audio version id isn't reserved
    else if(((uMagic & 0xFFE00000) == 0xFFE00000) && ((uMagic & 0x00180000) != 0x80000))
    {
        return ma_encoding_format_mp3;
    }
    // fallback, attempt to speed up guesses by mime
    else if(strcmp(mime, "audio/flac") == 0)
    {
        return ma_encoding_format_flac;
    }
    else if((strcmp(mime, "audio/wave") == 0) || (strcmp(mime, "audio/wav") == 0))

t/01-util.t  view on Meta::CPAN


{
    my $result = get_printable_utf8('A'.chr(0xFF).'B');
    is($result, 'A'.chr(0xFFFD).'B', 'Valid invalid valid');
}
{
    my $result = get_printable_utf8("A\xED\xA0\xBC\xED\xBE\x84B");
    is($result, 'A'.chr(0x1F384).'B', 'Valid low surrogate high surrogate valid');
}
{
    # verify truncated sequences are replaced as expected
    my @tests = (
        ["\xC2", chr(0xFFFD)],
        ["\xC2A", chr(0xFFFD).'A'],
        ["\xE0\xA0", chr(0xFFFD)],
        ["\xE0\xA0A", chr(0xFFFD).'A'],
        ["\xF0\x90\x80", chr(0xFFFD)],
        ["\xF0\x90\x80A", chr(0xFFFD).'A'],
    );
    foreach my $test (@tests) {
        my $display = uc(unpack("H*", $test->[0]));



( run in 2.166 seconds using v1.01-cache-2.11-cpan-e1769b4cff6 )