Permalink
Browse files

sws: use shift for chroma sample up convertion

sws: use shifts for non full range luma sample upconvertion

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
  • Loading branch information...
1 parent ee0ff05 commit abe0b8e9f378a0f8781c1a3da6714d20cfd19594 @michaelni michaelni committed Aug 25, 2011
View
33 libswscale/swscale_unscaled.c
@@ -444,6 +444,7 @@ static int planarCopyWrapper(SwsContext *c, const uint8_t* src[], int srcStride[
int height= (plane==0 || plane==3) ? srcSliceH: -((-srcSliceH)>>c->chrDstVSubSample);
const uint8_t *srcPtr= src[plane];
uint8_t *dstPtr= dst[plane] + dstStride[plane]*y;
+ int shiftonly= plane==1 || plane==2 || (!c->srcRange && plane==0);
if (!dst[plane]) continue;
// ignore palette for GRAY8
@@ -469,25 +470,37 @@ static int planarCopyWrapper(SwsContext *c, const uint8_t* src[], int srcStride[
}
} else if (src_depth == 8) {
for (i = 0; i < height; i++) {
+ #define COPY816(w)\
+ if(shiftonly){\
+ for (j = 0; j < length; j++)\
+ w(&dstPtr2[j], srcPtr[j]<<(dst_depth-8));\
+ }else{\
+ for (j = 0; j < length; j++)\
+ w(&dstPtr2[j], (srcPtr[j]<<(dst_depth-8)) |\
+ (srcPtr[j]>>(2*8-dst_depth)));\
+ }
if(isBE(c->dstFormat)){
- for (j = 0; j < length; j++)
- AV_WB16(&dstPtr2[j], (srcPtr[j]<<(dst_depth-8)) |
- (srcPtr[j]>>(2*8-dst_depth)));
+ COPY816(AV_WB16)
} else {
- for (j = 0; j < length; j++)
- AV_WL16(&dstPtr2[j], (srcPtr[j]<<(dst_depth-8)) |
- (srcPtr[j]>>(2*8-dst_depth)));
+ COPY816(AV_WL16)
}
dstPtr2 += dstStride[plane]/2;
srcPtr += srcStride[plane];
}
} else if (src_depth <= dst_depth) {
for (i = 0; i < height; i++) {
#define COPY_UP(r,w) \
- for (j = 0; j < length; j++){ \
- unsigned int v= r(&srcPtr2[j]);\
- w(&dstPtr2[j], (v<<(dst_depth-src_depth)) | \
- (v>>(2*src_depth-dst_depth)));\
+ if(shiftonly){\
+ for (j = 0; j < length; j++){ \
+ unsigned int v= r(&srcPtr2[j]);\
+ w(&dstPtr2[j], v<<(dst_depth-src_depth));\
+ }\
+ }else{\
+ for (j = 0; j < length; j++){ \
+ unsigned int v= r(&srcPtr2[j]);\
+ w(&dstPtr2[j], (v<<(dst_depth-src_depth)) | \
+ (v>>(2*src_depth-dst_depth)));\
+ }\
}
if(isBE(c->srcFormat)){
if(isBE(c->dstFormat)){
View
2 tests/ref/fate/v210
@@ -1 +1 @@
-0, 0, 3686400, 0x75ee1dde
+0, 0, 3686400, 0x8d5c3847
View
16 tests/ref/lavfi/pixdesc
@@ -11,8 +11,8 @@ bgr565le 1dfdd03995c287e3c754b164bf26a355
bgr8 24bd566170343d06fec6fccfff5abc54
bgra 76a18a5151242fa137133f604cd624d2
gray db08f7f0751900347e6b8649e4164d21
-gray16be 7becf34ae825a3df3969bf4c6bfeb5e2
-gray16le 10bd87059b5c189f3caef2837f4f2b5c
+gray16be b44458c2254aa7a3d7b8dbf53be91979
+gray16le ecda5143f8a55fca1f6c7dfb238ddcba
monob 668ebe8b8103b9046b251b2fa8a1d88f
monow 9251497f3b0634f1165d12d5a289d943
nv12 e0af357888584d36eec5aa0f673793ef
@@ -31,12 +31,12 @@ uyvy422 adcf64516a19fce44df77082bdb16291
yuv410p 2d9225153c83ee1132397d619d94d1b3
yuv411p 8b298af3e43348ca1b11eb8a3252ac6c
yuv420p eba2f135a08829387e2f698ff72a2939
-yuv420p10be 7605e266c088d0fcf68c7b27c3ceff5f
-yuv420p10le 4228ee628c6deec123a13b9784516cc7
-yuv420p16be 16c009a235cd52b74791a895423152a3
-yuv420p16le 2d59c4f1d0314a5a957a7cfc4b6fabcc
-yuv420p9be ce880fa07830e5297c22acf6e20555ce
-yuv420p9le 16543fda8f87d94a6cf857d2e8d4461a
+yuv420p10be ea2aee509286fa3d07a6c68fec9967a5
+yuv420p10le 645ef73e06de41c83a7bc724179d2ce3
+yuv420p16be ba858ff4246368c28f03152487f57ef3
+yuv420p16le de239729a4fe1d4cfa3743e006654e78
+yuv420p9be 64e36fd90573f67ac2006d103972a79b
+yuv420p9le 9ed4b1dfabc53fd9e586ff6c4c43af80
yuv422p c9bba4529821d796a6ab09f6a5fd355a
yuv422p10be bdc13b630fd668b34c6fe1aae28dfc71
yuv422p10le d0607c260a45c973e6639f4e449730ad
View
16 tests/ref/lavfi/pixfmts_copy
@@ -11,8 +11,8 @@ bgr565le 1dfdd03995c287e3c754b164bf26a355
bgr8 24bd566170343d06fec6fccfff5abc54
bgra 76a18a5151242fa137133f604cd624d2
gray db08f7f0751900347e6b8649e4164d21
-gray16be 7becf34ae825a3df3969bf4c6bfeb5e2
-gray16le 10bd87059b5c189f3caef2837f4f2b5c
+gray16be b44458c2254aa7a3d7b8dbf53be91979
+gray16le ecda5143f8a55fca1f6c7dfb238ddcba
monob 668ebe8b8103b9046b251b2fa8a1d88f
monow 9251497f3b0634f1165d12d5a289d943
nv12 e0af357888584d36eec5aa0f673793ef
@@ -31,12 +31,12 @@ uyvy422 adcf64516a19fce44df77082bdb16291
yuv410p 2d9225153c83ee1132397d619d94d1b3
yuv411p 8b298af3e43348ca1b11eb8a3252ac6c
yuv420p eba2f135a08829387e2f698ff72a2939
-yuv420p10be 7605e266c088d0fcf68c7b27c3ceff5f
-yuv420p10le 4228ee628c6deec123a13b9784516cc7
-yuv420p16be 16c009a235cd52b74791a895423152a3
-yuv420p16le 2d59c4f1d0314a5a957a7cfc4b6fabcc
-yuv420p9be ce880fa07830e5297c22acf6e20555ce
-yuv420p9le 16543fda8f87d94a6cf857d2e8d4461a
+yuv420p10be ea2aee509286fa3d07a6c68fec9967a5
+yuv420p10le 645ef73e06de41c83a7bc724179d2ce3
+yuv420p16be ba858ff4246368c28f03152487f57ef3
+yuv420p16le de239729a4fe1d4cfa3743e006654e78
+yuv420p9be 64e36fd90573f67ac2006d103972a79b
+yuv420p9le 9ed4b1dfabc53fd9e586ff6c4c43af80
yuv422p c9bba4529821d796a6ab09f6a5fd355a
yuv422p10be bdc13b630fd668b34c6fe1aae28dfc71
yuv422p10le d0607c260a45c973e6639f4e449730ad
View
8 tests/ref/lavfi/pixfmts_crop
@@ -11,8 +11,8 @@ bgr565le 891664e5a54ae5968901347da92bc5e9
bgr8 4b7159e05765bd4703180072d86423c8
bgra 395c9f706fccda721471acaa5c96c16c
gray 8c4850e66562a587a292dc728a65ea4a
-gray16be daa5a6b98fb4a280c57c57bff1a2ab5a
-gray16le 84f5ea7259073edcb893113b42213c8e
+gray16be 257b4339925b0e672f552d8c9511f2c3
+gray16le 67cf7b26cda55356cc25e0f4e42cc136
rgb24 3b90ed64b687d3dc186c6ef521dc71a8
rgb48be e6fd353c0eb9bea889423954414bea35
rgb48le 68a1723da11ce08b502d42e204376503
@@ -26,8 +26,8 @@ rgba fd00b24c7597268c32759a84a1de2de4
yuv410p a9f2eaa747bf988b7bebe4f442b9c67a
yuv411p 3334d3aef8dba238658090ac172375d1
yuv420p bfea0188ddd4889787c403caae119cc7
-yuv420p16be 8365eff38b8c329aeb95fc605fa229bb
-yuv420p16le 5e8dd38d973d5854abe1ad4efad20cc1
+yuv420p16be eb2f96b638a174377f5fc42cfc849ff5
+yuv420p16le 3eae4c172d620b6d4ef2aeca403c4f54
yuv422p f2f930a91fe00d4252c4720b5ecd8961
yuv422p16be 167e4338811a7d272925a4c6417d60da
yuv422p16le 3359395d5875d581fa1e975013d30114
View
8 tests/ref/lavfi/pixfmts_hflip
@@ -11,8 +11,8 @@ bgr565le 3703466e19e1b52e03a34fd244a8e8e4
bgr8 50b505a889f0428242305acb642da107
bgra 01ca21e7e6a8d1281b4553bde8e8a404
gray 03efcb4ab52a24c0af0e03cfd26c9377
-gray16be 9bcbca979601ddc4869f846f08f3d1dd
-gray16le c1b8965adcc7f847ee343149ff507073
+gray16be 632535b46edec78a6534ef18d37f2b71
+gray16le 5c24e6f847bf9a41a40760c0d15df161
rgb24 754f1722fc738590cc407ac65749bfe8
rgb48be d690412ca5fada031b5da47b87096248
rgb48le c901feb564232f5d0bc0eabd66dae3e7
@@ -26,8 +26,8 @@ rgba d3d0dc1ecef3ed72f26a2986d0efc204
yuv410p acb543ebbbf63eefe533e6faffc006da
yuv411p c626cf6d191139b4ca7efc0155f957f1
yuv420p 2d5c80f9ba2ddd85b2aeda3564cc7d64
-yuv420p16be 758b0c1e2113b15e7afde48da4e4d024
-yuv420p16le 480ccd951dcb806bc875d307e02e50a0
+yuv420p16be 1c4fa93d0744de3cdc6d34ab55db3fb4
+yuv420p16le 92c74f5759068c381e4a066fe7faf2e0
yuv422p 6e728f4eb9eae287c224f396d84be6ea
yuv422p16be 69cf0605496c321546899a8442ee64fb
yuv422p16le f0b443fea72f4b6f462859a73b159664
View
16 tests/ref/lavfi/pixfmts_null
@@ -11,8 +11,8 @@ bgr565le 1dfdd03995c287e3c754b164bf26a355
bgr8 24bd566170343d06fec6fccfff5abc54
bgra 76a18a5151242fa137133f604cd624d2
gray db08f7f0751900347e6b8649e4164d21
-gray16be 7becf34ae825a3df3969bf4c6bfeb5e2
-gray16le 10bd87059b5c189f3caef2837f4f2b5c
+gray16be b44458c2254aa7a3d7b8dbf53be91979
+gray16le ecda5143f8a55fca1f6c7dfb238ddcba
monob 668ebe8b8103b9046b251b2fa8a1d88f
monow 9251497f3b0634f1165d12d5a289d943
nv12 e0af357888584d36eec5aa0f673793ef
@@ -31,12 +31,12 @@ uyvy422 adcf64516a19fce44df77082bdb16291
yuv410p 2d9225153c83ee1132397d619d94d1b3
yuv411p 8b298af3e43348ca1b11eb8a3252ac6c
yuv420p eba2f135a08829387e2f698ff72a2939
-yuv420p10be 7605e266c088d0fcf68c7b27c3ceff5f
-yuv420p10le 4228ee628c6deec123a13b9784516cc7
-yuv420p16be 16c009a235cd52b74791a895423152a3
-yuv420p16le 2d59c4f1d0314a5a957a7cfc4b6fabcc
-yuv420p9be ce880fa07830e5297c22acf6e20555ce
-yuv420p9le 16543fda8f87d94a6cf857d2e8d4461a
+yuv420p10be ea2aee509286fa3d07a6c68fec9967a5
+yuv420p10le 645ef73e06de41c83a7bc724179d2ce3
+yuv420p16be ba858ff4246368c28f03152487f57ef3
+yuv420p16le de239729a4fe1d4cfa3743e006654e78
+yuv420p9be 64e36fd90573f67ac2006d103972a79b
+yuv420p9le 9ed4b1dfabc53fd9e586ff6c4c43af80
yuv422p c9bba4529821d796a6ab09f6a5fd355a
yuv422p10be bdc13b630fd668b34c6fe1aae28dfc71
yuv422p10le d0607c260a45c973e6639f4e449730ad
View
16 tests/ref/lavfi/pixfmts_scale
@@ -11,8 +11,8 @@ bgr565le 614897eaeb422bd9a972f8ee51909be5
bgr8 7f007fa6c153a16e808a9c51605a4016
bgra 01cfdda1f72fcabb6c46424e27f8c519
gray d7786a7d9d99ac74230cc045cab5632c
-gray16be b554d6c1cc8da23967445be4dd3e4a86
-gray16le 715a33aa1c19cb26b14f5cc000e7a3d1
+gray16be a8fc0d7fea36407b5c319e3e736c7127
+gray16le 495c89186178308ef171d385bbd8bd70
monob cb62f31b701c6e987b574974d1b31e32
monow fd5d417ab7728acddffc06870661df61
nv12 4676d59db43d657dc12841f6bc3ab452
@@ -31,12 +31,12 @@ uyvy422 314bd486277111a95d9369b944fa0400
yuv410p 7df8f6d69b56a8dcb6c7ee908e5018b5
yuv411p 1143e7c5cc28fe0922b051b17733bc4c
yuv420p fdad2d8df8985e3d17e73c71f713cb14
-yuv420p10be d7695b9117d5b52819c569459e42669b
-yuv420p10le 0ac6d448db2df5f3d1346aa81f2b5f50
-yuv420p16be 9688e33e03b8c8275ab2fb1df0f06bee
-yuv420p16le cba8b390ad5e7b8678e419b8ce79c008
-yuv420p9be 8fa6e007b1a40f34eaa3e2beb73ea8af
-yuv420p9le a7b131a7dd06906a5aef2e36d117b972
+yuv420p10be dfa4d57bbc0e1a81f86a3895ab4feac0
+yuv420p10le af898206e757b0fca844a336f71d0091
+yuv420p16be 2a75942af24fbdc1fdfe189c6e7bf589
+yuv420p16le c4264d92a7c273967a778f4f5daddbe3
+yuv420p9be 046091d96f2a78e224036f203d8c9601
+yuv420p9le c9abfffee99fcf5fcbfc5adcda14e4b4
yuv422p 918e37701ee7377d16a8a6c119c56a40
yuv422p10be 35206fcd7e00ee582a8c366b37d57d1d
yuv422p10le 396f930e2da02f149ab9dd5b781cbe8d
View
16 tests/ref/lavfi/pixfmts_vflip
@@ -11,8 +11,8 @@ bgr565le fdb617533e1e7ff512ea5b6b6233e738
bgr8 c60f93fd152c6903391d1fe9decd3547
bgra 7f9b799fb48544e49ce93e91d7f9fca8
gray 30d9014a9d43b5f37e7aa64be3a3ecfc
-gray16be 6b84b85d3326182fa1217e138249edc5
-gray16le 66bb8faa09dc149734aca3c768a6d4e1
+gray16be 9e8319fa0d4945e587b8c095277be8de
+gray16le 790031119f8e874d75ee6f01b4654185
monob d0cf8732677a5360b6160133043590d8
monow ff9869d067ecb94eb9d90c9750c31fea
nv12 046f00f598ce14d9854a3534a5c99114
@@ -31,12 +31,12 @@ uyvy422 ffbd36720c77398d9a0d03ce2625928f
yuv410p 7bfb39d7afb49d6a6173e6b23ae321eb
yuv411p 4a90048cc3a65fac150e53289700efe1
yuv420p 2e6d6062e8cad37fb3ab2c433b55f382
-yuv420p10be df97d20b3b4a10c174d4360552c4160d
-yuv420p10le 4b5249208602b941332945c926f80ae9
-yuv420p16be 539076782902664a8acf381bf4f713e8
-yuv420p16le 0f609e588e5a258644ef85170d70e030
-yuv420p9be be40ec975fb2873891643cbbbddbc3b0
-yuv420p9le 7e606310d3f5ff12badf911e8f333471
+yuv420p10be fac8e0ae5a81861cddac97ddc4100b66
+yuv420p10le cb83ed3552113e0292e30adee774359c
+yuv420p16be b6d25ba55bc1831d352f379311b42b6d
+yuv420p16le 1d7ef427b6f79a02b93948738dab5442
+yuv420p9be 9865bf5c4392b56b1c4eb4f5a3fd32f9
+yuv420p9le 0f1e371a1374d3cba2205b70cc7cac90
yuv422p d7f5cb44d9b0210d66d6a8762640ab34
yuv422p10be 588fe319b96513c32e21d3e32b45447f
yuv422p10le 11b57f2bd9661024153f3973b9090cdb

0 comments on commit abe0b8e

Please sign in to comment.