Opened 3 years ago

Closed 2 months ago

#12565 closed bug (fixed)

HEVC/H.265 file extensions not recognized

Reported by: vidrep Owned by: nobody
Priority: low Milestone: Unscheduled
Component: Audio & Video/Codecs Version: R1/Development
Keywords: Cc:
Blocked By: Blocking:
Has a Patch: no Platform: All

Description

FFmpeg has implemented support for HEVC/H.265 decoding since October 2013. It would be nice to see this format supported in Haiku.

Attachments (3)

tearsofsteel-haiku.jpeg (609.8 KB) - added by cocobean 5 months ago.
Tears of Steel on Haiku hrev 52012
h265testing-haiku.jpeg (570.7 KB) - added by cocobean 5 months ago.
H.265 test on Haiku hrev 52012
screenshot1.png (75.5 KB) - added by vidrep 5 months ago.

Download all attachments as: .zip

Change History (23)

comment:1 Changed 3 years ago by pulkomandy

do you have a link to a sample file for testing?

comment:3 Changed 3 years ago by vidrep

While it would be "nice" to see this added, getting YouTube working with ffmpeg is probably a better investment of developer time.

comment:4 Changed 2 years ago by waddlesplash

Priority: normallow
Type: bugenhancement

comment:5 Changed 16 months ago by vidrep

This would be a nice enhancement for 64 bit Haiku. Tested with mplayer on 64 bit, which plays video perfectly, but without any audio.

https://launchpad.net/ffmpeg/+announcement/12062

https://trac.ffmpeg.org/wiki/Encode/H.265

Last edited 16 months ago by vidrep (previous) (diff)

Changed 5 months ago by cocobean

Attachment: tearsofsteel-haiku.jpeg added

Tears of Steel on Haiku hrev 52012

Changed 5 months ago by cocobean

Attachment: h265testing-haiku.jpeg added

H.265 test on Haiku hrev 52012

comment:6 Changed 5 months ago by cocobean

Resolved. Tested on hrev52012 x86_64. Grab several videos from links above. Tested Austrian Alps and Tears of Steel H.265 videos as well as a few others and playback through MediaPlayer up to 4K video resolution.

Last edited 5 months ago by cocobean (previous) (diff)

comment:7 Changed 5 months ago by waddlesplash

Resolution: fixed
Status: newclosed

comment:8 Changed 5 months ago by vidrep

Resolution: fixed
Status: closedreopened

This is not fixed! HEVC is a particular type of H265 that is supported in ffmpeg but not yet on Haiku.

Changed 5 months ago by vidrep

Attachment: screenshot1.png added

comment:9 Changed 5 months ago by waddlesplash

Um, HEVC *is* H265, they are the same thing. That is probably a MPEG-4 container, try renaming it to .mp4 and see if it plays.

comment:10 Changed 5 months ago by vidrep

If you rename to .mkv then it plays.

comment:11 Changed 5 months ago by vidrep

We need to set the .hevc file association for instances where that extension is used. We can't expect everybody to change file names all the time. Click and play.

Last edited 5 months ago by vidrep (previous) (diff)

comment:12 Changed 5 months ago by waddlesplash

If it's really a .mkv, then we should be detecting this via sniffer, not depending on filename.

comment:13 Changed 5 months ago by vidrep

I'm not sure if that's what PulkoMandy did to enable AVCHD files, which can use either M2TS, MTS or M2T.

comment:14 Changed 5 months ago by cocobean

Ah, you want *.hevc file association to a specific program. I read the ticket as we couldn't playback/decode HEVC videos in Haiku (at all).

@vidrep - I did this by select file -> right click on file -> Select 'Get Info' on file _> Select Default application {Mediaplayer, MPlayer, etc) Then when I click on file it works with the app/tool selected.

The 'better' global way is to go: Desktop->System->Preferences->FileTypes You'll see the FileTypea panel for selecting your application and a 'file recognition' window for the adding your file extensions. You can select 'MediaPlayer playlist' and then add '.hevc' and '.h265' extension to file recognition window. Go to top menu 'File' and Quit (it will save info when added).

comment:15 Changed 5 months ago by pulkomandy

File extensions should not be used anywhere, but MediaPlayer will reject files if there is no media/* type assigned to them, IIRC. We should just add the appropriate sniffing rules if we're missing some, then.

We don't use the filename ourselves, however we do forward it to ffmpeg as it helps in some corner cases (eg. detecting Amiga MOD files, which don't really have any useful header).

comment:16 Changed 5 months ago by mmlr

Indeed sniffer rules should be used instead of file extensions. In either case, HEVC is a video codec, not a container format. So HEVC data does not come as a standalone file but the bitstream is put in a specific container (Matroska, WebM, MP4) to hold additional metadata and other streams (i.e. audio, subtitles, timecodes, ...). An actual file then gets the extension from the container. So adding blank hevc or h265 extensions doesn't make much sense to me. For these initial samples there may be a variety of extensions used, but when HEVC use becomes more common this will probably go away. Afterall you don't usually see files with an h264 extension either.

comment:17 Changed 4 months ago by vidrep

Summary: Add support for HEVC/H.265 Decoding (enhancement)HEVC/H.265 file extensions not recognized

MediaPlayer does indeed play these files, but only after manually changing the file extension to one that is recognized. I have changed the ticket description to better reflect the real issue.

comment:18 Changed 4 months ago by vidrep

Type: enhancementbug

comment:19 Changed 4 months ago by cocobean

@vidrep - Tested on hrev52064 x86_64. Confirmed MediaPlayer works with HVEC/10-bit color video files w/FFmpeg 4.0.1. I tested it without any file extension and runs smoothly @1080p and @2160p with some minor stuttering/frame drops at UHD/4K (impressive). I renamed the file extensions to something obscure (*.new) and MediaPlayer still handled the H.265/HVEC files correctly.

I was using mplayer/mpv but now MediaPlayer seems to handle the files much better than before. Minor issues with 'out of memory' and audio issues on backend with certain files - but still plays.

Tested on hrev52073 x86 w/MediaPlayer - A mangled video appears and plays - there is a decoder error and video is scrambled. NOTE: H.265 can play some HVEC videos, but does not seem optimized for x86 platform (plays sound OK, but drops video frames heavily).

UPDATE: Test H.265 10-bit color video files now work with mpv 0.28.2-1 playback on hrev52084+ on x86_gcc2 and x86_64.

Haiku hrev52073 x86 w/MediaPlayer and HVEC 10-bit video (has issues)

MediaTrackVideoSupplier::_SwitchFormat() - fVideoTrack->DecodedFormat(): General system error - retrying with B_RGB32
[hevc @ 0x19203800] Could not find ref with POC 2
[hevc @ 0x19203800] Could not find ref with POC 0
[hevc @ 0x19203800] Could not find ref with POC 4
should skip -1 lines at bottom!

Haiku hrev52064 x86_64 w/MediaPlayer and HVEC 10-bit video (works)
MediaTrackVideoSupplier::_SwitchFormat() -  codec changed colorspace of decoded format (B_YCbCr422 -> B_RGB32)!
should skip -1 lines at bottom!


=== Below, this part happens on both Haiku x86 and x86_64 w/MediaPlayer and HVEC 10-bit video

VideoConsumer::CreateBuffers - ERROR CREATING VIDEO RING BUFFER (Index 0 Width 1920 Height 1080 Colorspace 8: Out of memory
VideoConsumer::Connected - COULDN'T CREATE BUFFERS
BMediaRoster::Connect: aborting after BBufferConsumer::Connected, status = 0x80000000
VideoProducer::Connect() - consumer error: Out of memory
BMediaRoster::Connect: aborted
Can't connect the video source to the video window... trying without overlays, error: Out of memory
running without audio node
Last edited 4 months ago by cocobean (previous) (diff)

comment:20 Changed 2 months ago by waddlesplash

Resolution: fixed
Status: reopenedclosed

Fixed in hrev52329.

Note: See TracTickets for help on using tickets.