<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Jean-Yves,<div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 03 Nov 2015, at 07:59, Jean-Yves Avenard <<a href="mailto:jyavenard@gmail.com" class="">jyavenard@gmail.com</a>> wrote:</div><div class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">Le lundi 2 novembre 2015, Info || Non-Lethal Applications <</span><a href="mailto:info@non-lethal-applications.com" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">info@non-lethal-applications.com</a><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">> a écrit :</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote class="gmail_quote" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><div style="word-wrap: break-word;" class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On 02 Nov 2015, at 11:22, Jean-Yves Avenard <<a target="_blank" class="">jyavenard@gmail.com</a>> wrote:</div><br class=""><div class=""><br class=""><br class="">Le vendredi 23 octobre 2015, Isaksson Jörgen <<a target="_blank" class="">jogga@bitfield.se</a>> a écrit :<br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;">Hi all,<br class=""><br class="">I’m new to this list so forgive me if this has been answered before.<br class=""><br class="">With version 2.8 of the libraries I saw the addition of Video Toolbox hardware decoding support (on Mac OS X that is).<br class=""><br class="">But I can’t find much documentation on how to use it. There are some clues in the header files on how to set it up, but there’s no docs on how to do the actual decoding.<br class=""><br class="">I have compiled version 2.8.1 of the libraries and I can confirm that the Video Toolbox hwaccels are there:<br class=""><br class="">Enabled hwaccels:<br class="">h263_videotoolbox       mpeg1_videotoolbox      mpeg4_videotoolbox<br class="">h264_videotoolbox       mpeg2_videotoolbox<br class=""><br class="">In my player app I have setup an AVVideotoolboxContext like described in the headers.<br class=""><br class="">if (self.codecContext->codec_id == AV_CODEC_ID_H264) {<br class="">       <span class="Apple-converted-space"> </span>_videoToolboxContext = av_videotoolbox_alloc_context();<br class="">       <span class="Apple-converted-space"> </span>int result = av_videotoolbox_default_init2(self.codecContext, self.videoToolboxContext);<br class="">       <span class="Apple-converted-space"> </span>if (result != 0) {<br class="">           <span class="Apple-converted-space"> </span>NSLog(@"Failed to init video toolbox");<br class="">           <span class="Apple-converted-space"> </span>_videoToolboxContext = NULL;<br class="">       <span class="Apple-converted-space"> </span>}<br class=""> }<br class=""><br class="">_codec = avcodec_find_decoder(self.codecContext->codec_id);<br class=""><br class="">Everything seems to work fine and the _videoToolboxContext is properly allocated.<br class=""><br class="">But how do I go about actually decoding using it?<br class=""><br class="">Anyone with any experience from this?<br class=""><br class=""></blockquote><div class="">VideoToolbox is for decoding only, just like VDA </div><div class=""><br class=""></div><div class="">From 10.9; to get HW decoding the only thing that needs to be set is a constant. And this is just a hint. Vat won't use HW for vertical resolution < 300 typically.</div><div class=""><br class=""></div><div class="">Note that ffmpeg doesn't enable async decoding, so the performance are poor, nowhere near as fast as what it could be.</div></div></blockquote><br class=""></div><div class="">And what is the constant that needs to be set and where?</div></div></blockquote><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class=""></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">kVTVideoDecoderSpecification_EnableHardwareAcceleratedVideoDecoder</div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class=""></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">Looking at the 2.8 ffmpeg source code, this constant is set. The decoder will use HW acceleration if available...</div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">Note that ffmpeg code will crash if used on OSX < 10.9 (where that constant was introduced)</div></div></blockquote><div><br class=""></div>Ok, thanks! Good to know!</div><div><br class=""><blockquote type="cite" class=""><div class=""><blockquote class="gmail_quote" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><div style="word-wrap: break-word;" class=""><div class="">Do you know if it’s still worth using it?</div><div class="">Will the decoding be faster than FFmpeg’s standard software decoding?</div><div class=""><br class=""></div></div></blockquote><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class=""></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">Faster I don't know. Using less CPU certainly.</div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class=""></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">However, in my experience, the bottleneck will be in not using async decode.</div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class=""></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">There's a good 100% performance increase with that mode set !</div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class=""></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">Too bad it isn't set</div></div></blockquote><div><br class=""></div><div>I just grabbed the latest 1.8.1 source code and I don’t see any flag to toggle async decoding.</div><div>I only see that the function <span style="font-family: Menlo; font-size: 11px;" class="">videotoolbox_session_decode_frame </span>waits for the asynchronously decoded frames using<span style="font-family: Menlo; font-size: 11px;" class=""> </span><span style="font-family: Menlo; font-size: 11px;" class="">VTDecompressionSessionWaitForAsynchronousFrames.</span></div><div>Is the waiting part what you mean?</div><div><br class=""></div><div>Do you have any insight why this is not used for Pro Res decoding?</div><div><br class=""></div><div>Thanks!</div></div></div></body></html>