Mercurial > libavcodec.hg
comparison rectangle.h @ 11276:dd948aea1c20 libavcodec
Extend fill_rectangle() support for 16bit
| author | michael |
|---|---|
| date | Wed, 24 Feb 2010 20:37:58 +0000 |
| parents | e9d9d946f213 |
| children | bd5ea8e6f1d3 |
comparison
equal
deleted
inserted
replaced
| 11275:63d329cd8d80 | 11276:dd948aea1c20 |
|---|---|
| 56 *(uint16_t*)(p + 1*stride)= v; | 56 *(uint16_t*)(p + 1*stride)= v; |
| 57 if(h==2) return; | 57 if(h==2) return; |
| 58 *(uint16_t*)(p + 2*stride)= v; | 58 *(uint16_t*)(p + 2*stride)= v; |
| 59 *(uint16_t*)(p + 3*stride)= v; | 59 *(uint16_t*)(p + 3*stride)= v; |
| 60 }else if(w==4){ | 60 }else if(w==4){ |
| 61 const uint32_t v= size==4 ? val : val*0x01010101; | 61 const uint32_t v= size==4 ? val : size==2 ? val*0x00010001 : val*0x01010101; |
| 62 *(uint32_t*)(p + 0*stride)= v; | 62 *(uint32_t*)(p + 0*stride)= v; |
| 63 if(h==1) return; | 63 if(h==1) return; |
| 64 *(uint32_t*)(p + 1*stride)= v; | 64 *(uint32_t*)(p + 1*stride)= v; |
| 65 if(h==2) return; | 65 if(h==2) return; |
| 66 *(uint32_t*)(p + 2*stride)= v; | 66 *(uint32_t*)(p + 2*stride)= v; |
| 67 *(uint32_t*)(p + 3*stride)= v; | 67 *(uint32_t*)(p + 3*stride)= v; |
| 68 }else if(w==8){ | 68 }else if(w==8){ |
| 69 //gcc can't optimize 64bit math on x86_32 | 69 //gcc can't optimize 64bit math on x86_32 |
| 70 #if HAVE_FAST_64BIT | 70 #if HAVE_FAST_64BIT |
| 71 const uint64_t v= val*0x0100000001ULL; | 71 const uint64_t v= size==2 ? val*0x0001000100010001ULL : val*0x0100000001ULL; |
| 72 *(uint64_t*)(p + 0*stride)= v; | 72 *(uint64_t*)(p + 0*stride)= v; |
| 73 if(h==1) return; | 73 if(h==1) return; |
| 74 *(uint64_t*)(p + 1*stride)= v; | 74 *(uint64_t*)(p + 1*stride)= v; |
| 75 if(h==2) return; | 75 if(h==2) return; |
| 76 *(uint64_t*)(p + 2*stride)= v; | 76 *(uint64_t*)(p + 2*stride)= v; |
| 85 *(uint64_t*)(p + 0+2*stride)= v; | 85 *(uint64_t*)(p + 0+2*stride)= v; |
| 86 *(uint64_t*)(p + 8+2*stride)= v; | 86 *(uint64_t*)(p + 8+2*stride)= v; |
| 87 *(uint64_t*)(p + 0+3*stride)= v; | 87 *(uint64_t*)(p + 0+3*stride)= v; |
| 88 *(uint64_t*)(p + 8+3*stride)= v; | 88 *(uint64_t*)(p + 8+3*stride)= v; |
| 89 #else | 89 #else |
| 90 *(uint32_t*)(p + 0+0*stride)= val; | 90 const uint32_t v= size==2 ? val*0x00010001 : val*0x01010101; |
| 91 *(uint32_t*)(p + 4+0*stride)= val; | 91 *(uint32_t*)(p + 0+0*stride)= v; |
| 92 *(uint32_t*)(p + 4+0*stride)= v; | |
| 92 if(h==1) return; | 93 if(h==1) return; |
| 93 *(uint32_t*)(p + 0+1*stride)= val; | 94 *(uint32_t*)(p + 0+1*stride)= v; |
| 94 *(uint32_t*)(p + 4+1*stride)= val; | 95 *(uint32_t*)(p + 4+1*stride)= v; |
| 95 if(h==2) return; | 96 if(h==2) return; |
| 96 *(uint32_t*)(p + 0+2*stride)= val; | 97 *(uint32_t*)(p + 0+2*stride)= v; |
| 97 *(uint32_t*)(p + 4+2*stride)= val; | 98 *(uint32_t*)(p + 4+2*stride)= v; |
| 98 *(uint32_t*)(p + 0+3*stride)= val; | 99 *(uint32_t*)(p + 0+3*stride)= v; |
| 99 *(uint32_t*)(p + 4+3*stride)= val; | 100 *(uint32_t*)(p + 4+3*stride)= v; |
| 100 }else if(w==16){ | 101 }else if(w==16){ |
| 101 *(uint32_t*)(p + 0+0*stride)= val; | 102 *(uint32_t*)(p + 0+0*stride)= v; |
| 102 *(uint32_t*)(p + 4+0*stride)= val; | 103 *(uint32_t*)(p + 4+0*stride)= v; |
| 103 *(uint32_t*)(p + 8+0*stride)= val; | 104 *(uint32_t*)(p + 8+0*stride)= v; |
| 104 *(uint32_t*)(p +12+0*stride)= val; | 105 *(uint32_t*)(p +12+0*stride)= v; |
| 105 *(uint32_t*)(p + 0+1*stride)= val; | 106 *(uint32_t*)(p + 0+1*stride)= v; |
| 106 *(uint32_t*)(p + 4+1*stride)= val; | 107 *(uint32_t*)(p + 4+1*stride)= v; |
| 107 *(uint32_t*)(p + 8+1*stride)= val; | 108 *(uint32_t*)(p + 8+1*stride)= v; |
| 108 *(uint32_t*)(p +12+1*stride)= val; | 109 *(uint32_t*)(p +12+1*stride)= v; |
| 109 if(h==2) return; | 110 if(h==2) return; |
| 110 *(uint32_t*)(p + 0+2*stride)= val; | 111 *(uint32_t*)(p + 0+2*stride)= v; |
| 111 *(uint32_t*)(p + 4+2*stride)= val; | 112 *(uint32_t*)(p + 4+2*stride)= v; |
| 112 *(uint32_t*)(p + 8+2*stride)= val; | 113 *(uint32_t*)(p + 8+2*stride)= v; |
| 113 *(uint32_t*)(p +12+2*stride)= val; | 114 *(uint32_t*)(p +12+2*stride)= v; |
| 114 *(uint32_t*)(p + 0+3*stride)= val; | 115 *(uint32_t*)(p + 0+3*stride)= v; |
| 115 *(uint32_t*)(p + 4+3*stride)= val; | 116 *(uint32_t*)(p + 4+3*stride)= v; |
| 116 *(uint32_t*)(p + 8+3*stride)= val; | 117 *(uint32_t*)(p + 8+3*stride)= v; |
| 117 *(uint32_t*)(p +12+3*stride)= val; | 118 *(uint32_t*)(p +12+3*stride)= v; |
| 118 #endif | 119 #endif |
| 119 }else | 120 }else |
| 120 assert(0); | 121 assert(0); |
| 121 assert(h==4); | 122 assert(h==4); |
| 122 } | 123 } |
