{"id":170,"date":"2010-12-02T01:15:07","date_gmt":"2010-12-02T00:15:07","guid":{"rendered":"http:\/\/mod16.org\/hurfdurf\/?p=170"},"modified":"2010-12-02T01:17:53","modified_gmt":"2010-12-02T00:17:53","slug":"a-note-on-hardware-accelerated-video-decoding","status":"publish","type":"post","link":"https:\/\/mod16.org\/hurfdurf\/?p=170","title":{"rendered":"A note on hardware accelerated video decoding"},"content":{"rendered":"<p>Since I haven&#8217;t seen this mentioned anywhere else really (it&#8217;s very well hidden in NVidia&#8217;s documentation), I thought I should mention it here in the interest of helping people fixing odd playback problems (read: it&#8217;s part of my evil plan to make people stop using hardware acceleration).<\/p>\n<p>Anyway, getting to the point, certain NVidia GPU&#8217;s have a PureVideo decoding chip that does not support decoding H264 videos of certain widths. More specifically, the broken width ranges are 769-784, 849-864, 929-944, 1009-1024, 1793-1808, 1873-1888, 1953-1968 and 2033-2048 pixels. Any H264 video with a width in these ranges will fail to decode using CUDA or VDPAU or DXVA or whatever you please. This does not, of course, affect software decoding in any way whatsoever.<\/p>\n<p>Particularly interesting and commonly used resolutions that are affected by this are, for example, 852&#215;480, 864&#215;480 and 1024&#215;576.<\/p>\n<h3>Affected GPU&#8217;s<\/h3>\n<p>A list of the affected GPU&#8217;s follow.<\/p>\n<ul>\n<li>GeForce 9300 GE<\/li>\n<li>GeForce 9300 GS<\/li>\n<li>GeForce 8400 GS<\/li>\n<li>GeForce 9300M GS<\/li>\n<li>GeForce G100<\/li>\n<li>GeForce 9200M GS<\/li>\n<li>GeForce 9300M GS<\/li>\n<li>GeForce G 105M<\/li>\n<li>GeForce G 103M<\/li>\n<li>GeForce 9100M G<\/li>\n<li>GeForce 8200M G<\/li>\n<li>GeForce 9100<\/li>\n<li>GeForce 8300<\/li>\n<li>GeForce 8200<\/li>\n<li>nForce 730a<\/li>\n<li>GeForce 9200<\/li>\n<li>nForce 980a\/780a SLI<\/li>\n<li>nForce 750a SLI<\/li>\n<li>GeForce 9400M G<\/li>\n<li>GeForce 9400M<\/li>\n<li>GeForce 9300 \/ nForce 730i<\/li>\n<li>GeForce G102M<\/li>\n<li>GeForce G102M<\/li>\n<li>ION<\/li>\n<\/ul>\n<p>Fuck GPU decoding; GPU decoding sucks; GPU decoding is dying; GPU decoding is dead to me; GPU decoding hit WTC.<\/p>\n<h3>Source<\/h3>\n<p>This actually <strong>is<\/strong> mentioned in NVidia&#8217;s official documentation, but it&#8217;s pretty well hidden. First, go to <a href=\"http:\/\/us.download.nvidia.com\/XFree86\/Linux-x86_64\/190.53\/README\/appendix-a.html\">Appendix A<\/a> in the VDPAU documentation and look at the GPU&#8217;s with an &#8220;1&#8221; in the &#8220;VDPAU features&#8221; column. Then go to <a href=\"http:\/\/us.download.nvidia.com\/XFree86\/Linux-x86_64\/190.53\/README\/appendix-h.html\">Appendix H<\/a> in the same documentation, and in the &#8220;Implementation Limits&#8221; section, go to the &#8220;VdpDecoder&#8221; subsection, and at the very bottom you&#8217;ll find a small note saying:<\/p>\n<blockquote><p>VDPAU Features Note 1<br \/>\nGPUs with this note may not support H.264 streams with the following widths: 49, 54, 59, 64, 113, 118, 123, 128 macroblocks (769-784, 849-864, 929-944, 1009-1024, 1793-1808, 1873-1888, 1953-1968, 2033-2048 pixels).<\/p><\/blockquote>\n<p>Thanks Lord for pointing this out to me.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Since I haven&#8217;t seen this mentioned anywhere else really (it&#8217;s very well hidden in NVidia&#8217;s documentation), I thought I should mention it here in the interest of helping people fixing odd playback problems (read: it&#8217;s part of my evil plan to make people stop using hardware acceleration). Anyway, getting to the point, certain NVidia GPU&#8217;s [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-170","post","type-post","status-publish","format-standard","hentry","category-encoding"],"_links":{"self":[{"href":"https:\/\/mod16.org\/hurfdurf\/index.php?rest_route=\/wp\/v2\/posts\/170","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mod16.org\/hurfdurf\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mod16.org\/hurfdurf\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mod16.org\/hurfdurf\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mod16.org\/hurfdurf\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=170"}],"version-history":[{"count":4,"href":"https:\/\/mod16.org\/hurfdurf\/index.php?rest_route=\/wp\/v2\/posts\/170\/revisions"}],"predecessor-version":[{"id":173,"href":"https:\/\/mod16.org\/hurfdurf\/index.php?rest_route=\/wp\/v2\/posts\/170\/revisions\/173"}],"wp:attachment":[{"href":"https:\/\/mod16.org\/hurfdurf\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=170"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mod16.org\/hurfdurf\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=170"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mod16.org\/hurfdurf\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=170"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}