Commit abe0b8e9 authored by Michael Niedermayer's avatar Michael Niedermayer

sws: use shift for chroma sample up convertion

sws: use shifts for non full range luma sample upconvertion
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent ee0ff051
......@@ -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,14 +470,19 @@ 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];
......@@ -484,10 +490,17 @@ static int planarCopyWrapper(SwsContext *c, const uint8_t* src[], int srcStride[
} 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)){
......
0, 0, 3686400, 0x75ee1dde
0, 0, 3686400, 0x8d5c3847
......@@ -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
......
......@@ -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
......
......@@ -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
......
......@@ -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
......
......@@ -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
......
......@@ -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
......
......@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment