[PATCH] add AIC and ProRes422 binary codec support
This patch adds support for the QuickTime binary codecs for AIC (Apple Intermediate Codec) and ProRes422, currently only on Mac though. It requires the use of "-demuxer mov" since the lavf mov demuxer does not fill in the ImageDescription. I've only tested this on Mac, and in fact AIC will only work on Mac since Apple doesn't even support AIC on any other platform. I think more work will be needed in the binary codecs loader before ProRes will work on Linux. I had to change vd_qtvideo.c to use the QT decompression sequence APIs (DecompressSequenceFrameS) instead of ImageCodecBandDecompress. ImageCodecBandDecompress fails for both these codecs and Apple says it is not intended to be called directly by applications. They recommend using the decompression session APIs (ICMDecompressionSessionDecodeFrame) or the older decompression sequence APIs (DecompressSequenceFrameS). I think changes will be needed in loader/qtx to support these QT decompression APIs on Linux. So this patch is not ready for primetime, but might be useful as a starting point. Andrew
On Fri, 31 Jul 2009 09:49:21 -0400, Andrew Wason wrote:
This patch adds support for the QuickTime binary codecs for AIC (Apple Intermediate Codec) and ProRes422, currently only on Mac though.
ppc or x86?
It requires the use of "-demuxer mov" since the lavf mov demuxer does not fill in the ImageDescription.
i would like to see this bug fixed since lavf is default now.
I've only tested this on Mac, and in fact AIC will only work on Mac since Apple doesn't even support AIC on any other platform. I think more work will be needed in the binary codecs loader before ProRes will work on Linux.
same with windows ?
-#if 0 - memset(&desc,0,sizeof(desc)); - while((prev=FindNextComponent(prev,&desc))){ - ComponentDescription desc2; - unsigned char* c1=&desc2.componentType; - unsigned char* c2=&desc2.componentSubType;
patch is kindof unreadable with you removing //comments and #if 0 code.
case IMGFMT_UYVY: - qt_imgfmt = kUYVY422PixelFormat; + qt_imgfmt = k2vuyPixelFormat; break;
whats this about? that pixfmt wasnt accepted by the codec? sorry for late response, i missed this mail. i know there are quite a few users who would love prores and icod support. thanks for working on it. -compn
On Thu, Aug 13, 2009 at 02:31:02PM -0400, compn wrote:
On Fri, 31 Jul 2009 09:49:21 -0400, Andrew Wason wrote:
It requires the use of "-demuxer mov" since the lavf mov demuxer does not fill in the ImageDescription.
i would like to see this bug fixed since lavf is default now.
Was this reported on FFmpeg bug tracker ? Bugs which are not reported tend to not be fixed... Aurel
On Thu, 13 Aug 2009 22:02:34 +0200, Aurelien Jacobs wrote:
On Thu, Aug 13, 2009 at 02:31:02PM -0400, compn wrote:
On Fri, 31 Jul 2009 09:49:21 -0400, Andrew Wason wrote:
It requires the use of "-demuxer mov" since the lavf mov demuxer does not fill in the ImageDescription.
i would like to see this bug fixed since lavf is default now.
Was this reported on FFmpeg bug tracker ? Bugs which are not reported tend to not be fixed...
here is roundup: https://roundup.ffmpeg.org/roundup/ffmpeg/issue1320 original mplayer report: http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2009-March/060838.html -compn
Sorry for the delayed response. On Thu, Aug 13, 2009 at 2:31 PM, compn<tempn@twmi.rr.com> wrote:
On Fri, 31 Jul 2009 09:49:21 -0400, Andrew Wason wrote:
This patch adds support for the QuickTime binary codecs for AIC (Apple Intermediate Codec) and ProRes422, currently only on Mac though.
ppc or x86?
I tested on x86, I suspect it would work on ppc too.
I've only tested this on Mac, and in fact AIC will only work on Mac since Apple doesn't even support AIC on any other platform. I think more work will be needed in the binary codecs loader before ProRes will work on Linux.
same with windows ?
I think so.
case IMGFMT_UYVY: - qt_imgfmt = kUYVY422PixelFormat; + qt_imgfmt = k2vuyPixelFormat; break;
whats this about? that pixfmt wasnt accepted by the codec?
DecompressSequenceFrameS was crashing with kUYVY422PixelFormat and this doc said the "equivalent microsoft fourcc" for k2vuyPixelFormat is UYVY - not sure what that means but it works. http://developer.apple.com/quicktime/icefloe/dispatch020.html Andrew
On Tue, 25 Aug 2009 10:21:42 -0400, Andrew Wason wrote:
Sorry for the delayed response.
On Thu, Aug 13, 2009 at 2:31 PM, compn<tempn@twmi.rr.com> wrote:
On Fri, 31 Jul 2009 09:49:21 -0400, Andrew Wason wrote:
This patch adds support for the QuickTime binary codecs for AIC (Apple Intermediate Codec) and ProRes422, currently only on Mac though.
ppc or x86?
I tested on x86, I suspect it would work on ppc too.
someone asked me about prores support. i think there is a lot of interest in this codec. if anyone wants to help, the best way is to: apply this patch locally clean it up (undo the #if 0 code removal, and the comment changes) make it a smaller patch, seperate AIC/prores changes (if possible?) test it with all qtcodecs on all platforms that use that code benchmark it to see if its faster/slower/buggy submit the patch back here. i wonder if its better to just create a qtvideo2 for those codecs which dont work with the current loader. that way we wont break anything. -compn
On Tue, Aug 25, 2009 at 12:11:20PM -0400, compn wrote:
On Tue, 25 Aug 2009 10:21:42 -0400, Andrew Wason wrote:
Sorry for the delayed response.
On Thu, Aug 13, 2009 at 2:31 PM, compn<tempn@twmi.rr.com> wrote:
On Fri, 31 Jul 2009 09:49:21 -0400, Andrew Wason wrote:
This patch adds support for the QuickTime binary codecs for AIC (Apple Intermediate Codec) and ProRes422, currently only on Mac though.
ppc or x86?
I tested on x86, I suspect it would work on ppc too.
someone asked me about prores support. i think there is a lot of interest in this codec.
if anyone wants to help, the best way is to: apply this patch locally clean it up (undo the #if 0 code removal, and the comment changes) make it a smaller patch, seperate AIC/prores changes (if possible?) test it with all qtcodecs on all platforms that use that code benchmark it to see if its faster/slower/buggy submit the patch back here.
Provide at least one sample file, better more, best a "regular" one and also some trivial ones (white only, black only, simple patterns, simple alternating, simple slowly moving patters) to ease development of a native FFmpeg decoder (of course, if there is or if you can somehow get a specification for the format even better - though it seems Apple is far more interested in ensuring vendor-lockin).
participants (4)
-
Andrew Wason -
Aurelien Jacobs -
compn -
Reimar Döffinger