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 0.463 second using v1.01-cache-2.11-cpan-e1769b4cff6 )