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 zcmZ3|#ki!4aY71fqA>$Q;>65+P6tB<1~A_E(43KxWwIpGX2unh&ob?1)ScYPoF8Z? z!@$77z`!8Hz{L>C%)nqN!@$4-<@Yi(Fxbj4FjztPXPFro%4HZBM4)^w76yhtDiHlj z3|tI~EDQ|YlRa7F6TcvdwzDuWY|&x>1CT9?SQr?VAn|vzFfbfJ;@@XsV7P+B|HZ<< z5Tgy&4tAv|D+9xX$tPLl1v?ZN7+j!kv1Mgo_%it?i$3Fo$(pS4^*pK!3_i>df30O@ zVAz9X;!#!xhBZk1+pG)>XOQ@RSQ!{3kZcrTV_+yi;_I+6FhpoT{0;JvH5&s%f(8S_ z5~y3k*%;~>STq?JWS|0tYzzzvnhXp%P<|^L14EA{1A_vTzl4o}VT~pt;J30dFl<1Q zKg-6za6yxS;Q&V{&cJX6 zNj?RQU&qeC@BvAFDjI(kI|GA=4#ENZLeK;*urn~I7%(t6KwbEloq-|6fPp~=%KydA zz%appfx!aGm*QYxIAMSYVnYrFh6|e|*|h~3Jtw%3BoY)fb{csafrZaM z|NlMXoq_lB2#W-To%)^zV9_Jb|9|KH|Nnc^0<+uy z?+)*zA=dAd@{|JW?3}z`N>p&31Ovkf2?mBe|NsB*kYHdqJNc$XK#@qMR@zmGXDgTF_ z2OUrU|3~JxO#W!#Eji=a|N5028ygg!|F7S$VMBw#^Z)hh_%}A_Yz{Td=h=M1b^@bd zf)S*=Wl@EcjbAor+RtZZbeYWQEYJGGfPvx1WL;-vR&bF#In-I16{I0ybFK4oMgY}@ BiG%C%)nqO!@$4-<@Yi(Fj&ekFjztPXPFroie(rWM4)^w76yhNDiHlj z3|tI~EDQ|olRa7F6F(q{wzDuWY|vr=1CT9?SQr=s1J%=g-gAX&rUu#(z z7Rt5$UBpXH87#MPp_&RJ13?Uj2e}jBv&BnkGqrt$i z1nQP>Himiz22BPA8K^)Z8v}!kCIdqbl;6t6z|f(|z@Px-FJWU~SfPms_^oUV3~P|& z&$2NvoY7=pH~>}ugpGlrM+*@VKiC);8nhW0RG{*L?DePu8te=VOOO;;qVYZ085m9= z$)}+4>)06>-XO_OMdPnxXJ8P}K{#Mv2%5kJb_NCo0|o{Ms0$ynGcY6=Ffiyq`M=m1 z7oo=3PUX?CYE}Rekf1mcw#rs)= zL4wClXHOTfD4T-+hyUjPzo)&+ebAhHG@U`!`3r+`bL!z-Ew}b`=PwP+2Y&Pf98NV* zzVU-W;J}Xn-{)_(G8?S+fxTDx8u2S#;tsYNpeaS8ME{Me~);_puz6OeoNI; z4J^;5@c+BeJIM#e8FEVcZZq<4<}*%WQevLUFpQ3 zJ42ru7l_pco@@#bhyVY+?rq=$EjNxChHi|i|G$5moG2~o{oyT09rrCYPc{XJBmaM& z^j5|DLB#*>O>cD`FwW-QtOyQ%2e*T6|G(dRdt#>?n1AC3gMot^_s0LQX{QrJq z@ydO=ot^4L|?C=5Ww`x$fux*A?yu+!zkbf6D)%=RwcY|NoKs9h1Kr zcuUTC_P>55$HoSg=l|be3oRV!*)gWwNfbGAp=5o*e3|%nH&Fv$@uJIU@kjS&2jd diff --git a/libs/x86/libnv_avc_dec.so b/libs/x86/libnv_avc_dec.so index 32c2a0c22becb1892f9661e27f4101feb5b62551..27dc7c4b1836eac42371c752de0ea42421520d8d 100644 GIT binary patch delta 1114 zcmaFh^}uUF3TuWm14G8dOn=TdQVa}Wyz$^^CPwwiz0B5(4wFwZ>pOiAWnj=^U|o+dKzVU2pU1$yWq>eKs*N zFm$r0yqN#{|NrjYH~#Am_M+^gl14Cy(MR$mbOJ_jM@dg)W z1_lEL28QDeGRzDNOkkD*GXn$TFCcBsuvFM3RZWg@JLhgs=+N z|6gEt9;?Wm>?W*J4+@UsE-E5&3=9n24L#7H=oC@u^ig4XvHREm|J{@Cz|E**U|=x( z)|;YY(D@-cF8*+D8AETg^9yj0aX^C-DGcxY{Qn>p2@tTruA+={{MgJ`~Uy{3B4t1486_$FHlkllGkiNTAM$B+{~i# zg73%w|D84}FVsL5ecJ(Y7Qg?8-V~Lb=*|yu@v(=Y=9S_!@6GrB|9dAN6je-$`w8;O zKS>6L-V~J=-7YFRp!C@7qM`wc)jz+%K`Ie_xECCp!7uc{>d!&c|9GJd33HBUsGTV) zM>=CvbUI5^3|=sUl`fv_B4*8ac5;K5lR(`MkY#c(&DN7IiD|Ptg9RUNW)WY&$XGLZ zsf0Y!pRbdTNystEOnxdMFY55^|9>8k9~l@JG#DUx&0?~oq&DN3$*z*}jBh5VN~*J# z{P_Q0eey&}aiOVV-&|2O>m|6gUZqO>{l<_x(z pEQ|*xyDH1GP7r5cm@qk0S($Z;1OvmA$rF{8S;1w;=AFvR83DEq`OE+S delta 1078 zcmaFh^}uUF3TuQk14G2bOn=ThQVa}Wyz$^^CPwkez0B5(29r-R>pMLVWnj=^U|l@`CZt|Nk$~{rmsFx48#ZU2pU3$yWq>?H4gJ zFm$r0yqN#{|NrjYH~#Am_M+5@{2SaB-MR$mbOQS~&1A_xY zXF$#I1{aVcC$ANfNC;730T~hb`~UyWW4+C9pa1{g`i;NiF#`j`ix7~xlOI6LW#Vu7 z0TQ$a32uG?5oF_U0jrez`~N@47$cD6lB2dcKD-tb#*ii$z!hv>NY!@VVH486_9FTg>;0SzLguzBRa z+ZY%a7O!oIOqLZjtq=S0|Nl$h|Ns9_fOxI`1xm~# zdCdo;wfO_c(JU%2-^&|rY%A&<$LlG==S zCWlJOGya)eDyh!e^5g%1@yQD%#f4fJx%dQ}`FIXH@^Kt<