Mercurial > libavcodec.hg
comparison libpostproc/postprocess_template.c @ 1158:71d890b5c13b libavcodec
faster C linear blend & interpolate deinterlacers
| author | michaelni |
|---|---|
| date | Sat, 29 Mar 2003 14:06:24 +0000 |
| parents | 57fe9c4e0c6e |
| children | 2e06398e4647 |
comparison
equal
deleted
inserted
replaced
| 1157:57fe9c4e0c6e | 1158:71d890b5c13b |
|---|---|
| 1560 | 1560 |
| 1561 : : "r" (src), "r" (stride) | 1561 : : "r" (src), "r" (stride) |
| 1562 : "%eax", "%ecx" | 1562 : "%eax", "%ecx" |
| 1563 ); | 1563 ); |
| 1564 #else | 1564 #else |
| 1565 int x; | 1565 int a, b, x; |
| 1566 src+= 4*stride; | 1566 src+= 4*stride; |
| 1567 for(x=0; x<8; x++) | 1567 |
| 1568 { | 1568 for(x=0; x<2; x++){ |
| 1569 src[stride] = (src[0] + src[stride*2])>>1; | 1569 a= *(uint32_t*)&src[stride*0]; |
| 1570 src[stride*3] = (src[stride*2] + src[stride*4])>>1; | 1570 b= *(uint32_t*)&src[stride*2]; |
| 1571 src[stride*5] = (src[stride*4] + src[stride*6])>>1; | 1571 *(uint32_t*)&src[stride*1]= (a|b) - (((a^b)&0xFEFEFEFEUL)>>1); |
| 1572 src[stride*7] = (src[stride*6] + src[stride*8])>>1; | 1572 a= *(uint32_t*)&src[stride*4]; |
| 1573 src++; | 1573 *(uint32_t*)&src[stride*3]= (a|b) - (((a^b)&0xFEFEFEFEUL)>>1); |
| 1574 b= *(uint32_t*)&src[stride*6]; | |
| 1575 *(uint32_t*)&src[stride*5]= (a|b) - (((a^b)&0xFEFEFEFEUL)>>1); | |
| 1576 a= *(uint32_t*)&src[stride*8]; | |
| 1577 *(uint32_t*)&src[stride*7]= (a|b) - (((a^b)&0xFEFEFEFEUL)>>1); | |
| 1578 src += 4; | |
| 1574 } | 1579 } |
| 1575 #endif | 1580 #endif |
| 1576 } | 1581 } |
| 1577 | 1582 |
| 1578 /** | 1583 /** |
| 1873 | 1878 |
| 1874 : : "r" (src), "r" (stride) | 1879 : : "r" (src), "r" (stride) |
| 1875 : "%eax", "%edx" | 1880 : "%eax", "%edx" |
| 1876 ); | 1881 ); |
| 1877 #else | 1882 #else |
| 1878 int x; | 1883 int a, b, c, x; |
| 1879 src+= 4*stride; | 1884 src+= 4*stride; |
| 1880 for(x=0; x<8; x++) | 1885 |
| 1881 { | 1886 for(x=0; x<2; x++){ |
| 1882 src[0 ] = (src[0 ] + 2*src[stride ] + src[stride*2])>>2; | 1887 a= *(uint32_t*)&src[stride*0]; |
| 1883 src[stride ] = (src[stride ] + 2*src[stride*2] + src[stride*3])>>2; | 1888 b= *(uint32_t*)&src[stride*1]; |
| 1884 src[stride*2] = (src[stride*2] + 2*src[stride*3] + src[stride*4])>>2; | 1889 c= *(uint32_t*)&src[stride*2]; |
| 1885 src[stride*3] = (src[stride*3] + 2*src[stride*4] + src[stride*5])>>2; | 1890 a= (a&c) + (((a^c)&0xFEFEFEFEUL)>>1); |
| 1886 src[stride*4] = (src[stride*4] + 2*src[stride*5] + src[stride*6])>>2; | 1891 *(uint32_t*)&src[stride*0]= (a|b) - (((a^b)&0xFEFEFEFEUL)>>1); |
| 1887 src[stride*5] = (src[stride*5] + 2*src[stride*6] + src[stride*7])>>2; | 1892 |
| 1888 src[stride*6] = (src[stride*6] + 2*src[stride*7] + src[stride*8])>>2; | 1893 a= *(uint32_t*)&src[stride*3]; |
| 1889 src[stride*7] = (src[stride*7] + 2*src[stride*8] + src[stride*9])>>2; | 1894 b= (a&b) + (((a^b)&0xFEFEFEFEUL)>>1); |
| 1890 src++; | 1895 *(uint32_t*)&src[stride*1]= (c|b) - (((c^b)&0xFEFEFEFEUL)>>1); |
| 1896 | |
| 1897 b= *(uint32_t*)&src[stride*4]; | |
| 1898 c= (b&c) + (((b^c)&0xFEFEFEFEUL)>>1); | |
| 1899 *(uint32_t*)&src[stride*2]= (c|a) - (((c^a)&0xFEFEFEFEUL)>>1); | |
| 1900 | |
| 1901 c= *(uint32_t*)&src[stride*5]; | |
| 1902 a= (a&c) + (((a^c)&0xFEFEFEFEUL)>>1); | |
| 1903 *(uint32_t*)&src[stride*3]= (a|b) - (((a^b)&0xFEFEFEFEUL)>>1); | |
| 1904 | |
| 1905 a= *(uint32_t*)&src[stride*6]; | |
| 1906 b= (a&b) + (((a^b)&0xFEFEFEFEUL)>>1); | |
| 1907 *(uint32_t*)&src[stride*4]= (c|b) - (((c^b)&0xFEFEFEFEUL)>>1); | |
| 1908 | |
| 1909 b= *(uint32_t*)&src[stride*7]; | |
| 1910 c= (b&c) + (((b^c)&0xFEFEFEFEUL)>>1); | |
| 1911 *(uint32_t*)&src[stride*5]= (c|a) - (((c^a)&0xFEFEFEFEUL)>>1); | |
| 1912 | |
| 1913 c= *(uint32_t*)&src[stride*8]; | |
| 1914 a= (a&c) + (((a^c)&0xFEFEFEFEUL)>>1); | |
| 1915 *(uint32_t*)&src[stride*6]= (a|b) - (((a^b)&0xFEFEFEFEUL)>>1); | |
| 1916 | |
| 1917 a= *(uint32_t*)&src[stride*9]; | |
| 1918 b= (a&b) + (((a^b)&0xFEFEFEFEUL)>>1); | |
| 1919 *(uint32_t*)&src[stride*7]= (c|b) - (((c^b)&0xFEFEFEFEUL)>>1); | |
| 1920 | |
| 1921 src += 4; | |
| 1891 } | 1922 } |
| 1892 #endif | 1923 #endif |
| 1893 } | 1924 } |
| 1894 | 1925 |
| 1895 /** | 1926 /** |
