Ticket #360 (closed defect: invalid)

Opened 6 years ago

Last modified 4 years ago

H.264 Decoding Should be Handled by the QuickTime Decoder in Most Cases

Reported by: joein3d Owned by:
Priority: normal Milestone:
Component: Perian-Main Version: 1.1
Severity: normal Keywords:
Cc:

Description

"Perian is a free, open source QuickTime component that adds native support for many popular video formats."

As I understand the above statement , the purpose of Perian is to enhance QuickTime by adding the ability to play a wider variety of formats. When it decodes H.264 content such as HD trailers and iTunes content that QuickTime already plays, it goes against the expectation of the end user.

Furthermore, it introduces problems that weren't present with the original QuickTime component. Two such issues are 1) A Performance Regression playing HD trailers on my G5 PowerMac? and 2) The attached crash

It seems that re-inventing the wheel in this case isn't optimal. The functionality already exists in the app and so far I haven't seen any positive effect of Perian handling H.264 decoding in the cases that QuickTime handles normally.

Attachments

crash.log Download (30.3 KB) - added by joein3d 6 years ago.
Crash Log

Change History

comment:1 Changed 6 years ago by joein3d

Other issues include the iMovie crash ( http://trac.perian.org/ticket/238) and the Keynote issue ( http://trac.perian.org/ticket/263). It just seems like a lot of duplicate work could be saved if these formats were just left to the default QuickTime component.

comment:2 Changed 6 years ago by joein3d

Two more issues relating to H.264 where removing Perian is a solution:

 http://trac.perian.org/ticket/234 - iMovie Crash

 http://trac.perian.org/ticket/320 - Export Quality

comment:3 in reply to: ↑ description Changed 6 years ago by gbooker

  • Milestone set to Needs Feedback From User

Replying to joein3d:

It seems that re-inventing the wheel in this case isn't optimal. The functionality already exists in the app and so far I haven't seen any positive effect of Perian handling H.264 decoding in the cases that QuickTime handles normally.

Try an mkv file with high profile H.264 using Apple's decoder and see what happens. It will crash, or if you are really lucky, you may get 1-2 frames per second. In this case, Perian's H.264 is vastly superior to QuickTime's. There is no easy way to determine if H.264 is high profile or not so Perian must handle all cases or none, but if you write one, we will certainly look at it. Believe me, if Apple's H.264 component were sufficient, we would have never put one in Perian.

Your references are not very compelling. You cite two confirmed fixed issues, one that is fixed as far as we can tell, and another which is a bug in QuickTime itself.

Lastly, your crash log has 0 useful information in it. It is completely missing the backtrace for the crashed thread though it has the others. Assuming the crashlog wasn't corrupted or otherwise modified, this appears to be an issue with Apple's crash reporter. What were you playing when you encountered this crash? Can you provide a reproducible sample?

comment:4 follow-up: ↓ 5 Changed 6 years ago by joein3d

If you could provide me an MKV file with H.264 high profile encoded video, I would gladly run that test. However, I wouldn't call success at a single case justification for failing at several of the others. I will take a look at the source for Matroska QT component to see if they do any sort of profile detection. However, in the meantime, would it be possible to at least include an option to turn off Perian's H.264 decoding? Or, alternatively, could you only provide H.264 decoding for MKV files? Perian does such a good job handling additional formats in QuickTime that it's a shame that it falls flat in a situation where it doesn't need to be.

I'm aware that the issues were fixed- but the real problem is that they cropped up in the first place as a result of Perian handling unnecessary cases. If it is something that QuickTime does as well or better without Perian, not only are you doing duplicate work, but to a user that never plays high profile MKV, you decrease the quality of the final product.

To provide more information about the original two issues I mentioned, performance on a Dual 2.0 GHz G5 playing a 720p trailer is about 30% slower with Perian than without. I could run more extensive tests on a wider variety of platforms, but this is what I'm seeing right now.

The crash occurs when streaming live H.264 video via QT Broadcaster over a network situation w/ heavy packet loss. I am able to handily reproduce this crash w/ Perian installed, but the issue doesn't exist when Perian is removed. I assume the lack of backtrace is a result of a lack of debug symbols in your component. If you could provide me a debug build I could get a more useful crash log to you. I could also create this build myself, but the former is probably quicker.

comment:5 in reply to: ↑ 4 ; follow-up: ↓ 6 Changed 6 years ago by gbooker

Replying to joein3d:

If you could provide me an MKV file with H.264 high profile encoded video, I would gladly run that test.

They are easy to find. The 720p MKV files are quite commonly encoded in high profile.

However, I wouldn't call success at a single case justification for failing at several of the others. I will take a look at the source for Matroska QT component to see if they do any sort of profile detection.

It doesn't. Perian supersedes the Matroska QT component as its developer is here.

However, in the meantime, would it be possible to at least include an option to turn off Perian's H.264 decoding? Or, alternatively, could you only provide H.264 decoding for MKV files?

Can't do that as QT doesn't call any code in components when doing it's component search. It only looks at the resource data within the component to find the component to playback a codec.

If it is something that QuickTime does as well or better without Perian, not only are you doing duplicate work, but to a user that never plays high profile MKV, you decrease the quality of the final product.

High profile isn't specific to MKV; it is part of the H.264 standard, a part which Apple chose to not implement properly. Again, QuickTime does not call any code to see if a component can play such a codec.

I assume the lack of backtrace is a result of a lack of debug symbols in your component.

Uh, no! If debug symbols were lacking, which they clearly aren't given all the other crash logs here, then it would print out raw addresses. The crash reporter just gave you a useless crash log, maybe because it was incapable of giving you a useful one.

comment:6 in reply to: ↑ 5 ; follow-up: ↓ 7 Changed 6 years ago by joein3d

Replying to gbooker:

Replying to joein3d:

If you could provide me an MKV file with H.264 high profile encoded video, I would gladly run that test.

They are easy to find. The 720p MKV files are quite commonly encoded in high profile.

If they are easy to find legally, I must be daft. I can't seem to find anything other than torrents of movies and anime. Could you point me in the right direction?

If it is something that QuickTime does as well or better without Perian, not only are you doing duplicate work, but to a user that never plays high profile MKV, you decrease the quality of the final product.

High profile isn't specific to MKV; it is part of the H.264 standard, a part which Apple chose to not implement properly. Again, QuickTime does not call any code to see if a component can play such a codec.

With that statement, I was talking about H.264 content that wasn't encoded in High Profile. The duplicate work is in dealing with bugs cropping up around things like HD trailer playback and other apps that utilize the H.264 decoder in some way but never deal with High Profile content.

I assume the lack of backtrace is a result of a lack of debug symbols in your component.

Uh, no! If debug symbols were lacking, which they clearly aren't given all the other crash logs here, then it would print out raw addresses. The crash reporter just gave you a useless crash log, maybe because it was incapable of giving you a useful one.

My apologies, I was mistaken. I will attempt to get a more useful crash log from this issue.

comment:7 in reply to: ↑ 6 ; follow-up: ↓ 8 Changed 6 years ago by gbooker

  • Status changed from new to closed
  • Resolution set to invalid

Replying to joein3d:

If they are easy to find legally, I must be daft. I can't seem to find anything other than torrents of movies and anime. Could you point me in the right direction?

Several of these are legal, not to mention that the fact that Handbrake can make them.

With that statement, I was talking about H.264 content that wasn't encoded in High Profile. The duplicate work is in dealing with bugs cropping up around things like HD trailer playback and other apps that utilize the H.264 decoder in some way but never deal with High Profile content.

Didn't I say:

There is no easy way to determine if H.264 is high profile or not so Perian must handle all cases or none

So either no one gets high profile playback, which is common in MKV files, or Perian must handle it all. Since Perian supports the MKV file format, it would be close to useless without high profile as well.

My apologies, I was mistaken. I will attempt to get a more useful crash log from this issue.

Never did I say it was your fault, even though you did assume we were to blame.

This ticket has become a waste of time which we donate to the project. I am going to ignore this, and I encourage all others to do the same, until something useful is reported. Don't reply unless you have something useful to say.

comment:8 in reply to: ↑ 7 Changed 6 years ago by joein3d

Replying to gbooker:

Never did I say it was your fault, even though you did assume we were to blame.

Right. You never said it, but I admitted it. I was incorrect to assume that Perian was to blame for the lack of debug information. That's why I apologized.

Changed 6 years ago by joein3d

Crash Log

comment:9 Changed 6 years ago by gbooker

Crashed thread is 11, with no calltrace.

comment:10 Changed 6 years ago by gbooker

  • Milestone Needs Feedback From User deleted
Note: See TracTickets for help on using tickets.