| | 199 | // don't use SWSCALE to scale 1920x1080 to 1920x1072 |
| | 200 | if (outh == 1072) { |
| | 201 | if (cformat == CF_422) { |
| | 202 | packedUYVY422_to_planarYUYV422((char *)mBuffer[mWriteIndex], outw, outh, |
| | 203 | (char *)videoFrame, arrivedFrame->GetWidth(), arrivedFrame->GetHeight()); |
| | 204 | } else { |
| | 205 | packedUYVY422_to_planarYUYV420((char *)mBuffer[mWriteIndex], outw, outh, |
| | 206 | (char *)videoFrame, arrivedFrame->GetWidth(), arrivedFrame->GetHeight()); |
| | 207 | } |
| | 208 | mBufferFrameNum[mWriteIndex] = ++mLastWriteFrameNum; |
| | 209 | mWriteIndex = nextElementIndex; |
| | 210 | |
| | 211 | return S_OK; |
| | 212 | } |
| | 213 | |
| 248 | | memcpy((void *)(mBuffer[mWriteIndex]), videoFrame, arrivedFrame->GetRowBytes() * arrivedFrame->GetHeight()); |
| 249 | | #endif |
| 250 | | |
| 251 | | // fprintf(stderr, "*push* mBuffer[%i] = 0x%lx\n", mWriteIndex, mBuffer[mWriteIndex]); |
| 252 | | mBufferFrameNum[mWriteIndex] = ++mLastWriteFrameNum; |
| | 264 | if (cformat == CF_422) { |
| | 265 | packedUYVY422_to_planarYUYV422((char *)mBuffer[mWriteIndex], outw, outh, |
| | 266 | (char *)videoFrame, arrivedFrame->GetWidth(), arrivedFrame->GetHeight()); |
| | 267 | } else { |
| | 268 | packedUYVY422_to_planarYUYV420((char *)mBuffer[mWriteIndex], outw, outh, |
| | 269 | (char *)videoFrame, arrivedFrame->GetWidth(), arrivedFrame->GetHeight()); |
| | 270 | } |
| | 271 | #endif |
| | 272 | mBufferFrameNum[mWriteIndex] = ++mLastWriteFrameNum; |
| 844 | | #ifdef HAVE_SWSCALE |
| 845 | | switch (cformat_) { |
| 846 | | case CF_420: |
| 847 | | case CF_CIF: |
| 848 | | memcpy((char *)frame_, (char *)fr, outw_ * outh_ * 3 / 2); |
| 849 | | break; |
| 850 | | |
| 851 | | case CF_422: |
| 852 | | memcpy((char *)frame_, (char *)fr, outw_ * outh_ * 2); |
| 853 | | break; |
| 854 | | } |
| 855 | | #else |
| 856 | | switch (cformat_) { |
| 857 | | case CF_420: |
| 858 | | case CF_CIF: |
| 859 | | packedUYVY422_to_planarYUYV420((char *)frame_, outw_, outh_, (char *)fr, inw_, inh_); |
| 860 | | break; |
| 861 | | |
| 862 | | case CF_422: |
| 863 | | packedUYVY422_to_planarYUYV422((char *)frame_, outw_, outh_, (char *)fr, inw_, inh_); |
| 864 | | break; |
| 865 | | } |
| 866 | | #endif |
| | 868 | |
| | 869 | switch (decimate_) { |
| | 870 | case 1: // large-size |
| | 871 | if (cformat_ == CF_422) { |
| | 872 | memcpy((char *)frame_, (char *)fr, outw_ * outh_ * 2); |
| | 873 | } else { |
| | 874 | memcpy((char *)frame_, (char *)fr, outw_ * outh_ * 3 / 2); |
| | 875 | } |
| | 876 | break; |
| | 877 | |
| | 878 | case 2: // CIF-size |
| | 879 | if (cformat_ == CF_422) { |
| | 880 | planarYUYV422_to_planarYUYV422((char *)frame_, CIF_WIDTH, CIF_HEIGHT, (char *)fr, width_, height_); |
| | 881 | } else { |
| | 882 | planarYUYV420_to_planarYUYV420((char *)frame_, CIF_WIDTH, CIF_HEIGHT, (char *)fr, width_, height_); |
| | 883 | } |
| | 884 | break; |
| | 885 | |
| | 886 | case 4: // QCIF-size |
| | 887 | if (cformat_ == CF_422) { |
| | 888 | planarYUYV422_to_planarYUYV422((char *)frame_, QCIF_WIDTH, QCIF_HEIGHT, (char *)fr, width_, height_); |
| | 889 | } else { |
| | 890 | planarYUYV420_to_planarYUYV420((char *)frame_, QCIF_WIDTH, QCIF_HEIGHT, (char *)fr, width_, height_); |
| | 891 | } |
| | 892 | break; |
| | 893 | } |
| | 894 | |