Mercurial > mplayer.hg
comparison postproc/swscale.c @ 11379:7f02819e58e0
-sws 0 && -ssf chs fixed
author | michael |
---|---|
date | Tue, 04 Nov 2003 13:52:12 +0000 |
parents | b45214b33cb7 |
children | b352fe84ce64 |
comparison
equal
deleted
inserted
replaced
11378:20f205d23141 | 11379:7f02819e58e0 |
---|---|
1708 SwsContext *sws_getContext(int srcW, int srcH, int origSrcFormat, int dstW, int dstH, int origDstFormat, int flags, | 1708 SwsContext *sws_getContext(int srcW, int srcH, int origSrcFormat, int dstW, int dstH, int origDstFormat, int flags, |
1709 SwsFilter *srcFilter, SwsFilter *dstFilter){ | 1709 SwsFilter *srcFilter, SwsFilter *dstFilter){ |
1710 | 1710 |
1711 SwsContext *c; | 1711 SwsContext *c; |
1712 int i; | 1712 int i; |
1713 int usesFilter; | 1713 int usesVFilter, usesHFilter; |
1714 int unscaled, needsDither; | 1714 int unscaled, needsDither; |
1715 int srcFormat, dstFormat; | 1715 int srcFormat, dstFormat; |
1716 SwsFilter dummyFilter= {NULL, NULL, NULL, NULL}; | 1716 SwsFilter dummyFilter= {NULL, NULL, NULL, NULL}; |
1717 #ifdef ARCH_X86 | 1717 #ifdef ARCH_X86 |
1718 if(flags & SWS_CPU_CAPS_MMX) | 1718 if(flags & SWS_CPU_CAPS_MMX) |
1777 c->srcFormat= srcFormat; | 1777 c->srcFormat= srcFormat; |
1778 c->origDstFormat= origDstFormat; | 1778 c->origDstFormat= origDstFormat; |
1779 c->origSrcFormat= origSrcFormat; | 1779 c->origSrcFormat= origSrcFormat; |
1780 c->vRounder= 4* 0x0001000100010001ULL; | 1780 c->vRounder= 4* 0x0001000100010001ULL; |
1781 | 1781 |
1782 usesFilter=0; | 1782 usesHFilter= usesVFilter= 0; |
1783 if(dstFilter->lumV!=NULL && dstFilter->lumV->length>1) usesFilter=1; | 1783 if(dstFilter->lumV!=NULL && dstFilter->lumV->length>1) usesVFilter=1; |
1784 if(dstFilter->lumH!=NULL && dstFilter->lumH->length>1) usesFilter=1; | 1784 if(dstFilter->lumH!=NULL && dstFilter->lumH->length>1) usesHFilter=1; |
1785 if(dstFilter->chrV!=NULL && dstFilter->chrV->length>1) usesFilter=1; | 1785 if(dstFilter->chrV!=NULL && dstFilter->chrV->length>1) usesVFilter=1; |
1786 if(dstFilter->chrH!=NULL && dstFilter->chrH->length>1) usesFilter=1; | 1786 if(dstFilter->chrH!=NULL && dstFilter->chrH->length>1) usesHFilter=1; |
1787 if(srcFilter->lumV!=NULL && srcFilter->lumV->length>1) usesFilter=1; | 1787 if(srcFilter->lumV!=NULL && srcFilter->lumV->length>1) usesVFilter=1; |
1788 if(srcFilter->lumH!=NULL && srcFilter->lumH->length>1) usesFilter=1; | 1788 if(srcFilter->lumH!=NULL && srcFilter->lumH->length>1) usesHFilter=1; |
1789 if(srcFilter->chrV!=NULL && srcFilter->chrV->length>1) usesFilter=1; | 1789 if(srcFilter->chrV!=NULL && srcFilter->chrV->length>1) usesVFilter=1; |
1790 if(srcFilter->chrH!=NULL && srcFilter->chrH->length>1) usesFilter=1; | 1790 if(srcFilter->chrH!=NULL && srcFilter->chrH->length>1) usesHFilter=1; |
1791 | 1791 |
1792 getSubSampleFactors(&c->chrSrcHSubSample, &c->chrSrcVSubSample, srcFormat); | 1792 getSubSampleFactors(&c->chrSrcHSubSample, &c->chrSrcVSubSample, srcFormat); |
1793 getSubSampleFactors(&c->chrDstHSubSample, &c->chrDstVSubSample, dstFormat); | 1793 getSubSampleFactors(&c->chrDstHSubSample, &c->chrDstVSubSample, dstFormat); |
1794 | 1794 |
1795 // reuse chroma for 2 pixles rgb/bgr unless user wants full chroma interpolation | 1795 // reuse chroma for 2 pixles rgb/bgr unless user wants full chroma interpolation |
1813 c->chrDstH= -((-dstH) >> c->chrDstVSubSample); | 1813 c->chrDstH= -((-dstH) >> c->chrDstVSubSample); |
1814 | 1814 |
1815 sws_setColorspaceDetails(c, Inverse_Table_6_9[SWS_CS_DEFAULT], 0, Inverse_Table_6_9[SWS_CS_DEFAULT] /* FIXME*/, 0, 0, 1<<16, 1<<16); | 1815 sws_setColorspaceDetails(c, Inverse_Table_6_9[SWS_CS_DEFAULT], 0, Inverse_Table_6_9[SWS_CS_DEFAULT] /* FIXME*/, 0, 0, 1<<16, 1<<16); |
1816 | 1816 |
1817 /* unscaled special Cases */ | 1817 /* unscaled special Cases */ |
1818 if(unscaled && !usesFilter) | 1818 if(unscaled && !usesHFilter && !usesVFilter) |
1819 { | 1819 { |
1820 /* yv12_to_nv12 */ | 1820 /* yv12_to_nv12 */ |
1821 if(srcFormat == IMGFMT_YV12 && dstFormat == IMGFMT_NV12) | 1821 if(srcFormat == IMGFMT_YV12 && dstFormat == IMGFMT_NV12) |
1822 { | 1822 { |
1823 c->swScale= PlanarToNV12Wrapper; | 1823 c->swScale= PlanarToNV12Wrapper; |
1885 if(!c->canMMX2BeUsed && dstW >=srcW && (srcW&15)==0 && (flags&SWS_FAST_BILINEAR)) | 1885 if(!c->canMMX2BeUsed && dstW >=srcW && (srcW&15)==0 && (flags&SWS_FAST_BILINEAR)) |
1886 { | 1886 { |
1887 if(flags&SWS_PRINT_INFO) | 1887 if(flags&SWS_PRINT_INFO) |
1888 MSG_INFO("SwScaler: output Width is not a multiple of 32 -> no MMX2 scaler\n"); | 1888 MSG_INFO("SwScaler: output Width is not a multiple of 32 -> no MMX2 scaler\n"); |
1889 } | 1889 } |
1890 if(usesHFilter) c->canMMX2BeUsed=0; | |
1890 } | 1891 } |
1891 else | 1892 else |
1892 c->canMMX2BeUsed=0; | 1893 c->canMMX2BeUsed=0; |
1893 | 1894 |
1894 c->chrXInc= ((c->chrSrcW<<16) + (c->chrDstW>>1))/c->chrDstW; | 1895 c->chrXInc= ((c->chrSrcW<<16) + (c->chrDstW>>1))/c->chrDstW; |