{"id":1606,"date":"2009-06-16T21:49:18","date_gmt":"2009-06-17T04:49:18","guid":{"rendered":"http:\/\/multimedia.cx\/eggs\/?p=1606"},"modified":"2009-06-16T21:49:18","modified_gmt":"2009-06-17T04:49:18","slug":"perceptual-video-testing","status":"publish","type":"post","link":"https:\/\/multimedia.cx\/eggs\/perceptual-video-testing\/","title":{"rendered":"Perceptual Video Testing"},"content":{"rendered":"<p>While I have thought a lot about the problem of testing perceptual audio decoders in <a href=\"http:\/\/ffmpeg.org\/\">FFmpeg<\/a> via <a href=\"http:\/\/fate.multimedia.cx\/\">FATE<\/a>, I have put little thought into testing perceptual video decoders. I surmise that <a href=\"http:\/\/multimedia.cx\/eggs\/science-into-engineering\/\">my 1-off testing method<\/a> for perceptual audio decoders is probably not tractable for video decoders. I suspect that, while rounding errors also cause off-by-1 errors in video decoders, compounded errors during multiple frames could stretch the threshold. There&#8217;s also the minor matter that it would require a much larger amount of space to store raw video data vs. the audio data required for the perceptual audio tests.<\/p>\n<p>Testing video decoders isn&#8217;t such a big deal, though. The FFmpeg devs have had this problem solved via the &#8216;make test&#8217; regression suite for a long time. There are a few flags to tack onto a command line which will invoke a bit exact inverse discrete cosine transform (IDCT). The trade-off is that optimized IDCT code paths are not exercised.<\/p>\n<p>I&#8217;m thinking of a 2-part solution:<\/p>\n<ol>\n<li>As a first pass, enter video decoding tests that leverage the bit exact IDCT.<\/li>\n<li>As a second pass, craft special test cases that decode one frame of video and leverage the default, optimized IDCT. Test the result using the 1-off method.<\/li>\n<\/ol>\n<p><strong>See Also:<\/strong><\/p>\n<ul>\n<li><a href=\"http:\/\/multimedia.cx\/eggs\/ffmpeg-perceptual-audio-test-plan\/\">Perceptual Audio Test Plan<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>I need to consider how I&#8217;m going to test perceptual video decoders<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[101],"tags":[],"class_list":["post-1606","post","type-post","status-publish","format-standard","hentry","category-fate-server"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/1606","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/comments?post=1606"}],"version-history":[{"count":4,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/1606\/revisions"}],"predecessor-version":[{"id":1610,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/1606\/revisions\/1610"}],"wp:attachment":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/media?parent=1606"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/categories?post=1606"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/tags?post=1606"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}