Opened 5 years ago

Closed 4 years ago

#2355 closed enhancement (fixed)

New codecs

Reported by: Yury Owned by: beastd
Priority: normal Component: undetermined
Version: HEAD Severity: minor
Keywords: Cc:
Blocked By: Blocking:
Reproduced by developer: no Analyzed by developer: no

Description

Last year(s) there occur some newer codecs. Like HEVC (with x265 coding lib
for example), VP8, VP9 and even newer AV1 (aom and dav1d libs) and AVS2 (davs2 lib).
More than that, Google start publish videos on YouTube in AV1 encoding among
other encodings.

I can easily watch HEVC of VPx videos in MPlayer, thank you! But I hardly see a way to encode to HEVC or VP9 "natively" with MEncoder (may be with lavc, but it would be better for me to do it like with x264 in mencoder, not via lavc).

Worse than that, I even cannot watch videos encoded with AV1 or ASV2, although newer versions of FFMpeg can show me these formats with ffplay.

May be some newer options to compile? I could not find them, also in man pages or html DOCs.

My system is amd64 FreeBSD.

Attachments (1)

libdav1d_complete.diff (1.9 KB ) - added by Andrew-R 5 years ago.

Download all attachments as: .zip

Change History (11)

in reply to:  description comment:1 by beastd, 5 years ago

Hi,

thank you for the feedback!

It's just a bit broad for one ticket. I think we might open individual new tickets for some things you mention here.

Anyway some comments follow inline below:

Replying to gja822:

Last year(s) there occur some newer codecs. Like HEVC (with x265 coding lib
for example), VP8, VP9 and even newer AV1 (aom and dav1d libs) and AVS2 (davs2 lib).
More than that, Google start publish videos on YouTube in AV1 encoding among
other encodings.

I can easily watch HEVC of VPx videos in MPlayer, thank you! But I hardly see a way to encode to HEVC or VP9 "natively" with MEncoder (may be with lavc, but it would be better for me to do it like with x264 in mencoder, not via lavc).

Why would it be better to do it with MEncoder?
FFmpeg has no native encoders for HEVC or VP9.

For MPlayer/MEncoder developing serious encoders for these codecs is not an option.

So if we would add them, it would be like for H264 (ve x264) and wrap an external library like libx265 and libvpx.

Can you explain why you prefer the "wrapper" to be in mencoder?

Worse than that, I even cannot watch videos encoded with AV1 or ASV2, although newer versions of FFMpeg can show me these formats with ffplay.

That's probably because the codecs weren't added to MPlayer's codecs.conf yet. Will have a look.

May be some newer options to compile? I could not find them, also in man pages or html DOCs.

My system is amd64 FreeBSD.

comment:2 by Yury, 5 years ago

Thank you for the reply.

My "natively" is, of course, the same as your "wrapper". I find it easier to use libx265 or libvpx options than that lavc name them. May be it is just a matter of a habbit which I have got using convenient x264enc options. As far as I can get it, lavc even have different names for the same options, haven't it? I am using in the same way xvidenc or lameopts. So, lavc options are documented a bit scarcely in MPlayer docs, and it is not convenient to search for them on ffmpeg project pages.

I look forward for AV1 and ASV2 support.

by Andrew-R, 5 years ago

Attachment: libdav1d_complete.diff added

comment:3 by Andrew-R, 5 years ago

I tried to add libdav1d decoding support. It worked, but shows this in terminal:

[libdav1d @ 0x576d1840]The deprecated avcodec_decode_* API cannot return all the frames for this decoder. Some frames will be dropped. Update your code to the new decoding API to fix this

Sadly vd_ffmpeg.c definitely above what I can change ....

May be this webpage will help someone better than me:
https://blogs.gentoo.org/lu_zero/2016/03/29/new-avcodec-api/

in reply to:  3 ; comment:4 by Yury, 4 years ago

Replying to Andrew-R:

I tried to add libdav1d decoding support. It worked, but shows this in terminal:

[libdav1d @ 0x576d1840]The deprecated avcodec_decode_* API cannot return all the frames for this decoder. Some frames will be dropped. Update your code to the new decoding API to fix this

Sadly vd_ffmpeg.c definitely above what I can change ....

May be this webpage will help someone better than me:
https://blogs.gentoo.org/lu_zero/2016/03/29/new-avcodec-api/

Is there any hope? For I have to use ffplay for these kind of source. But I'm used to mplayer and its' options and controls.

in reply to:  4 ; comment:5 by beastd, 4 years ago

Replying to gja822:

Replying to Andrew-R:

I tried to add libdav1d decoding support. It worked, but shows this in terminal:

I added a codecs.conf entry for libdav1d in SVN r38155 .
As reported by Andrew-R, I was able to successfully playback AV1 content.

[libdav1d @ 0x576d1840]The deprecated avcodec_decode_* API cannot return all the frames for this decoder. Some frames will be dropped. Update your code to the new decoding API to fix this

Sadly vd_ffmpeg.c definitely above what I can change ....

May be this webpage will help someone better than me:
https://blogs.gentoo.org/lu_zero/2016/03/29/new-avcodec-api/

The quoted FFmpeg message needs some more thorough investigation, which I couldn't yet do.

Is there any hope? For I have to use ffplay for these kind of source. But I'm used to mplayer and its' options and controls.

If you compile current MPlayer SVN checkout against external FFmpeg (--disable-ffmpeg_a configure option) and external FFmpeg has libdav1d support, you should be able to view AV1 videos. If you happen to try and it's not working, please report back here.

Can't promise a particular date, but I'm quite certain I will add the configure checks that will enable libdav1d/libaom for internal FFmpeg. Hopefully then I won't forget to update this ticket.

If you are missing other codecs, apart from AV1, feel free to report them here or open a new ticket if you think that's more appropriate.

in reply to:  5 comment:6 by beastd, 4 years ago

Replying to beastd:

Can't promise a particular date, but I'm quite certain I will add the configure checks that will enable libdav1d/libaom for internal FFmpeg. Hopefully then I won't forget to update this ticket.

If you are missing other codecs, apart from AV1, feel free to report them here or open a new ticket if you think that's more appropriate.

Just saw again you also requested AVS2 decoding. Will try to add it right after adding the configure checks for the AV1 libs.

in reply to:  5 ; comment:7 by beastd, 4 years ago

Replying to beastd:

Can't promise a particular date, but I'm quite certain I will add the configure checks that will enable libdav1d/libaom for internal FFmpeg. Hopefully then I won't forget to update this ticket.

Just posted the patches on mplayer development mailing list this morning:

  1. libdav1d: https://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2020-January/073818.html
  2. libaom: http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2020-January/073819.html

Will probably push the changes this weekend.

If anyone can help reviewing or testing, that would be nice.

comment:8 by beastd, 4 years ago

Status: newopen

in reply to:  7 comment:9 by beastd, 4 years ago

Replying to beastd:

Replying to beastd:

Can't promise a particular date, but I'm quite certain I will add the configure checks that will enable libdav1d/libaom for internal FFmpeg. Hopefully then I won't forget to update this ticket.

Just posted the patches on mplayer development mailing list this morning:

  1. libdav1d: https://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2020-January/073818.html
  2. libaom: http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2020-January/073819.html

Will probably push the changes this weekend.

The linked patches were missing the --enable/disable-thing options for configure.

I have added them locally. If no more issues pop up, I will probably commit on Wednesday.

If anyone can help reviewing or testing, that would be nice.

comment:10 by beastd, 4 years ago

Resolution: fixed
Status: openclosed

I committed the configure checks as MPlayer SVN r38160 and r38161 .

If it doesn't work for you, please don't hesitate to re-open this ticket.

For the issue with the currently used FFmpeg API I have opened ticket #2366 .

Note: See TracTickets for help on using tickets.