Comments (14)
Hello TheLazyTomcat.
Well seen!
Yes, I have to check if Thomas has added new methods in the C header.
OK, I will add it asap.
Many thank to report it.
Fre;D
from uos.
Re-hello.
I will use the C header of last stable version: mpg123-1.25.12
.
Fre;D
from uos.
Only quick look, but following seems to be missing:
mpg123_getformat2
mpg123_open_32
mpg123_open_64
mpg123_open_fd_32
mpg123_open_fd_64
mpg123_open_handle_32
mpg123_open_handle_64
mpg123_decode_frame_32
mpg123_decode_frame_64
mpg123_framebyframe_decode
mpg123_framebyframe_decode_32
mpg123_framebyframe_decode_64
mpg123_framebyframe_next
mpg123_framedata
mpg123_framepos
mpg123_framepos_32
mpg123_framepos_64
mpg123_tell_32
mpg123_tell_64
mpg123_tellframe_32
mpg123_tellframe_64
mpg123_seek_32
mpg123_seek_64
mpg123_feedseek_32
mpg123_feedseek_64
mpg123_seek_frame_32
mpg123_seek_frame_64
mpg123_timeframe_32
mpg123_timeframe_64
mpg123_index_32
mpg123_index_64
mpg123_set_index
mpg123_set_index_32
mpg123_set_index_64
mpg123_position_32
mpg123_position_64
mpg123_framelength
mpg123_framelength_32
mpg123_framelength_64
mpg123_length_32
mpg123_length_64
mpg123_set_filesize_32
mpg123_set_filesize_64
mpg123_spf
mpg123_chomp_string
mpg123_meta_free
mpg123_replace_reader
mpg123_replace_reader_32
mpg123_replace_reader_64
mpg123_replace_reader_handle
mpg123_replace_reader_handle_32
mpg123_replace_reader_handle_64
Hope i have not missed anything. Also, i have listed functions for explicit large/"normal" file access, whether you declare them is completely up to you, they are not essential.
from uos.
Ooops, lot of new methods!
OK, I will do it this week-end.
Fre;D
from uos.
Re-hello.
Sorry but I do not find in the mpg123.h
header all the methods with *_32 or *_64, like you show:
mpg123_open_32
mpg123_open_64
mpg123_open_fd_32
mpg123_open_fd_64
etc...
There is something that I do not catch here...
Fre;D
from uos.
Hello.
OK I did add the missing methods with last commit 7ad1ae0
But I still wait before to add the *_32 and *_64 methods.
I have to check first in the binary-library of mpg123 if those methods are defined.
Fre;D
from uos.
They are for sure exported by the DLL, I know I have first noticed them when i was looking into what system DLLs it is using (which I do for every downloaded binary) and looked at export table.
They are not directly defined in mpg123.h
, but at least the _64 suffix is documented (line 55 in the header) and used in macros for LFS.
EDIT
Also look into doc/LARGEFILE in the source of mpg123 (have to read it myself too, found it just now).
from uos.
Indeed:
$ nm -D /home/fred/uos/examples/lib/Linux/64bit/LibMpg123-64.so
gives: --->
U cbrt
U close
U closedir
U cos
w __cxa_finalize
U dlclose
U dlopen
U dlsym
U __errno_location
U fclose
U fcntl
U __fdelt_chk
U fdopen
U fopen
U __fprintf_chk
U free
U fwrite
U getenv
w __gmon_start__
U __isoc99_sscanf
w _ITM_deregisterTMCloneTable
w _ITM_registerTMCloneTable
w _Jv_RegisterClasses
U __log_finite
U lseek
U malloc
U memcpy
U memmove
U memset
000000000001be50 T mpg123_add_string
000000000001bd50 T mpg123_add_substring
000000000001c260 T mpg123_chomp_string
000000000001a0c0 T mpg123_clip
000000000001b4a0 T mpg123_close
000000000001bcf0 T mpg123_copy_string
0000000000014130 T mpg123_current_decoder
0000000000019d50 T mpg123_decode
00000000000199e0 T mpg123_decode_frame
000000000003c680 T mpg123_decode_frame_64
0000000000018d30 T mpg123_decoder
0000000000014160 T mpg123_decoders
000000000001b690 T mpg123_delete
00000000000081e0 T mpg123_delete_pars
000000000001b2c0 T mpg123_enc_from_id3
000000000000abc0 T mpg123_encodings
000000000000abe0 T mpg123_encsize
00000000000192d0 T mpg123_eq
000000000001b720 T mpg123_errcode
0000000000018c70 T mpg123_exit
000000000003c630 T mpg123_feature
0000000000019cf0 T mpg123_feed
000000000001a550 T mpg123_feedseek
000000000003c6f0 T mpg123_feedseek_64
000000000000bad0 T mpg123_fmt
000000000000b870 T mpg123_fmt_all
000000000000b730 T mpg123_fmt_none
000000000000bf00 T mpg123_fmt_support
000000000000bed0 T mpg123_format
000000000000baa0 T mpg123_format_all
000000000000b840 T mpg123_format_none
000000000000c1a0 T mpg123_format_support
00000000000198b0 T mpg123_framebyframe_decode
000000000003c690 T mpg123_framebyframe_decode_64
0000000000019980 T mpg123_framebyframe_next
0000000000008a40 T mpg123_framedata
000000000001aa70 T mpg123_framelength
000000000003c750 T mpg123_framelength_64
0000000000009e00 T mpg123_framepos
000000000003c6a0 T mpg123_framepos_64
000000000001bc10 T mpg123_free_string
0000000000019380 T mpg123_geteq
000000000001a2d0 T mpg123_getformat
0000000000019030 T mpg123_getpar
00000000000191d0 T mpg123_getparam
0000000000019200 T mpg123_getstate
0000000000009d70 T mpg123_getvolume
000000000001bcc0 T mpg123_grow_string
000000000001b260 T mpg123_icy
000000000001b2b0 T mpg123_icy2utf8
000000000001b1b0 T mpg123_id3
000000000001b3f0 T mpg123_index
000000000003c720 T mpg123_index_64
000000000001a0f0 T mpg123_info
0000000000018c30 T mpg123_init
000000000001bbf0 T mpg123_init_string
000000000001ab20 T mpg123_length
000000000003c760 T mpg123_length_64
000000000001b160 T mpg123_meta_check
000000000001b180 T mpg123_meta_free
0000000000018d20 T mpg123_new
00000000000080f0 T mpg123_new_pars
000000000003aad0 T mpg123_noise
000000000001b4f0 T mpg123_open
000000000003c650 T mpg123_open_64
000000000001b530 T mpg123_open_fd
000000000003c660 T mpg123_open_fd_64
000000000001b5d0 T mpg123_open_feed
000000000001b570 T mpg123_open_handle
000000000003c670 T mpg123_open_handle_64
0000000000019880 T mpg123_outblock
0000000000018de0 T mpg123_par
0000000000018f90 T mpg123_param
0000000000018c80 T mpg123_parnew
000000000001b6c0 T mpg123_plain_strerror
0000000000007dc0 T mpg123_position
000000000003c740 T mpg123_position_64
000000000000aba0 T mpg123_rates
000000000001a0a0 T mpg123_read
0000000000008400 T mpg123_replace_buffer
000000000001b600 T mpg123_replace_reader
000000000003c780 T mpg123_replace_reader_64
000000000001b640 T mpg123_replace_reader_handle
000000000003c790 T mpg123_replace_reader_handle_64
0000000000008200 T mpg123_reset_eq
000000000001bc40 T mpg123_resize_string
0000000000019870 T mpg123_safe_buffer
000000000001ac40 T mpg123_scan
000000000001ae40 T mpg123_seek
000000000003c6e0 T mpg123_seek_64
000000000001a840 T mpg123_seek_frame
000000000003c700 T mpg123_seek_frame_64
000000000001aa50 T mpg123_set_filesize
000000000003c770 T mpg123_set_filesize_64
000000000001b440 T mpg123_set_index
000000000003c730 T mpg123_set_index_64
000000000001beb0 T mpg123_set_string
000000000001be90 T mpg123_set_substring
0000000000007d30 T mpg123_spf
000000000001b2e0 T mpg123_store_utf8
000000000001b740 T mpg123_strerror
000000000001bed0 T mpg123_strlen
0000000000014170 T mpg123_supported_decoders
000000000001a3d0 T mpg123_tell
000000000003c6b0 T mpg123_tell_64
000000000001a4e0 T mpg123_tellframe
000000000003c6c0 T mpg123_tellframe_64
000000000001a530 T mpg123_tell_stream
000000000003c6d0 T mpg123_tell_stream_64
000000000001a360 T mpg123_timeframe
000000000003c710 T mpg123_timeframe_64
0000000000007d60 T mpg123_tpf
0000000000009d20 T mpg123_volume
0000000000009d50 T mpg123_volume_change
U open
U opendir
U __pow_finite
U read
U readdir
U realloc
U select
U sigaction
U sigemptyset
U sin
U __stack_chk_fail
U stderr
U strcasecmp
U strerror
U strlen
U strncasecmp
U strncmp
U __strncpy_chk
U strtod
U tan
U write
U __xstat
OK, I will do it asap.
Fre;D
from uos.
Huh, not so simple, there are not the same methods in the library 32 bit:
See, here there are *_64 but also *_32 methods.
In the library 64 bit, there are no *_32 methods.
nm -D /home/fred/uos/examples/lib/Linux/32bit/LibMpg123-32.so
gives: ---->
U cbrt
U close
w __cxa_finalize
U __errno_location
U fcntl
U __fprintf_chk
U free
U fwrite
w __gmon_start__
U __isoc99_sscanf
w _Jv_RegisterClasses
U lseek64
U malloc
U memcpy
U memmove
U memset
00018670 T mpg123_add_string
00018570 T mpg123_add_substring
00015e80 T mpg123_clip
00017860 T mpg123_close
000184e0 T mpg123_copy_string
00011230 T mpg123_current_decoder
00015c90 T mpg123_decode
00041270 T mpg123_decode_frame
000425e0 T mpg123_decode_frame_32
00015af0 T mpg123_decode_frame_64
00014be0 T mpg123_decoder
00011260 T mpg123_decoders
00017b10 T mpg123_delete
00006140 T mpg123_delete_pars
000175b0 T mpg123_enc_from_id3
00009160 T mpg123_encodings
00009190 T mpg123_encsize
00015270 T mpg123_eq
00017bc0 T mpg123_errcode
00014ad0 T mpg123_exit
00040f30 T mpg123_feature
00015bf0 T mpg123_feed
00041590 T mpg123_feedseek
00042760 T mpg123_feedseek_32
00016310 T mpg123_feedseek_64
0000a460 T mpg123_fmt
0000a190 T mpg123_fmt_all
0000a0a0 T mpg123_fmt_none
0000a9f0 T mpg123_fmt_support
0000a980 T mpg123_format
0000a400 T mpg123_format_all
0000a130 T mpg123_format_none
0000abe0 T mpg123_format_support
00041300 T mpg123_framebyframe_decode
00042620 T mpg123_framebyframe_decode_32
000159b0 T mpg123_framebyframe_decode_64
00015a80 T mpg123_framebyframe_next
00006c20 T mpg123_framedata
00041390 T mpg123_framepos
00042660 T mpg123_framepos_32
00008470 T mpg123_framepos_64
000183b0 T mpg123_free_string
00015310 T mpg123_geteq
00015ea0 T mpg123_getformat
00014fa0 T mpg123_getpar
00015150 T mpg123_getparam
000151c0 T mpg123_getstate
000083d0 T mpg123_getvolume
000184a0 T mpg123_grow_string
00017520 T mpg123_icy
00017580 T mpg123_icy2utf8
00017450 T mpg123_id3
00041730 T mpg123_index
00042820 T mpg123_index_32
00017750 T mpg123_index_64
00006a70 T mpg123_info
00014a80 T mpg123_init
00018390 T mpg123_init_string
00041f90 T mpg123_length
00042920 T mpg123_length_32
00016a90 T mpg123_length_64
000173e0 T mpg123_meta_check
00017400 T mpg123_meta_free
00014ba0 T mpg123_new
00006050 T mpg123_new_pars
00040cf0 T mpg123_noise
00042270 T mpg123_open
00042550 T mpg123_open_32
00017ab0 T mpg123_open_64
000423c0 T mpg123_open_fd
00042580 T mpg123_open_fd_32
00017a50 T mpg123_open_fd_64
00017980 T mpg123_open_feed
00042490 T mpg123_open_handle
000425b0 T mpg123_open_handle_32
000179d0 T mpg123_open_handle_64
00015970 T mpg123_outblock
00014cb0 T mpg123_par
00014eb0 T mpg123_param
00014ae0 T mpg123_parnew
00017b60 T mpg123_plain_strerror
00041ea0 T mpg123_position
000428b0 T mpg123_position_32
00005950 T mpg123_position_64
00009130 T mpg123_rates
00015e30 T mpg123_read
00006390 T mpg123_replace_buffer
00042030 T mpg123_replace_reader
00042990 T mpg123_replace_reader_32
00017930 T mpg123_replace_reader_64
00042170 T mpg123_replace_reader_handle
000429d0 T mpg123_replace_reader_handle_32
000178d0 T mpg123_replace_reader_handle_64
00006170 T mpg123_reset_eq
00018400 T mpg123_resize_string
00015960 T mpg123_safe_buffer
00016d80 T mpg123_scan
00041510 T mpg123_seek
00042720 T mpg123_seek_32
00016fe0 T mpg123_seek_64
00041640 T mpg123_seek_frame
000427b0 T mpg123_seek_frame_32
00016840 T mpg123_seek_frame_64
00041ff0 T mpg123_set_filesize
00042950 T mpg123_set_filesize_32
00016a50 T mpg123_set_filesize_64
00041b70 T mpg123_set_index
00042860 T mpg123_set_index_32
000177c0 T mpg123_set_index_64
00018710 T mpg123_set_string
000186c0 T mpg123_set_substring
000058a0 T mpg123_spf
000175e0 T mpg123_store_utf8
00017be0 T mpg123_strerror
00018750 T mpg123_strlen
00011280 T mpg123_supported_decoders
000413f0 T mpg123_tell
00042690 T mpg123_tell_32
00015fd0 T mpg123_tell_64
00041450 T mpg123_tellframe
000426c0 T mpg123_tellframe_32
00016220 T mpg123_tellframe_64
000414b0 T mpg123_tell_stream
000426f0 T mpg123_tell_stream_32
000162c0 T mpg123_tell_stream_64
000416c0 T mpg123_timeframe
000427f0 T mpg123_timeframe_32
00015f30 T mpg123_timeframe_64
000058f0 T mpg123_tpf
00008310 T mpg123_volume
00008380 T mpg123_volume_change
U open64
U pow
U read
U realloc
U select
U __stack_chk_fail
U stderr
U strcasecmp
U __strdup
U strerror
U strlen
U strncasecmp
U strncmp
U strncpy
U strtod
from uos.
In 64bit non-windows system, the type off_t is always 64bits wide, therefore there cannot be _32 variants as there is no way of passing 32 wide offset. Remember, I am developing only for windows, so my binaries all have both varians (_32 and _64) - in win64 the off_t is still 32bits wide.
To sum it up...
- win32 - off_t is 32bits wide, all variants present (*, *_32, *_64)
- win64 - off_t is 32bits wide, all variants
- *nix32 - off_t is 32bits wide, all variants
- *nix64 - off_t is 64bits wide, only non-suffixed and *_64 variants
It is all because of different definition of off_t on different system. Generally, off_t is defined as long...
https://en.wikipedia.org/wiki/64-bit_computing#64-bit_data_models
https://docs.oracle.com/cd/E19620-01/805-3024/lp64-1/index.html
So either add only _64 bit variants, as they are everywhere, or add _32 into condition blocks for windows only.
from uos.
Hello.
OK, _32 and _64 methods commited with commit 34ff927..ec72b2c
I hope it is ok.
Fre;D
from uos.
There were some mistakes, I've tried to correct them: #28
from uos.
OK, pull request done!
Many thanks.
I did try some _64 methods with success.
But, on my Linux Debian 64 bit I do not feel any difference using for example mpg123_seek
vs mpg123_seek_64
, or mpg123_open
vs mpg123_open_64
Anyway, it works!
from uos.
On 64bit linux, *_64 suffixed functions are probably just wrappers for non-suffixed functions (i have not studied the code in such details).
As it is resolved, let's close this issue. Many thanks for cooperation!
from uos.
Related Issues (20)
- uos does synthesizer !
- Failed to use within Delphi as description mentioned Delphi HOT 2
- Russian Device Names HOT 7
- Device Enumeration HOT 10
- Recording input stream to wav directly HOT 10
- uos has his forum ;-) HOT 2
- problem on threaded uos_File2Buffer HOT 5
- Check Range error HOT 2
- uos_EndProc not working on linux 64-bit xfce using uos v2.0.1 ? HOT 1
- Highpass filter not working HOT 4
- mpg123 - wrong declaration of records HOT 5
- Missing Identifiers HOT 1
- Problem with multi audio cards and PortAudio+PulseAudio HOT 1
- Zip File Corrupted HOT 1
- No external libraries HOT 9
- Debug output HOT 38
- Distorted (ogg file) audio output HOT 2
- DELPHI? HOT 1
- Compilation fails in DEBUG mode HOT 9
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from uos.