maemo.org - Talk

maemo.org - Talk (https://talk.maemo.org/index.php)
-   Multimedia (https://talk.maemo.org/forumdisplay.php?f=32)
-   -   [M4+5] oscp - multiplatform player for (almost) any file format and network streams (using libav/ffmpeg and others), now with pygtk GUI (https://talk.maemo.org/showthread.php?t=94590)

KotCzarny 2015-08-17 22:20

Re: oscp - multiplatform player for (almost) any file format and network streams, now with pygtk GUI
 
hmm, looking at the code now. i made it to be accepting load requests by specifying numbers in current playlist. maybe i'll just add code to allow it to parse fullpath requests. but that's when i get up, too sleepy now

KotCzarny 2015-08-19 15:58

Re: oscp - multiplatform player for (almost) any file format and network streams, now with pygtk GUI
 
oscp (0.9.7-43) stable; urgency=low

* reup, fixed changelog
* added LOAD2 remote command (accepts full path as a param)
* changed /tmp/oscp-user/oscp.slave interface
--
hint1: oscp.slave accepts any remote.txt command. fe.: echo "PAUSE" >> /tmp/oscp-user/oscp.slave
hint2: added oscp-command.py which is an example of minimal remote interface

word of notice: this release is a work in progress. both interfaces are preliminary work to allow using oscp as a system player replacement

xes 2015-08-20 14:06

Re: oscp - multiplatform player for (almost) any file format and network streams, now with pygtk GUI
 
@KotCzarny
while talking about full paths...
http://talk.maemo.org/showpost.php?p...&postcount=161

have you already added some kind of network acl or is it still in your TODO list?
I like your oscp player but the closed sources and the lack of network acl make me feel a litlle bit worried...

KotCzarny 2015-08-23 16:38

Re: oscp - multiplatform player for (almost) any file format and network streams, now with pygtk GUI
 
@xes: still in todo, most likely gonna add it tomorrow (just returned from vacations). for now you can use /tmp/ interface for commands if you are worried about network

KotCzarny 2015-08-24 13:22

Re: oscp - multiplatform player for (almost) any file format and network streams, now with pygtk GUI
 
oscp (0.9.7-44) stable; urgency=low

* added netacl config option (in config file or via -N option)
by default (with remoted enabled and empty config) all remote ips can connect, to restrict:
run core at least once with (example): -N "127.0.0.1 192.168.1.0/24"
or put space separated list of ips/masks in netacl in config file

@proprog: were you successful hacking using oscp and oscp-command.py using LOAD2 or /tmp/ interface?

proprog 2015-08-24 19:33

Re: oscp - multiplatform player for (almost) any file format and network streams, now with pygtk GUI
 
Quote:

Originally Posted by KotCzarny (Post 1480081)
oscp (0.9.7-44) stable; urgency=low

* added netacl config option (in config file or via -N option)
by default (with remoted enabled and empty config) all remote ips can connect, to restrict:
run core at least once with (example): -N "127.0.0.1 192.168.1.0/24"
or put space separated list of ips/masks in netacl in config file

@proprog: were you successful hacking using oscp and oscp-command.py using LOAD2 or /tmp/ interface?

Let's just say that I have a lot to leárn.

I can get oscp to play downloaded songs via oscp-command, and that works ok for some of my use cases. But it looks like the current directory is not changed which is a bit confusing when the song is finished. And I cannot get the remote to work. If the remote is open it disconnects and wont connect again. And it doesn't start if not open.

Had a look at the gPodder source and it uses osso to call mime_open to have applications registered for that mime open the file. I guess that is what needed in oscp for it to replace omp for all my use cases.

Altogether my current setup is maybe not good enough to ditch omp yet. But I still use oscp daily and it's part of the reason I'm back using my n900.

Please let me know if I'm missing something. I'm happy to keep testing.

KotCzarny 2015-08-24 19:41

Re: oscp - multiplatform player for (almost) any file format and network streams, now with pygtk GUI
 
@proprog: some of your gripes come from oscp design:
1/ i made LOAD2 to be temporary (ie. not changing current dir and preserving previous one for go-back action)
2/ LOAD2 only works for files, right now i didnt add the code to change dirs (in case you wanted to start playing dir)
3/ only one remote can be used at once (that's why i suggested you to use /tmp/ interface, i may add multi-remote support if i think it over carefully or auto-reconnect)

so, one would need to write tiny app that would:
1/ register file types
2/ start oscp if not running
3/ echo LOAD2 command into /tmp/oscp-{user}/oscp.slave

all in all, i need more input on what's needed and how one would like to use it

proprog 2015-08-24 20:57

Re: oscp - multiplatform player for (almost) any file format and network streams, now with pygtk GUI
 
Quote:

Originally Posted by KotCzarny (Post 1480102)
@proprog: some of your gripes come from oscp design:
1/ i made LOAD2 to be temporary (ie. not changing current dir and preserving previous one for go-back action)
2/ LOAD2 only works for files, right now i didnt add the code to change dirs (in case you wanted to start playing dir)
3/ only one remote can be used at once (that's why i suggested you to use /tmp/ interface, i may add multi-remote support if i think it over carefully or auto-reconnect)

so, one would need to write tiny app that would:
1/ register file types
2/ start oscp if not running
3/ echo LOAD2 command into /tmp/oscp-{user}/oscp.slave

all in all, i need more input on what's needed and how one would like to use it

Thanks for the clarification. i might give it a try myself. Will keep you posted, should at least find out some more details for you in the process.

KotCzarny 2015-08-25 15:43

Re: oscp - multiplatform player for (almost) any file format and network streams, now with pygtk GUI
 
oscp (0.9.7-45) stable; urgency=low

* N900: pause now closes audio device (ie. 0% cpu usage in pause)

have i said today that pulseaudio is evil and should die in a fire? anyway, you can now safely pause oscp without cpu/battery drain

KotCzarny 2015-08-26 18:24

Re: oscp - multiplatform player for (almost) any file format and network streams, now with pygtk GUI
 
oscp (0.9.7-46) stable; urgency=low

* LOAD2 param now can be file, dir or link (http/mms/rtsp)
* ncurses: k_open: assign key (default: o) to call LOAD2 directly

another update toward using oscp as default media player.

for ncurses key to work add k_open=o to ~/.oscp.conf
why is it nice? you can now copy paste links or paths (absolute or relative) into oscp-core directly (or via remote interface)

proprog 2015-09-12 21:33

Re: oscp - multiplatform player for (almost) any file format and network streams, now with pygtk GUI
 
FYI I've now managed to create a service that register as mediaplayer and uses oscp via tmp.

Works like a charm for local files (at least from gpodder). I haven't got urls to work though which would have been much better/easier. Will try some more tomorrow.

I can upload the service if anyone is interested. Just need to do some cleanup and also would like to get the urls to work first.

KotCzarny 2015-09-13 06:27

Re: oscp - multiplatform player for (almost) any file format and network streams, now with pygtk GUI
 
nice :) if you set debug=9 in ~/.oscp.conf it will create /tmp/oscp.log which could help you debugging things, just dont forget to set it back to 0 later as /tmp space is limited

Dongle Fongle 2015-09-13 15:15

Re: oscp - multiplatform player for (almost) any file format and network streams, now with pygtk GUI
 
Quote:

Originally Posted by proprog (Post 1482307)
FYI I've now managed to create a service that register as mediaplayer and uses oscp via tmp.

Works like a charm for local files (at least from gpodder). I haven't got urls to work though which would have been much better/easier. Will try some more tomorrow.

I can upload the service if anyone is interested. Just need to do some cleanup and also would like to get the urls to work first.

Would love to test this :)

proprog 2015-09-13 16:52

Re: oscp - multiplatform player for (almost) any file format and network streams, now with pygtk GUI
 
Quick update of progress. The http urls now works (don't ask what I had missed) but file urls are still not working.

My interpretation of the debug log is that the file url is appended to the current directory.

[669 9 4 remoted_parse: sock:-77 r_sock0:5 r_sock:-1 br:70 br0:71 bl0:5 b:LOAD2 file:///home/user/MyDocs/Podcasts/Brainy%20Gamer/bgpodcast38.mp3 bp:file:///home/user/MyDocs/Podcasts/Brainy%20Gamer/bgpodcast38.mp3]
[669 9 4 /home/user/MyDocs/.sounds/Christian Gabel/1900/file:///home/user/MyDocs/Podcasts/Brainy%20Gamer/bgpodcast38.mp3]

With local files the log looks like this and the music starts:

[1230 9 4 remoted_parse: sock:-77 r_sock0:5 r_sock:-1 br:61 br0:62 bl0:5 b:LOAD2 /home/user/MyDocs/Podcasts/Brainy Gamer/bgpodcast38.mp3 bp:/home/user/MyDocs/Podcasts/Brainy Gamer/bgpodcast38.mp3]
[1230 9 4 /home/user/MyDocs/Podcasts/Brainy Gamer/bgpodcast38.mp3]

As http now works the service is quite functional for my use cases and I will upload it after some cleanup.

KotCzarny 2015-09-13 17:49

Re: oscp - multiplatform player for (almost) any file format and network streams, now with pygtk GUI
 
hmm, that's because i didnt implement file:// urls. hum, gonna add parsing tomorrow, as im away from my build env (regular paths starting from / should work. current dir is added because code thinks its just relative path.)
note to self: urldecode local links

KotCzarny 2015-09-20 12:26

Re: oscp - multiplatform player for (almost) any file format and network streams, now with pygtk GUI
 
oscp (0.9.7-47) stable; urgency=low

* added support for file:// links in LOAD2

@proprog: could you test and report?

proprog 2015-09-21 09:39

Re: oscp - multiplatform player for (almost) any file format and network streams, now with pygtk GUI
 
Quote:

Originally Posted by KotCzarny (Post 1483086)
oscp (0.9.7-47) stable; urgency=low

* added support for file:// links in LOAD2

@proprog: could you test and report?

Tested now and file urls works.

My service is updated and now uses only urls.

KotCzarny 2015-10-21 08:53

Re: oscp - multiplatform player for (almost) any file format and network streams, now with pygtk GUI
 
oscp (0.9.7-48) stable; urgency=low

* updated to libsc68 3.0.0b (sndh modules)
* updated to libxmp 4.3.9
* fixed stopping on uninitialized midi library

KotCzarny 2015-10-30 20:08

Re: oscp - multiplatform player for (almost) any file format and network streams (using libav/ffmpeg and others), now with pygtk GUI
 
oscp (0.9.7-49) stable; urgency=low

* on start clip is set to last playing position (even without autoplay)
* rootmenu /.. containing some shortcuts (last file, favs, etc. step toward internet stations browser)
* small bugfixes

KotCzarny 2015-11-02 14:45

Re: oscp - multiplatform player for (almost) any file format and network streams (using libav/ffmpeg and others), now with pygtk GUI
 
oscp (0.9.7-50) stable; urgency=low

* fixed namespace bug (inflate() from libxmp collided with libz and zziplib)

in other words, due to some changes in -49 i've triggered a bug where zip files caused segfault. luckily the bug is no more, yay!

muto 2015-11-02 16:50

Re: oscp - multiplatform player for (almost) any file format and network streams (using libav/ffmpeg and others), now with pygtk GUI
 
First, thank you for this great app :).

Is it possible to set the playback device? Something like you can do in mplayer for example? To use external USB soundcard.

KotCzarny 2015-11-02 16:55

Re: oscp - multiplatform player for (almost) any file format and network streams (using libav/ffmpeg and others), now with pygtk GUI
 
not now, but i might add a cmd line param to TODO. for a quickie just edit oscp binary and change hw:0,0 into hw:1,0 (assuming aplay -l lists usb device as such)

KotCzarny 2015-11-02 16:56

Re: oscp - multiplatform player for (almost) any file format and network streams (using libav/ffmpeg and others), now with pygtk GUI
 
ahm, nah, just remembered that n900's version uses libao/pulseaudio as output and not direct alsa. so it depends if libao allows selecting audio device

KotCzarny 2015-11-02 19:54

Re: oscp - multiplatform player for (almost) any file format and network streams (using libav/ffmpeg and others), now with pygtk GUI
 
@muto: hmm, apparently libao supports few user configurable options:
ao_alsa_options[] = { "dev", "id", "buffer_time", "period_time", "use_mmap", "matrix", "verbose",
"quiet", "debug" };
ao_pulse_options[] = { "server", "sink", "dev", "id", "verbose", "quiet", "matrix", "debug",
"client_name" "buffer_time" };
ao_esd_options[] = { "server", "host", "matrix", "verbose", "quiet", "debug", "client_name" };

wild guess, edit /home/user/.libao and adding there:
default_driver=alsa
dev=hw:1,0
(though i think i force pulse in libao (for reasons) so you might try: )
default_driver=pulse
dev=dont-really-know-what-to-put-there-maybe hw:1,0 too?

KotCzarny 2015-11-03 17:02

Re: oscp - multiplatform player for (almost) any file format and network streams (using libav/ffmpeg and others), now with pygtk GUI
 
oscp (0.9.7-51) stable; urgency=low

* -A option to set audio device name (sink name for pulseaudio or "dev" key for libao)
* -C option to generate .wav out of file (useful for rendering exotic formats)
* removed libao dependency from n900's package

@muto: if you can find out what is proper pulseaudio sink name for that usb device you might try using -A 1 option to use it. but pulseaudio is evil and should die in a fire.

KotCzarny 2015-11-08 13:38

Re: oscp - multiplatform player for (almost) any file format and network streams (using libav/ffmpeg and others), now with pygtk GUI
 
oscp (0.9.7-52) stable; urgency=low

* switched to libav (avresample), should handle weird channel configurations and sample rates better

KotCzarny 2015-11-19 15:19

Re: oscp - multiplatform player for (almost) any file format and network streams (using libav/ffmpeg and others), now with pygtk GUI
 
oscp (0.9.7-53) stable; urgency=high

* fixed oscp.slave inotifier code typo that led to busyloop. oops.
* fix for formats returning huge packets with multiple frames (.ape)

i highly recommend to update. fixed busyloop introduced few revisions ago (read: battery drain). also, .ape files are playable now (no one reported them not working, so i guess no one uses them, but still.)

KotCzarny 2015-11-26 20:26

Re: oscp - multiplatform player for (almost) any file format and network streams (using libav/ffmpeg and others), now with pygtk GUI
 
oscp (0.9.7-54) stable; urgency=low

* bugfix in playlist descriptions handling
* bugfix in network msg sending
* new eq based on biquads effect from sox (new shortcut: toggled with shift-E by default)
* new flanger effect (also from sox, toggled with shift-F by default or in eq window)
* fixed softvol (should work again)

shortcuts might need to be assigned manually or you can delete the .oscp.conf to be reset to defaults. in the works are other effects from sox, notably 'earwax':
"Makes audio easier to listen to on headphones. Adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio so that when listened to on headphones the stereo image is moved from inside your head (standard for headphones) to outside and in front of the listener (standard for speakers)."

KotCzarny 2015-11-27 11:05

Re: oscp - multiplatform player for (almost) any file format and network streams (using libav/ffmpeg and others), now with pygtk GUI
 
oscp (0.9.7-55) stable; urgency=low

* new effect: earwax (from sox 14.4.2, toggled with shift-W by default or in eq window)
* new effect: contrast (from sox 14.4.2, toggled with shift-C by default or in eq window)

unfortunatelly n900@500mhz is too slow for earwax, any neon wizard able to speed up this code?: (p->tap, earwax_filt, ibuf and obuf are 32bit ints, output is double, NUMTAPS is 64)

<code>
while (len--) { output=0; // update taps and calculate output
for(i=NUMTAPS-1; i; --i) { p->tap[i]=p->tap[i-1]; output+=p->tap[i] * earwax_filt[i]; }
p->tap[0] = *ibuf++/64; output += p->tap[0] * earwax_filt[0]; // scale output
*obuf++ = output;
}
</code>

KotCzarny 2015-11-29 15:21

Re: oscp - multiplatform player for (almost) any file format and network streams (using libav/ffmpeg and others), now with pygtk GUI
 
oscp (0.9.7-56) stable; urgency=low

* new effect: reverb (from sox 14.4.2, toggled with shift-V by default or in eq window)
* new effect: overdrive (from sox 14.4.2, toggled with shift-O by default or in eq window)
* new effect: karaoke (based on remix/oops from sox 14.4.2, toggled with shift-K by default or in eq window)

reverb is again not crunchable by my n900@500, still, enjoy!

KotCzarny 2016-05-11 17:34

Re: [M4+5] oscp - multiplatform player for (almost) any file format and network streams (using libav/ffmpeg and others), now with pygtk GUI
 
oscp (0.9.7-57) stable; urgency=low

* fixed clip info display in ncurses
* new repeat mode (no repeat/repeat all/repeat one)
* switched to pcg32 as a rand() source
* softvol: switched from linear to exponential
* added root meta dir to oscp-remote.py
* enabled seeking to last pos without autoplay
* updated libs: libxmp-4.3.13, libav-11.6
* optimized sox effects a bit

enjoy. more bug fixes ahead. effects are now usable on stock n900.

KotCzarny 2016-05-17 04:54

Re: [M4+5] oscp - multiplatform player for (almost) any file format and network streams (using libav/ffmpeg and others), now with pygtk GUI
 
teaser: i've built oscp for n8x0 in chroot and it works just fine. and because there is no evilaudio on diablo, even with cpu decoding effects work. i'm trying to build it with newer compiler, but libav gets miscompiled somewhere with float based decoders (aac, ogg etc).

endsormeans 2016-05-17 05:49

Re: [M4+5] oscp - multiplatform player for (almost) any file format and network streams (using libav/ffmpeg and others), now with pygtk GUI
 
What the hell?
I'm just trying to wrap my brain around the ramifications of what you are accomplishing...
since your post is like a right-hook from out of nowhere... :D

KotCzarny 2016-05-29 17:13

Re: [M4+5] oscp - multiplatform player for (almost) any file format and network streams (using libav/ffmpeg and others), now with pygtk GUI
 
oscp (0.9.7-58) stable; urgency=low

* fixed (try#1) oscp stopping on track change
* fixed resampler (read all fifo)

-- KotCzarny <kotcza@gmail.com> Thu, 29 May 2016 00:00:01 +0100

upped to fremantle and diablo (poor n8x0, over 1 year without updates? huh). this is first package using arm based machine, so please post if there are issues.

KotCzarny 2016-06-12 18:20

Re: [M4+5] oscp - multiplatform player for (almost) any file format and network streams (using libav/ffmpeg and others), now with pygtk GUI
 
oscp (0.9.7-59) stable; urgency=low

* simple html/ftp browser/parser/player (no https) (test on: http://samples.libav.org/ or any other website)
(to use you can add links into .m3u or just press 'o' in ncurses and paste the link)
* added libre.fm (to enable run: "/opt/oscp/bin/oscp-scrobbler -t2" and authenticate via link)
* make mrl more verbose
* fix: utf names (related? some titles break frames/display in ncurses)
* fix: info window during idle etc
* fix: dont allow to delete dirs/files in archives
* fix: next/prev looping algo

a bit experimental release. i hope i didnt break too much

KotCzarny 2016-06-14 13:38

Re: [M4+5] oscp - multiplatform player for (almost) any file format and network streams (using libav/ffmpeg and others), now with pygtk GUI
 
oscp (0.9.7-60) stable; urgency=low

* quite a few stability fixes over the last release
* enabled the use of #EXTINF descriptions from .m3u
* urldecode html links

reinob 2016-06-15 09:06

Re: oscp - multiplatform player for (almost) any file format and network streams (using libav/ffmpeg and others), now with pygtk GUI
 
Quote:

Originally Posted by KotCzarny (Post 1489995)
unfortunatelly n900@500mhz is too slow for earwax, any neon wizard able to speed up this code?: (p->tap, earwax_filt, ibuf and obuf are 32bit ints, output is double, NUMTAPS is 64)

Code:

while (len--) { output=0;  // update taps and calculate output
  for(i=NUMTAPS-1; i; --i) { p->tap[i]=p->tap[i-1]; output+=p->tap[i] * earwax_filt[i]; }
  p->tap[0] = *ibuf++/64; output += p->tap[0] * earwax_filt[0];  // scale output
  *obuf++ = output;
 }


BTW I just saw this and noticed that you first rewrite tap[i] and then use it (output +=), which may limit the optimization considerably.

Something like this should be faster:
Code:

while (len--) { output=0;  // update taps and calculate output
  for(i=NUMTAPS-1; i; --i) {
    output+=p->tap[i-1] * earwax_filt[i];
  }

  for(i=NUMTAPS-1; i; --i) {
    p->tap[i]=p->tap[i-1];
  }

  p->tap[0] = *ibuf++/64; output += p->tap[0] * earwax_filt[0];  // scale output
  *obuf++ = output;
 }

The first for() loop doesn't need to write anywhere in memory.
The second loop (if at all needed, I don't know if you need to keep p->tap[] for anything) could/should be well optimized (otherwise you could do it with memmove() to shift the whole array to the left.

KotCzarny 2016-06-15 09:17

Re: [M4+5] oscp - multiplatform player for (almost) any file format and network streams (using libav/ffmpeg and others), now with pygtk GUI
 
thx, i think i've tried code similar to yours (with memmove) but without noticeable gain, will bench it in the evening/tomorrow tho

KotCzarny 2016-06-18 12:55

Re: [M4+5] oscp - multiplatform player for (almost) any file format and network streams (using libav/ffmpeg and others), now with pygtk GUI
 
oscp (0.9.7-61) stable; urgency=low

* add more file types to http browser (enabled http downloader)
* bugfixes

with this release you can browse/play those mod archives directly (no zip support for remote files, yet)
updated fremantle and diablo.

proprog 2016-06-22 18:38

Re: [M4+5] oscp - multiplatform player for (almost) any file format and network streams (using libav/ffmpeg and others), now with pygtk GUI
 
Since the last few releases I've had a minor problem with oscp-remote. When pressing stop it says "stopping" in the title bar but the song keeps playing.

Anyone else having this problem and is there a workaround?


All times are GMT. The time now is 08:11.

vBulletin® Version 3.8.8