libretro / RetroArch

Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.
http://www.libretro.com
GNU General Public License v3.0
10.38k stars 1.84k forks source link

Bounty for touch ups on mpv-libretro #5070

Open anothername99 opened 7 years ago

anothername99 commented 7 years ago

To complete this bounty, you need to implement the following:

deltabeard commented 6 years ago

I've been attempting to create a libretro core based on mpv here that I hope will fulfil these requirements. I think it's best to use a media player that already exists, rather than trying to write a new one just for Retroarch.

My own personal requirements (separate from the bounty) are:

I do plan on fulfilling your bounty requirements eventually as they're all useful.

However, I've hit an issue right from the beginning as described here and here which I hope to get resolved soon. Currently mpv-libretro can't do anything because of this issue.

Edit: What is the bounty for this? I can't find it on bountysource. Edit2: The issue mentioned was fixed. Edit3 2018-02-08: Updated requirements completion.

orbea commented 6 years ago

HI, personally the current video player is much preferred. Its far more portable than mpv and doesn't suffer from developer tantrums... Its missing some features, but I think adding those would be less work down the line than working around incompatibilities caused by mpv upstream.

andres-asm commented 6 years ago

Well he's interested in MPV so it should be fine if he comes up with that

deltabeard commented 6 years ago

That's fine. I will continue to work on mpv-libretro as an alternative. I have a proof of concept build already. 😃 I have yet to test if hardware acceleration works though, which is the main reason I started it.

developer tantrums

Are you referring to the ffmpeg fork?

anyputer commented 6 years ago

What about libVLC? https://github.com/videolan/vlc/blob/master/src/libvlc.c https://wiki.videolan.org/LibVLC/

deltabeard commented 6 years ago

What about libVLC?

I hadn't considered libVLC because I didn't even know it existed. I will have a look to see if it would be more appropriate to use instead of libmpv later. If libvlc has an opengl callback and an audio callback (which mpv doesn't currently have) then I may use it instead.

orbea commented 6 years ago

Well he's interested in MPV so it should be fine if he comes up with that

Yea, exactly! There is no problem with alternatives so everyone is happy. :)

As for libVLC I wonder how trivial it would be to build? I know building stand alone vlc from source is not trivial...

allanin commented 6 years ago

It would be good to have also a look for native wayland support for the video player.

MPV and RetroArch are working using Wayland, VLC does not afaik.

anothername99 commented 6 years ago

@deltabeard Sorry for the slow response. I posted this bounty long ago and I haven't checked up on it for a while. I learned about your mpv-libretro project yesterday and tested all of my video files on it. It seems to already work better than the builtin player, so I would be glad to put my money on this instead. Great work!

I noticed that all subtitle formats already seem to be supported. Are any of the other requirements implemented or work in progress?

About the bounty link, it is here: https://www.bountysource.com/issues/46340715-bounty-for-touch-ups-on-builtin-video-player

I also opened another bounty if you're interested: https://www.bountysource.com/issues/49138506-dvd-iso-playback-with-menu-navigation https://github.com/libretro/RetroArch/issues/5416

anothername99 commented 6 years ago

@orbea What's the problem with mpv from a portability standpoint?

deltabeard commented 6 years ago

Thanks for the support! I'm planning on fulfilling the requirements of the bounty at some point, but it may take a while.

Already added controller input for pause/play, seek, show seek bar and next subtitle. Other button mappings can be added after other major features get added.

A button mapping exists for showing the seek bar. It doesn't yet show the video name.

Doesn't do this yet. But this will be integrated as part of the save state feature Retroarch has.

A bunch of stuff has to happen first before this feature gets added. Namely audio callback support in libmpv.

Retroarch doesn't currently have support for playing a playlist. However, it is possible to supply a playlist file (like m3u) as an input file. So if Retroarch doesn't add support when I consider adding this feature, I will add support for using playlist files in the meantime.

As part of the above feature.

Repeating a single video will be easy. Repeating a whole folder of videos relies on the playlist support mentioned above.

deltabeard commented 6 years ago

Regarding the DVD playback:

Simple to do.

If mpv can navigate menus, then this will be simple to do too.

I have tested playing a ripped DVD already.

I think libretro-mpv should be able to open a DVD iso file or mount point and play the movie already. I'll consider testing this further at some point this week.

anothername99 commented 6 years ago

"A bunch of stuff has to happen first before this feature gets added. Namely audio callback support in libmpv."

Bummer. This feature is of a lower priority though, so I may accept it anyway.

"Retroarch doesn't currently have support for playing a playlist. However, it is possible to supply a playlist file (like m3u) as an input file. So if Retroarch doesn't add support when I consider adding this feature, I will add support for using playlist files in the meantime."

This however is a big thing. I watch a lot of series and they usually come organized with an entire season in one folder. In Kodi I can just open the first episode and it will play the whole thing without having to configure anything. Requiring a playlist file would make it considerably less convenient than Kodi.

About DVD playback, I tried to open an iso file with mpv-libretro but it wouldn't recognize it. This might just mean that .iso hasn't been added as a supported extension though and maybe it's easy to fix.

deltabeard commented 6 years ago

This might just mean that .iso hasn't been added as a supported extension though and maybe it's easy to fix.

That's true. I'll have to look in to what happens when a user supplies an invalid iso before I enable it.

This however is a big thing.

That's absolutely fine. It just may take a long while before that get's done.

deltabeard commented 6 years ago

libretro-mpv could have it's own playlist and directory scanner, but @twinaphex suggested that this should be a Retroarch feature so that other cores can make use of it too.

anothername99 commented 6 years ago

I think that being able to play the next file in a folder is the most important missing feature for me right now. The rest of the missing features would be nice to have but they're not stopping me from using libretro-mpv as my main video player. I would be willing to accept a bounty claim when this is implemented even if no other features are implemented yet.

As for whether the code should be added to the libretro-mpv core or RetroArch itself, I don't think I have a preference. If @twinaphex wants it in RetroArch, I'd say put it there. Would you (@deltabeard) be interested in contributing the code needed for this feature into RetroArch?

deltabeard commented 6 years ago

Would you be interested in contributing the code needed for this feature into RetroArch?

I'm not sure. I haven't had a proper look at RA source to decide how much time this requires. It needs proper planning to decide how it's going to work too.

deltabeard commented 6 years ago

I've spent a lot of time since I last posted here on testing and adding support for the Raspberry Pi. In the end, mpv support for the Pi isn't too great (not a fault of mpv) and the Raspberry Pi Userland is pretty poor. However, hardware accelerated decoding may become a thing with the open source VC4 driver as explained here.

Until then, I'm going to leave Pi support for now and focus on more pressing issues with libretro-mpv. I'll have a look into what playlist support RA currently has, and how much work is required to fulfil the rest of the bounty requirements.

I don't have much free time these days, so apologies for the slow progress.

anothername99 commented 6 years ago

I don't own a Raspberry Pi, so I don't have an opinion on that. Anyway, no worries, take your time, and thanks for your work.