From 54839e672d1c5870960c7bb277c77feb8f665ecc Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Wed, 20 Nov 2013 03:07:52 -0500 Subject: [PATCH] Fix multithreaded decoding to significantly improve Tegra 3 decoding performance. It's not as smooth as Tegra 4 CPU decoding or Snapdragon hardware decoding, but it's much better than it was before. --- jni/nv_avc_dec/nv_avc_dec.c | 10 +++++++--- libs/armeabi-v7a/libnv_avc_dec.so | Bin 17700 -> 17700 bytes libs/x86/libnv_avc_dec.so | Bin 9568 -> 9568 bytes 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/jni/nv_avc_dec/nv_avc_dec.c b/jni/nv_avc_dec/nv_avc_dec.c index 6e083620..f66c5927 100644 --- a/jni/nv_avc_dec/nv_avc_dec.c +++ b/jni/nv_avc_dec/nv_avc_dec.c @@ -41,12 +41,16 @@ int nv_avc_init(int width, int height) { return -1; } - // We're a latency-sensitive application - decoder_ctx->flags |= CODEC_FLAG_LOW_DELAY; - // Show frames even before a reference frame decoder_ctx->flags2 |= CODEC_FLAG2_SHOW_ALL; + // Skip the loop filter for performance reasons + decoder_ctx->skip_loop_filter = AVDISCARD_ALL; + + // Run 2 threads for decoding + decoder_ctx->thread_count = 2; + decoder_ctx->thread_type = FF_THREAD_FRAME; + decoder_ctx->width = width; decoder_ctx->height = height; decoder_ctx->pix_fmt = PIX_FMT_YUV420P; diff --git a/libs/armeabi-v7a/libnv_avc_dec.so b/libs/armeabi-v7a/libnv_avc_dec.so index 8096b1fedc233e1a8049e34c7ea0822432c13a4f..75fa000199f3f2275af1f19a7b97177c6e4fd92b 100644 GIT binary patch delta 1469 zcmZA1e`s4p902gUaPUcY&$EaJ)(t)1BqLmou)h$!hS`%L4{QdinuBmscjvS5Fz-oIXS<5d85z%aoqcS z@4olGckg(~(>Qq=$46AdUWA6Hk47qe9)!fU@LLJ++kX9oHVE`(cKP&dZFH} zeO-jH%d!=3fahiY8GKXbdtjaHjkOgBy(F^>9CU7<+hgDmI4RXKRDq(1X+Q|hN-W@I zm|z9JAo&z{3T%~}1kZzEr{erC!717JGI#}?k;Z=q$D!c+AEE?42?g4vajiP~|A14C z(41_-!5uyXz9}0Y+2J?91=)CFhcAF@UE2j*9oP|A0o&bh6{QN-z$0MD5qEqS90#{c zHo%=+0^h%y9(Y*c_39=q=18~Bi`&SU?jK`FkI*PIGqeNHnr|1LP_uo#Z>9RkyLwBM z3k;N$v856mb-IV^IXvcn#b24F!h8Adz(&v=I+XTv-D0%D`ecE&QQ`S~B)jhmhcNLf@aLN_VAeq z6`sl?r*1EoGXjZRPlAW46n^Evzb436=q8oJaCpWmT>YJAPNFG7E!C&Qx5+4bteRCZ#WQn^o( zzuW=+>;{c~qFIPpH)%ALO2ypJe^$K^bMb?o$ZmeABaXG9*7EyNc#E~Bu;^#^O$ZMbf0c3oX4BC*a=$j*$}s+HG!tZDYH`rBAy6q%r;5IzoUNRRWoyv#LwPL654#-A)UD z9spLs3fQ6sXh&;gA4ji8KP7t>{W`i*_6khQ*B9&USYL}Cr2&m~drlD@#b~?kFK_sCeRa^rXT+p_2;#hptqtSXlzFN8uK9Pvg?QZ9w;-C*)pwOJEql0f2iYHSiiH zSkQZ9zk@!4w#lAAPonWnrTj0^pDX5P(KpcvdH#2F6dQi@A@b-5Hdrsu8+5q7GSH~Q z?i2~@m$?I-RLl=7^IPb@6!WoV{tUgcWvPM7J<9@fXd4IMl{>tH?nh&d^u`a-QM5<4 z3IEA!=tsY%3vX@;MqRUkY@*LsyGc9USN*TK&j_#shY1IV!?}=qR>yaBz8mkN?;EWz zcLaO#>PRw=i_h=@{)K)1{r=Jv6F${-A zw+MA3JFgBk@uRzZixG7qAKiR)Cs%hn4=WS-&2A>{rv}sN;Wx7G;GIx)zip;1&?Y_W zR+@>gX1QQG)6ggcc)Jog$<*#68zhsg# zHIi`yIWJ!}&BPZo+#nNg(<^2(d5QjPHkW^!@$ioqx*dUU+Njpz(oSAx;vC&zSwpJm zR!c3((*u?4n^AFx05UgyFTUiWTF@Q^rrw;~r!Mej1E^bz_u7c_oyj}2eY zPekYo~1YOI80rxAiG6Q2Pt z2kwvJ5bz7&yeL)_9Mb*Um6ny;Z+sLYq_AbkXl@pFd}BmcN00+h3_2&or||_Lbam)o z9!UIEl3snCqE2DP#h*g>?!FO1^aZq7d+%lBef6xoXLl23AzEz*kXx(m40+v{rWkS| z?`oVZ<|!K|$}c55TNI|%L%ACLv@uFOh7r(WyoTN$70>N?a-g>?0hj1RPkelK4(JkW5k&RBtEdx9gp%(04Ec!Pt{ z&%D#IpN{ZxM+Uoyj(ves!#@5FB0fuBz#~^Qw#))mnK$tqUzxhOdnXc~_JY%|d-5>q zc}OjJLYAynCQH?@oEcu*fV47Z@~h4)%iIhfb7s=j z{Jk?PwLBt3g4_|GwYcQFww1eF1@tMea%ItJe$160<3X2vKHy4EzChz`iIuj5V1+Gi ztiq;*-2OYRBD(F}7a=C`w6d>45WHz_!~k#`Vm7b`u>`SXMu--P5xt1apOdl0>Tk=O iP-uWxM&2t zzMlqN2>cZlqcV(IEL;~TqNskDj0!rU!9ZPB+SmIXR~gjc@Sf-0^E~h6eCI@KqqTv~ z!Na%f~VhQmz{ho~p2!NJ(Y5h&)c(P!&x_XdOaGk5W;65<+Pvgg~X>(}0Tr z2NE~}I0QH+fjJJLm?>Dwb*w18@`=(2$1j7wLy`{s&bIjrZScs#N@EI!k;<_^*pe5PGd`WcCSEcjLv1B<*2Ia-%GM!gp+800$ zHX9Yi)NjQCB5MqMss_@~+Gy`_;xrUs6>%Ff`yPE`?qdmVcOMMj$rp*SmbUh=)SZJQ zVG~qgdr7Ql$!?~;!dm{YZ$V?g$N%Erg93{Sy$zztK}i^f87JSYmxPz>=D8$TK{pwZ zgxxIO7vs|1TxQs~zsV`vpmk4pgwz=`u$~+>@_2#t8~5Q6GH$f-*TB*j>KXErk5I+0 z@`bw9qLG((%>k-b9?p4^nZCKN2@(@~ffHC9tq)2qdGbp}t7B3j#+rtO+5w5%d3g&f z6dz`7>FQ%J`iT}X*4BP7obWsRU%&Y;uqyH*ef6P};Nb~t;Z%cO_B;3jcFrK?u}T^^ zZjiUMge7I2PI-sIAGa#}Ik^lV5Y#P+nw|VZu@yYJ`6Ah%P=mx}D#Pzcz*LoX78>`2 z3xA3CkoTti6sMA$4jRoDG43ZfEmQ!aRHgNWTiL6Db=tU;g<&&dxvVsT5CQY zBaPN9JWqP8xyfE|F_TMHv)+qSwP`!GnsB97JzA;dBGths)d+twuFwxtD+*~d71om6LMCA-ZCxk*=ccCy!k Rke3X=o$_4>-pL-qKLIX(^Va|X