From 0f346561ff185da1fb22771dc9fcb09b31b7dcb0 Mon Sep 17 00:00:00 2001 From: jp9000 Date: Thu, 16 Apr 2015 22:48:54 -0700 Subject: [PATCH] libobs: Refactor pack_lum to pack_shift Allows the ability to specify the bytes to shift as a parameter. Useful for planar 4:4:4 conversion. --- libobs/media-io/format-conversion.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/libobs/media-io/format-conversion.c b/libobs/media-io/format-conversion.c index ae3b83b5c..656a6c8d5 100644 --- a/libobs/media-io/format-conversion.c +++ b/libobs/media-io/format-conversion.c @@ -25,11 +25,11 @@ #define get_m128_32_0(val) (*((uint32_t*)&val)) #define get_m128_32_1(val) (*(((uint32_t*)&val)+1)) -#define pack_lum(lum_plane, lum_pos0, lum_pos1, line1, line2, lum_mask) \ +#define pack_shift(lum_plane, lum_pos0, lum_pos1, line1, line2, mask, sh) \ do { \ __m128i pack_val = _mm_packs_epi32( \ - _mm_srli_si128(_mm_and_si128(line1, lum_mask), 1), \ - _mm_srli_si128(_mm_and_si128(line2, lum_mask), 1)); \ + _mm_srli_si128(_mm_and_si128(line1, mask), sh), \ + _mm_srli_si128(_mm_and_si128(line2, mask), sh)); \ pack_val = _mm_packus_epi16(pack_val, pack_val); \ \ *(uint32_t*)(lum_plane+lum_pos0) = get_m128_32_0(pack_val); \ @@ -107,8 +107,8 @@ void compress_uyvx_to_i420( __m128i line2 = _mm_load_si128( (const __m128i*)(img + in_linesize)); - pack_lum(lum_plane, lum_pos0, lum_pos1, - line1, line2, lum_mask); + pack_shift(lum_plane, lum_pos0, lum_pos1, + line1, line2, lum_mask, 1); pack_ch_2plane(u_plane, v_plane, chroma_y_pos + (x>>1), line1, line2, uv_mask); @@ -144,8 +144,8 @@ void compress_uyvx_to_nv12( __m128i line2 = _mm_load_si128( (const __m128i*)(img + in_linesize)); - pack_lum(lum_plane, lum_pos0, lum_pos1, - line1, line2, lum_mask); + pack_shift(lum_plane, lum_pos0, lum_pos1, + line1, line2, lum_mask, 1); pack_ch_1plane(chroma_plane, chroma_y_pos + x, line1, line2, uv_mask); }