From 3a81bf82a0415753790c8fc09e8020d6e0e22f67 Mon Sep 17 00:00:00 2001 From: sdrik Date: Sat, 28 Feb 2009 08:01:52 +0000 Subject: When converting from a non alpha format to an alpha format, defaults to all ones rather than all zeroes git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28756 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/rgb2rgb.c | 13 +++++++------ libswscale/rgb2rgb_template.c | 22 +++++++++++----------- libswscale/swscale.c | 8 ++++---- libswscale/swscale_template.c | 27 ++++++++++++++------------- libswscale/yuv2rgb.c | 5 +++-- libswscale/yuv2rgb_template.c | 2 +- 6 files changed, 40 insertions(+), 37 deletions(-) diff --git a/libswscale/rgb2rgb.c b/libswscale/rgb2rgb.c index 99be2a4f27..ad69265c37 100644 --- a/libswscale/rgb2rgb.c +++ b/libswscale/rgb2rgb.c @@ -94,6 +94,7 @@ DECLARE_ASM_CONST(8, uint64_t, mmx_one) = 0xFFFFFFFFFFFFFFFFULL; DECLARE_ASM_CONST(8, uint64_t, mask32b) = 0x000000FF000000FFULL; DECLARE_ASM_CONST(8, uint64_t, mask32g) = 0x0000FF000000FF00ULL; DECLARE_ASM_CONST(8, uint64_t, mask32r) = 0x00FF000000FF0000ULL; +DECLARE_ASM_CONST(8, uint64_t, mask32a) = 0xFF000000FF000000ULL; DECLARE_ASM_CONST(8, uint64_t, mask32) = 0x00FFFFFF00FFFFFFULL; DECLARE_ASM_CONST(8, uint64_t, mask3216br) = 0x00F800F800F800F8ULL; DECLARE_ASM_CONST(8, uint64_t, mask3216g) = 0x0000FC000000FC00ULL; @@ -281,7 +282,7 @@ void rgb24to32(const uint8_t *src, uint8_t *dst, long src_size) { #ifdef WORDS_BIGENDIAN /* RGB24 (= R,G,B) -> BGR32 (= A,R,G,B) */ - dst[4*i + 0] = 0; + dst[4*i + 0] = 255; dst[4*i + 1] = src[3*i + 0]; dst[4*i + 2] = src[3*i + 1]; dst[4*i + 3] = src[3*i + 2]; @@ -289,7 +290,7 @@ void rgb24to32(const uint8_t *src, uint8_t *dst, long src_size) dst[4*i + 0] = src[3*i + 2]; dst[4*i + 1] = src[3*i + 1]; dst[4*i + 2] = src[3*i + 0]; - dst[4*i + 3] = 0; + dst[4*i + 3] = 255; #endif } } @@ -305,7 +306,7 @@ void rgb16tobgr32(const uint8_t *src, uint8_t *dst, long src_size) register uint16_t bgr; bgr = *s++; #ifdef WORDS_BIGENDIAN - *d++ = 0; + *d++ = 255; *d++ = (bgr&0x1F)<<3; *d++ = (bgr&0x7E0)>>3; *d++ = (bgr&0xF800)>>8; @@ -313,7 +314,7 @@ void rgb16tobgr32(const uint8_t *src, uint8_t *dst, long src_size) *d++ = (bgr&0xF800)>>8; *d++ = (bgr&0x7E0)>>3; *d++ = (bgr&0x1F)<<3; - *d++ = 0; + *d++ = 255; #endif } } @@ -369,7 +370,7 @@ void rgb15tobgr32(const uint8_t *src, uint8_t *dst, long src_size) register uint16_t bgr; bgr = *s++; #ifdef WORDS_BIGENDIAN - *d++ = 0; + *d++ = 255; *d++ = (bgr&0x1F)<<3; *d++ = (bgr&0x3E0)>>2; *d++ = (bgr&0x7C00)>>7; @@ -377,7 +378,7 @@ void rgb15tobgr32(const uint8_t *src, uint8_t *dst, long src_size) *d++ = (bgr&0x7C00)>>7; *d++ = (bgr&0x3E0)>>2; *d++ = (bgr&0x1F)<<3; - *d++ = 0; + *d++ = 255; #endif } } diff --git a/libswscale/rgb2rgb_template.c b/libswscale/rgb2rgb_template.c index f8915e8df2..e95b628049 100644 --- a/libswscale/rgb2rgb_template.c +++ b/libswscale/rgb2rgb_template.c @@ -83,7 +83,7 @@ static inline void RENAME(rgb24tobgr32)(const uint8_t *src, uint8_t *dst, long s #if HAVE_MMX __asm__ volatile(PREFETCH" %0"::"m"(*s):"memory"); mm_end = end - 23; - __asm__ volatile("movq %0, %%mm7"::"m"(mask32):"memory"); + __asm__ volatile("movq %0, %%mm7"::"m"(mask32a):"memory"); while (s < mm_end) { __asm__ volatile( @@ -96,10 +96,10 @@ static inline void RENAME(rgb24tobgr32)(const uint8_t *src, uint8_t *dst, long s "punpckldq 15%1, %%mm2 \n\t" "movd 18%1, %%mm3 \n\t" "punpckldq 21%1, %%mm3 \n\t" - "pand %%mm7, %%mm0 \n\t" - "pand %%mm7, %%mm1 \n\t" - "pand %%mm7, %%mm2 \n\t" - "pand %%mm7, %%mm3 \n\t" + "por %%mm7, %%mm0 \n\t" + "por %%mm7, %%mm1 \n\t" + "por %%mm7, %%mm2 \n\t" + "por %%mm7, %%mm3 \n\t" MOVNTQ" %%mm0, %0 \n\t" MOVNTQ" %%mm1, 8%0 \n\t" MOVNTQ" %%mm2, 16%0 \n\t" @@ -117,7 +117,7 @@ static inline void RENAME(rgb24tobgr32)(const uint8_t *src, uint8_t *dst, long s { #ifdef WORDS_BIGENDIAN /* RGB24 (= R,G,B) -> RGB32 (= A,B,G,R) */ - *dest++ = 0; + *dest++ = 255; *dest++ = s[2]; *dest++ = s[1]; *dest++ = s[0]; @@ -126,7 +126,7 @@ static inline void RENAME(rgb24tobgr32)(const uint8_t *src, uint8_t *dst, long s *dest++ = *s++; *dest++ = *s++; *dest++ = *s++; - *dest++ = 0; + *dest++ = 255; #endif } } @@ -1265,7 +1265,7 @@ static inline void RENAME(rgb15to32)(const uint8_t *src, uint8_t *dst, long src_ register uint16_t bgr; bgr = *s++; #ifdef WORDS_BIGENDIAN - *d++ = 0; + *d++ = 255; *d++ = (bgr&0x7C00)>>7; *d++ = (bgr&0x3E0)>>2; *d++ = (bgr&0x1F)<<3; @@ -1273,7 +1273,7 @@ static inline void RENAME(rgb15to32)(const uint8_t *src, uint8_t *dst, long src_ *d++ = (bgr&0x1F)<<3; *d++ = (bgr&0x3E0)>>2; *d++ = (bgr&0x7C00)>>7; - *d++ = 0; + *d++ = 255; #endif #endif @@ -1339,7 +1339,7 @@ static inline void RENAME(rgb16to32)(const uint8_t *src, uint8_t *dst, long src_ register uint16_t bgr; bgr = *s++; #ifdef WORDS_BIGENDIAN - *d++ = 0; + *d++ = 255; *d++ = (bgr&0xF800)>>8; *d++ = (bgr&0x7E0)>>3; *d++ = (bgr&0x1F)<<3; @@ -1347,7 +1347,7 @@ static inline void RENAME(rgb16to32)(const uint8_t *src, uint8_t *dst, long src_ *d++ = (bgr&0x1F)<<3; *d++ = (bgr&0x7E0)>>3; *d++ = (bgr&0xF800)>>8; - *d++ = 0; + *d++ = 255; #endif } } diff --git a/libswscale/swscale.c b/libswscale/swscale.c index 1fe421e0d6..7c335f1680 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -922,12 +922,12 @@ static inline void yuv2rgbXinC_full(SwsContext *c, int16_t *lumFilter, int16_t * switch(c->dstFormat){ case PIX_FMT_ARGB: dest++; - aidx= 0; + aidx= -1; case PIX_FMT_RGB24: aidx--; case PIX_FMT_RGBA: YSCALE_YUV_2_RGBX_FULL_C(1<<21) - dest[aidx]= 0; + dest[aidx]= 255; dest[0]= R>>22; dest[1]= G>>22; dest[2]= B>>22; @@ -936,12 +936,12 @@ static inline void yuv2rgbXinC_full(SwsContext *c, int16_t *lumFilter, int16_t * break; case PIX_FMT_ABGR: dest++; - aidx= 0; + aidx= -1; case PIX_FMT_BGR24: aidx--; case PIX_FMT_BGRA: YSCALE_YUV_2_RGBX_FULL_C(1<<21) - dest[aidx]= 0; + dest[aidx]= 255; dest[0]= B>>22; dest[1]= G>>22; dest[2]= R>>22; diff --git a/libswscale/swscale_template.c b/libswscale/swscale_template.c index ba2b6f99c6..3262b6ee85 100644 --- a/libswscale/swscale_template.c +++ b/libswscale/swscale_template.c @@ -1031,7 +1031,7 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_ case PIX_FMT_RGB32: YSCALEYUV2PACKEDX_ACCURATE YSCALEYUV2RGBX - "pxor %%mm7, %%mm7 \n\t" + "pcmpeqd %%mm7, %%mm7 \n\t" WRITEBGR32(%4, %5, %%REGa, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) YSCALEYUV2PACKEDX_END @@ -1097,7 +1097,7 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_ case PIX_FMT_RGB32: YSCALEYUV2PACKEDX YSCALEYUV2RGBX - "pxor %%mm7, %%mm7 \n\t" + "pcmpeqd %%mm7, %%mm7 \n\t" WRITEBGR32(%4, %5, %%REGa, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) YSCALEYUV2PACKEDX_END return; @@ -1196,7 +1196,7 @@ static inline void RENAME(yuv2packed2)(SwsContext *c, uint16_t *buf0, uint16_t * "mov %4, %%"REG_b" \n\t" "push %%"REG_BP" \n\t" YSCALEYUV2RGB(%%REGBP, %5) - "pxor %%mm7, %%mm7 \n\t" + "pcmpeqd %%mm7, %%mm7 \n\t" WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) "pop %%"REG_BP" \n\t" "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" @@ -1312,7 +1312,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t * "mov %4, %%"REG_b" \n\t" "push %%"REG_BP" \n\t" YSCALEYUV2RGB1(%%REGBP, %5) - "pxor %%mm7, %%mm7 \n\t" + "pcmpeqd %%mm7, %%mm7 \n\t" WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) "pop %%"REG_BP" \n\t" "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" @@ -1405,7 +1405,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t * "mov %4, %%"REG_b" \n\t" "push %%"REG_BP" \n\t" YSCALEYUV2RGB1b(%%REGBP, %5) - "pxor %%mm7, %%mm7 \n\t" + "pcmpeqd %%mm7, %%mm7 \n\t" WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) "pop %%"REG_BP" \n\t" "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" @@ -1642,7 +1642,7 @@ BGR2Y(uint16_t, bgr15ToY, 0, 0, 0, 0x001F, 0x03E0, 0x7C00, RY<<10, GY<<5, BY BGR2Y(uint16_t, rgb16ToY, 0, 0, 0, 0xF800, 0x07E0, 0x001F, RY , GY<<5, BY<<11, RGB2YUV_SHIFT+8) BGR2Y(uint16_t, rgb15ToY, 0, 0, 0, 0x7C00, 0x03E0, 0x001F, RY , GY<<5, BY<<10, RGB2YUV_SHIFT+7) -#define BGR2UV(type, name, shr, shg, shb, maskr, maskg, maskb, RU, GU, BU, RV, GV, BV, S)\ +#define BGR2UV(type, name, shr, shg, shb, maska, maskr, maskg, maskb, RU, GU, BU, RV, GV, BV, S)\ static inline void RENAME(name)(uint8_t *dstU, uint8_t *dstV, uint8_t *src, uint8_t *dummy, long width, uint32_t *unused)\ {\ int i;\ @@ -1663,9 +1663,10 @@ static inline void RENAME(name ## _half)(uint8_t *dstU, uint8_t *dstV, uint8_t * {\ int pix0= ((type*)src)[2*i+0];\ int pix1= ((type*)src)[2*i+1];\ - int g= (pix0&maskg)+(pix1&maskg);\ + int g= (pix0&(maskg|maska))+(pix1&(maskg|maska));\ int b= ((pix0+pix1-g)&(maskb|(2*maskb)))>>shb;\ int r= ((pix0+pix1-g)&(maskr|(2*maskr)))>>shr;\ + g&= maskg|(2*maskg);\ \ g>>=shg;\ \ @@ -1674,12 +1675,12 @@ static inline void RENAME(name ## _half)(uint8_t *dstU, uint8_t *dstV, uint8_t * }\ } -BGR2UV(uint32_t, bgr32ToUV,16, 0, 0, 0xFF0000, 0xFF00, 0x00FF, RU<< 8, GU , BU<< 8, RV<< 8, GV , BV<< 8, RGB2YUV_SHIFT+8) -BGR2UV(uint32_t, rgb32ToUV, 0, 0,16, 0x00FF, 0xFF00, 0xFF0000, RU<< 8, GU , BU<< 8, RV<< 8, GV , BV<< 8, RGB2YUV_SHIFT+8) -BGR2UV(uint16_t, bgr16ToUV, 0, 0, 0, 0x001F, 0x07E0, 0xF800, RU<<11, GU<<5, BU , RV<<11, GV<<5, BV , RGB2YUV_SHIFT+8) -BGR2UV(uint16_t, bgr15ToUV, 0, 0, 0, 0x001F, 0x03E0, 0x7C00, RU<<10, GU<<5, BU , RV<<10, GV<<5, BV , RGB2YUV_SHIFT+7) -BGR2UV(uint16_t, rgb16ToUV, 0, 0, 0, 0xF800, 0x07E0, 0x001F, RU , GU<<5, BU<<11, RV , GV<<5, BV<<11, RGB2YUV_SHIFT+8) -BGR2UV(uint16_t, rgb15ToUV, 0, 0, 0, 0x7C00, 0x03E0, 0x001F, RU , GU<<5, BU<<10, RV , GV<<5, BV<<10, RGB2YUV_SHIFT+7) +BGR2UV(uint32_t, bgr32ToUV,16, 0, 0, 0xFF000000, 0xFF0000, 0xFF00, 0x00FF, RU<< 8, GU , BU<< 8, RV<< 8, GV , BV<< 8, RGB2YUV_SHIFT+8) +BGR2UV(uint32_t, rgb32ToUV, 0, 0,16, 0xFF000000, 0x00FF, 0xFF00, 0xFF0000, RU<< 8, GU , BU<< 8, RV<< 8, GV , BV<< 8, RGB2YUV_SHIFT+8) +BGR2UV(uint16_t, bgr16ToUV, 0, 0, 0, 0, 0x001F, 0x07E0, 0xF800, RU<<11, GU<<5, BU , RV<<11, GV<<5, BV , RGB2YUV_SHIFT+8) +BGR2UV(uint16_t, bgr15ToUV, 0, 0, 0, 0, 0x001F, 0x03E0, 0x7C00, RU<<10, GU<<5, BU , RV<<10, GV<<5, BV , RGB2YUV_SHIFT+7) +BGR2UV(uint16_t, rgb16ToUV, 0, 0, 0, 0, 0xF800, 0x07E0, 0x001F, RU , GU<<5, BU<<11, RV , GV<<5, BV<<11, RGB2YUV_SHIFT+8) +BGR2UV(uint16_t, rgb15ToUV, 0, 0, 0, 0, 0x7C00, 0x03E0, 0x001F, RU , GU<<5, BU<<10, RV , GV<<5, BV<<10, RGB2YUV_SHIFT+7) #if HAVE_MMX static inline void RENAME(bgr24ToY_mmx)(uint8_t *dst, uint8_t *src, long width, int srcFormat) diff --git a/libswscale/yuv2rgb.c b/libswscale/yuv2rgb.c index 53a0d4e7b8..0a8cd99a97 100644 --- a/libswscale/yuv2rgb.c +++ b/libswscale/yuv2rgb.c @@ -533,7 +533,7 @@ av_cold int sws_yuv2rgb_c_init_tables(SwsContext *c, const int inv_table[4], int uint8_t *y_table; uint16_t *y_table16; uint32_t *y_table32; - int i, base, rbase, gbase, bbase; + int i, base, rbase, gbase, bbase, abase; const int yoffs = fullRange ? 384 : 326; int64_t crv = inv_table[0]; @@ -659,12 +659,13 @@ av_cold int sws_yuv2rgb_c_init_tables(SwsContext *c, const int inv_table[4], int rbase = base + (isRgb ? 16 : 0); gbase = base + 8; bbase = base + (isRgb ? 0 : 16); + abase = (c->dstFormat == PIX_FMT_RGBA || c->dstFormat == PIX_FMT_BGRA) ? 24 : 0; c->yuvTable = av_malloc(1024*3*4); y_table32 = c->yuvTable; yb = -(384<<16) - oy; for (i = 0; i < 1024; i++) { uint8_t yval = av_clip_uint8((yb + 0x8000) >> 16); - y_table32[i ] = yval << rbase; + y_table32[i ] = (yval << rbase) + (255 << abase); y_table32[i+1024] = yval << gbase; y_table32[i+2048] = yval << bbase; yb += cy; diff --git a/libswscale/yuv2rgb_template.c b/libswscale/yuv2rgb_template.c index 0b5e6f9ca1..f55568b0ab 100644 --- a/libswscale/yuv2rgb_template.c +++ b/libswscale/yuv2rgb_template.c @@ -446,7 +446,7 @@ static inline int RENAME(yuv420_rgb32)(SwsContext *c, uint8_t* src[], int srcStr YUV2RGB_INIT YUV2RGB - "pxor %%mm3, %%mm3;" /* zero mm3 */ + "pcmpeqd %%mm3, %%mm3;" /* fill mm3 */ RGB_PLANAR2PACKED32 YUV2RGB_ENDLOOP(4) -- cgit v1.2.3 From d1acb189028448087cee36a78d0b64b024422966 Mon Sep 17 00:00:00 2001 From: reimar Date: Sat, 28 Feb 2009 10:06:52 +0000 Subject: Fix a possible NULL-pointer crash introduced by local changes to libfaad2 git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28757 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libfaad2/local_changes.diff | 5 +++-- libfaad2/specrec.c | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/libfaad2/local_changes.diff b/libfaad2/local_changes.diff index 0e3fe95d41..db2b60cd68 100644 --- a/libfaad2/local_changes.diff +++ b/libfaad2/local_changes.diff @@ -360,7 +360,7 @@ } #endif -@@ -865,22 +842,13 @@ +@@ -865,22 +842,14 @@ /* always allocate 2 channels, PS can always "suddenly" turn up */ #if (defined(PS_DEC) || defined(DRM_PS)) @@ -373,7 +373,8 @@ - if (hDecoder->element_output_channels[hDecoder->fr_ch_ele] == 0) - { - /* element_output_channels not set yet */ -+ if (hDecoder->element_output_channels[hDecoder->fr_ch_ele] < output_channels) { ++ if (hDecoder->element_alloced[hDecoder->fr_ch_ele] == 0 || ++ hDecoder->element_output_channels[hDecoder->fr_ch_ele] < output_channels) { hDecoder->element_output_channels[hDecoder->fr_ch_ele] = output_channels; - } else if (hDecoder->element_output_channels[hDecoder->fr_ch_ele] != output_channels) { - /* element inconsistency */ diff --git a/libfaad2/specrec.c b/libfaad2/specrec.c index 1119dd3b53..d4d600916f 100644 --- a/libfaad2/specrec.c +++ b/libfaad2/specrec.c @@ -847,7 +847,8 @@ uint8_t reconstruct_single_channel(NeAACDecHandle hDecoder, ic_stream *ics, output_channels = 1; #endif - if (hDecoder->element_output_channels[hDecoder->fr_ch_ele] < output_channels) { + if (hDecoder->element_alloced[hDecoder->fr_ch_ele] == 0 || + hDecoder->element_output_channels[hDecoder->fr_ch_ele] < output_channels) { hDecoder->element_output_channels[hDecoder->fr_ch_ele] = output_channels; retval = allocate_single_channel(hDecoder, sce->channel, output_channels); if (retval > 0) -- cgit v1.2.3 From 5437a538d5302af25a175f71dcba746aa1cd086a Mon Sep 17 00:00:00 2001 From: reimar Date: Sat, 28 Feb 2009 10:43:28 +0000 Subject: Handle vdp_decoder_create failures better, in particular avoid unrelated error messages and retry creating a decoder. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28758 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libvo/vo_vdpau.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libvo/vo_vdpau.c b/libvo/vo_vdpau.c index e81ff8ece0..259757d34a 100644 --- a/libvo/vo_vdpau.c +++ b/libvo/vo_vdpau.c @@ -785,6 +785,11 @@ static int draw_slice(uint8_t *image[], int stride[], int w, int h, } vdp_st = vdp_decoder_create(vdp_device, vdp_decoder_profile, vid_width, vid_height, max_refs, &decoder); CHECK_ST_WARNING("Failed creating VDPAU decoder"); + if (vdp_st != VDP_STATUS_OK) { + decoder = VDP_INVALID_HANDLE; + decoder_max_refs = 0; + return VO_FALSE; + } decoder_max_refs = max_refs; } vdp_st = vdp_decoder_render(decoder, rndr->surface, (void *)&rndr->info, rndr->bitstream_buffers_used, rndr->bitstream_buffers); -- cgit v1.2.3 From 2661a2b7fce22956c59dfe1638c95d818efa30d3 Mon Sep 17 00:00:00 2001 From: cehoyos Date: Sat, 28 Feb 2009 13:02:52 +0000 Subject: Fix OSD for vo vdpau:deint>1. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28759 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libvo/vo_vdpau.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libvo/vo_vdpau.c b/libvo/vo_vdpau.c index 259757d34a..b45f391cd3 100644 --- a/libvo/vo_vdpau.c +++ b/libvo/vo_vdpau.c @@ -212,8 +212,10 @@ static void video_to_output_surface(void) for (i = 0; i <= !!(deint > 1); i++) { int field = VDP_VIDEO_MIXER_PICTURE_STRUCTURE_FRAME; VdpOutputSurface output_surface; - if (i) + if (i) { + draw_osd(); flip_page(); + } if (deint) field = top_field_first == i ? VDP_VIDEO_MIXER_PICTURE_STRUCTURE_BOTTOM_FIELD: -- cgit v1.2.3 From 82ed008f7abf69a9716dbc873932d7c93e149a3f Mon Sep 17 00:00:00 2001 From: cehoyos Date: Sat, 28 Feb 2009 13:20:01 +0000 Subject: Support brightness, contrast, hue and saturation adjustments via custom color space conversion matrices in VDPAU. Patch by Grigori Goronzy, greg A chown D ath D cx git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28760 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libvo/vo_vdpau.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 54 insertions(+), 2 deletions(-) diff --git a/libvo/vo_vdpau.c b/libvo/vo_vdpau.c index b45f391cd3..28d02f54dd 100644 --- a/libvo/vo_vdpau.c +++ b/libvo/vo_vdpau.c @@ -140,6 +140,8 @@ static VdpDecoderCreate *vdp_decoder_create; static VdpDecoderDestroy *vdp_decoder_destroy; static VdpDecoderRender *vdp_decoder_render; +static VdpGenerateCSCMatrix *vdp_generate_csc_matrix; + static void *vdpau_lib_handle; /* output_surfaces[NUM_OUTPUT_SURFACES] is misused for OSD. */ #define osd_surface output_surfaces[NUM_OUTPUT_SURFACES] @@ -193,6 +195,9 @@ struct { static int eosd_render_count; static int eosd_surface_count; +// Video equalizer +static VdpProcamp procamp; + /* * X11 specific */ @@ -339,6 +344,7 @@ static int win_x11_init_vdpau_procs(void) &vdp_bitmap_surface_putbits_native}, {VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_BITMAP_SURFACE, &vdp_output_surface_render_bitmap_surface}, + {VDP_FUNC_ID_GENERATE_CSC_MATRIX, &vdp_generate_csc_matrix}, {0, NULL} }; @@ -1018,9 +1024,55 @@ static int preinit(const char *arg) eosd_surfaces = NULL; eosd_targets = NULL; + procamp.struct_version = VDP_PROCAMP_VERSION; + procamp.brightness = 0.0; + procamp.contrast = 1.0; + procamp.saturation = 1.0; + procamp.hue = 0.0; + return 0; } +static int get_equalizer(char *name, int *value) { + if (!strcasecmp(name, "brightness")) + *value = procamp.brightness * 100; + else if (!strcasecmp(name, "contrast")) + *value = (procamp.contrast-1.0) * 100; + else if (!strcasecmp(name, "saturation")) + *value = (procamp.saturation-1.0) * 100; + else if (!strcasecmp(name, "hue")) + *value = procamp.hue * 100 / 3.141592; + else + return VO_NOTIMPL; + return VO_TRUE; +} + +static int set_equalizer(char *name, int value) { + VdpStatus vdp_st; + VdpCSCMatrix matrix; + VdpVideoMixerAttribute attributes[] = {VDP_VIDEO_MIXER_ATTRIBUTE_CSC_MATRIX}; + const void *attribute_values[] = {&matrix}; + + if (!strcasecmp(name, "brightness")) + procamp.brightness = value / 100.0; + else if (!strcasecmp(name, "contrast")) + procamp.contrast = value / 100.0 + 1.0; + else if (!strcasecmp(name, "saturation")) + procamp.saturation = value / 100.0 + 1.0; + else if (!strcasecmp(name, "hue")) + procamp.hue = value / 100.0 * 3.141592; + else + return VO_NOTIMPL; + + vdp_st = vdp_generate_csc_matrix(&procamp, VDP_COLOR_STANDARD_ITUR_BT_601, + &matrix); + CHECK_ST_WARNING("Error when generating CSC matrix") + vdp_st = vdp_video_mixer_set_attribute_values(video_mixer, 1, attributes, + attribute_values); + CHECK_ST_WARNING("Error when setting CSC matrix") + return VO_TRUE; +} + static int control(uint32_t request, void *data, ...) { switch (request) { @@ -1065,7 +1117,7 @@ static int control(uint32_t request, void *data, ...) value = va_arg(ap, int); va_end(ap); - return vo_x11_set_equalizer(data, value); + return set_equalizer(data, value); } case VOCTRL_GET_EQUALIZER: { va_list ap; @@ -1075,7 +1127,7 @@ static int control(uint32_t request, void *data, ...) value = va_arg(ap, int *); va_end(ap); - return vo_x11_get_equalizer(data, value); + return get_equalizer(data, value); } case VOCTRL_ONTOP: vo_x11_ontop(); -- cgit v1.2.3 From d20b0f308143ecbb86e55f81802a9eceab309f2e Mon Sep 17 00:00:00 2001 From: diego Date: Sat, 28 Feb 2009 14:11:42 +0000 Subject: sync by Ivan (sevenfourk, sevenfourk gmail com) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28761 b3059339-0415-0410-9bf9-f77b7e298cf2 --- help/help_mp-uk.h | 640 ++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 451 insertions(+), 189 deletions(-) diff --git a/help/help_mp-uk.h b/help/help_mp-uk.h index 97208d0353..6b8a9acbc0 100644 --- a/help/help_mp-uk.h +++ b/help/help_mp-uk.h @@ -1,9 +1,10 @@ -/* Translated by: Volodymyr M. Lisivka , - Andriy Gritsenko - sevenfourk - Was synced with help_mp-en.h: rev 1.105 +// Translated by: Volodymyr M. Lisivka , +// Andriy Gritsenko +// sevenfourk -========================= MPlayer help =========================== */ +// Was synced with help_mp-en.h: r28450 + +// ========================= MPlayer help =========================== #ifdef HELP_MP_DEFINE_STATIC static char help_text[]= @@ -95,7 +96,7 @@ static char help_text[]= #define MSGTR_NoGui "MPlayer був скомпільований БЕЗ підтримки GUI!\n" #define MSGTR_GuiNeedsX "MPlayer GUI вимагає X11!\n" -#define MSGTR_Playing "Програвання %s\n" +#define MSGTR_Playing "\nПрогравання %s\n" #define MSGTR_NoSound "Аудіо: без звуку!!!\n" #define MSGTR_FPSforced "Примусово змінена кількість кадрів на секунду на %5.3f (ftime: %5.3f)\n" #define MSGTR_CompiledWithRuntimeDetection "Скомпільвано з автовизначенням CPU - УВАГА - це не оптимально!\nДля отримання кращих результатів перекомпілюйте MPlayer з --disable-runtime-cpudetection\n" @@ -172,6 +173,7 @@ static char help_text[]= #define MSGTR_DvdnavNavSeekDone "Подія DVDNAV: Nav Seek зроблено\n" #define MSGTR_MenuCall "Виклик меню\n" +// --- edit decision lists #define MSGTR_EdlOutOfMem "Не можу виділити достатньо пам'яті для збереження даних EDL.\n" #define MSGTR_EdlRecordsNo "Читання %d EDL дій.\n" #define MSGTR_EdlQueueEmpty "Немає дій EDL які треба виконати.\n" @@ -201,6 +203,7 @@ static char help_text[]= #define MSGTR_OSDAngle "Кут: %d/%d" // property values +#define MSGTR_Enabled "увімкнено" #define MSGTR_EnabledEdl "увімкнено (EDL)" #define MSGTR_Disabled "вимкнено" #define MSGTR_HardFrameDrop "інтенсивний" @@ -266,6 +269,8 @@ static char help_text[]= #define MSGTR_FlushingVideoFrames "\nЗкидую кадри відео.\n" #define MSGTR_FiltersHaveNotBeenConfiguredEmptyFile "Фільтри не було налаштовано! Порожній файл?\n" #define MSGTR_RecommendedVideoBitrate "Рекомендований бітрейт для %s CD: %d\n" +#define MSGTR_VideoStreamResult "\nВідео потік: %8.3f кбіт/с (%d Б/с) розмір: %"PRIu64" байт(ів) %5.3f сек %d кадрів\n" +#define MSGTR_AudioStreamResult "\nАудіо потік: %8.3f кбіт/с (%d Б/с) розмір: %"PRIu64" байт(ів) %5.3f сек\n" #define MSGTR_EdlSkipStartEndCurrent "EDL SKIP: Початок: %.2f Кінець: %.2f Поточна: V: %.2f A: %.2f \r" #define MSGTR_OpenedStream "вдало: формат: %d дані: 0x%X - 0x%x\n" #define MSGTR_VCodecFramecopy "відеокодек: копія кадрів (%dx%d %dbpp fourcc=%x)\n" @@ -403,22 +408,19 @@ static char help_text[]= #define MSGTR_CouldntOpenCodec "Не можу відкрити кодек %s, br=%d.\n" #define MSGTR_CantCopyAudioFormat "Аудіо формат 0x%x не використовується з '-oac copy', спробуйте\n'-oac pcm' замість чи використайте '-fafmttag' для його перевизначення.\n" -#define MSGTR_VideoStreamResult "\nВідео потік: %8.3f кбіт/с (%d Б/с) розмір: %"PRIu64" байт %5.3f секунд %d кадрів\n" -#define MSGTR_AudioStreamResult "\nАудіо потік: %8.3f кбіт/с (%d Б/с) розмір: %"PRIu64" байт %5.3f секунд\n" - // cfg-mencoder.h: #define MSGTR_MEncoderMP3LameHelp "\n\n"\ " vbr=<0-4> метод змінного бітрейту\n"\ -" 0: cbr\n"\ -" 1: mt\n"\ -" 2: rh(default)\n"\ -" 3: abr\n"\ -" 4: mtrh\n"\ +" 0: cbr (постійний бітрейт)\n"\ +" 1: mt (Mark Taylor VBR алгоритм)\n"\ +" 2: rh (Robert Hegemann VBR алгоритм - зомовчування)\n"\ +" 3: abr (середній бітрейт)\n"\ +" 4: mtrh (Mark Taylor Robert Hegemann VBR алгоритм)\n"\ "\n"\ -" abr приблизний бітрейт\n"\ +" abr середній бітрейт\n"\ "\n"\ " cbr постійний бітрейт\n"\ -" Forces also CBR mode encoding on subsequent ABR presets modes\n"\ +" Також форсує CBR режим кодування на слідуючих ABR режимах\n"\ "\n"\ " br=<0-1024> вказати бітрейт в kBit (тільки для CBR та ABR)\n"\ "\n"\ @@ -426,11 +428,11 @@ static char help_text[]= "\n"\ " aq=<0-9> алгорітмична якість (0-краща/повільніша 9-гірша/швидкіша)\n"\ "\n"\ -" ratio=<1-100> ступень стиснення\n"\ +" ratio=<1-100> рівень стиснення\n"\ "\n"\ -" vol=<0-10> set audio input gain\n"\ +" vol=<0-10> встановити посилення вхідного аудіо\n"\ "\n"\ -" mode=<0-3> (якщо не вказано: auto)\n"\ +" mode=<0-3> (замовчування: auto)\n"\ " 0: stereo\n"\ " 1: joint-stereo\n"\ " 2: dualchannel\n"\ @@ -441,200 +443,152 @@ static char help_text[]= " 1: all\n"\ " 2: adjust\n"\ "\n"\ -" fast переходити на швидке кодування при послідовних VBR presets modes,\n"\ +" fast Переходити на швидке кодування при послідовних VBR presets modes,\n"\ " трохи менша якість та більші бітрейти.\n"\ "\n"\ " preset= запровадити найбільші установки якості.\n"\ -" середня: VBR кодування, добра якість\n"\ +" середня: VBR кодування, добра якість\n"\ " (150-180 kbps бітрейт)\n"\ -" стандарт: VBR кодування, висока якість\n"\ +" стандарт: VBR кодування, висока якість\n"\ " (170-210 kbps бітрейт)\n"\ -" висока: VBR кодування, дуже висока якість\n"\ +" висока: VBR кодування, дуже висока якість\n"\ " (200-240 kbps бітрейт)\n"\ -" божевільна: CBR кодування, найвища настройка якості\n"\ +" найкраща: CBR кодування, найвища якость\n"\ " (320 kbps бітрейт)\n"\ -" <8-320>: ABR кодування з вказаним приблизним бітрейтом.\n\n" +" <8-320>: ABR кодування з вказаним приблизним бітрейтом.\n\n" -// open.c, stream.c: -#define MSGTR_CdDevNotfound "Компактовід \"%s\" не знайдений!\n" -#define MSGTR_ErrTrackSelect "Помилка вибору треку на VCD!" -#define MSGTR_ReadSTDIN "Читання з stdin...\n" -#define MSGTR_UnableOpenURL "Не можу відкрити URL: %s\n" -#define MSGTR_ConnToServer "З'єднання з сервером: %s\n" -#define MSGTR_FileNotFound "Файл не знайдений: '%s'\n" +// codec-cfg.c +#define MSGTR_DuplicateFourcc "подвоєні FourCC" +#define MSGTR_TooManyFourccs "забагато FourCCs/форматів..." +#define MSGTR_ParseError "помилка у синтаксичному розборі" +#define MSGTR_ParseErrorFIDNotNumber "помилка у синтаксичному розборі (ID формату не є номером?)" +#define MSGTR_ParseErrorFIDAliasNotNumber "помилка у синтаксичному розборі (ID ім'я формату не є номером?)" +#define MSGTR_DuplicateFID "подвоєний ID формату" +#define MSGTR_TooManyOut "забагато вихідних форматів..." +#define MSGTR_InvalidCodecName "\nкодек(%s) ім'я невірне!\n" +#define MSGTR_CodecLacksFourcc "\nкодек(%s) не має FourCC/фармат!\n" +#define MSGTR_CodecLacksDriver "\nкодек(%s) не має драйверу!\n" +#define MSGTR_CodecNeedsDLL "\nкодек(%s) потребує 'dll'!\n" +#define MSGTR_CodecNeedsOutfmt "\nкодек(%s) потребує 'outfmt'!\n" +#define MSGTR_CantAllocateComment "Не можу виділити пам'ять для коментаря. " +#define MSGTR_GetTokenMaxNotLessThanMAX_NR_TOKEN "get_token(): max >= MAX_MR_TOKEN!" +#define MSGTR_ReadingFile "Читаю %s: " +#define MSGTR_CantOpenFileError "Не можу відкрити '%s': %s\n" +#define MSGTR_CantGetMemoryForLine "Не можу виділити пам'ять для 'line': %s\n" +#define MSGTR_CantReallocCodecsp "Не можу виконати realloc для '*codecsp': %s\n" +#define MSGTR_CodecNameNotUnique "Назва кодеку '%s' не унікальна." +#define MSGTR_CantStrdupName "Не можу виконати strdup -> 'name': %s\n" +#define MSGTR_CantStrdupInfo "Не можу виконати strdup -> 'info': %s\n" +#define MSGTR_CantStrdupDriver "Не можу виконати strdup -> 'driver': %s\n" +#define MSGTR_CantStrdupDLL "Не можу виконати strdup -> 'dll': %s" +#define MSGTR_AudioVideoCodecTotals "%d аудіо & %d відео кодеки\n" +#define MSGTR_CodecDefinitionIncorrect "Неправильно визначено кодек." +#define MSGTR_OutdatedCodecsConf "Цей codecs.conf застарий та несумісний із цим релізом MPlayer!" -#define MSGTR_SMBFileNotFound "Помилка відкриття з мережі: '%s'\n" -#define MSGTR_SMBNotCompiled "MPlayer не має вкомпільованої підтримки SMB\n" +// fifo.c +#define MSGTR_CannotMakePipe "Не можу створити канал!\n" -#define MSGTR_CantOpenDVD "Не зміг відкрити DVD: %s (%s)\n" -#define MSGTR_DVDnumTitles "Є %d доріжок з титрами на цьому DVD.\n" -#define MSGTR_DVDinvalidTitle "Неприпустимий номер доріжки титрів на DVD: %d\n" -#define MSGTR_DVDnumChapters "Є %d розділів на цій доріжці з DVD титрами.\n" -#define MSGTR_DVDinvalidChapter "Неприпустимий номер DVD розділу: %d\n" -#define MSGTR_DVDnumAngles "Є %d кутів на цій доріжці з DVD титрами.\n" -#define MSGTR_DVDinvalidAngle "Неприпустимий номер DVD кута: %d\n" -#define MSGTR_DVDnoIFO "Не можу відкрити IFO файл для DVD титрів %d.\n" -#define MSGTR_DVDnoVOBs "Не можу відкрити титри VOBS (VTS_%02d_1.VOB).\n" +// parser-mecmd.c, parser-mpcmd.c +#define MSGTR_NoFileGivenOnCommandLine "'--' означає кінець опцій, але не було вказано назви файлу у команд. рядку.\n" +#define MSGTR_TheLoopOptionMustBeAnInteger "Опція loop має бути цілим числом: %s\n" +#define MSGTR_UnknownOptionOnCommandLine "Невідома опція команд. рядку: -%s\n" +#define MSGTR_ErrorParsingOptionOnCommandLine "Помилка аналізу опції команд. рядку: -%s\n" +#define MSGTR_InvalidPlayEntry "Невірний елемент програвання %s\n" +#define MSGTR_NotAnMEncoderOption "-%s не є опцією MEncoder \n" +#define MSGTR_NoFileGiven "Файл не вказано\n" -// demuxer.c, demux_*.c: -#define MSGTR_AudioStreamRedefined "Попередження! Заголовок аудіо потоку %d перевизначений!\n" -#define MSGTR_VideoStreamRedefined "Попередження! Заголовок відео потоку %d перевизначений!\n" -#define MSGTR_TooManyAudioInBuffer "\nDEMUXER: Надто багато (%d, %d байтів) аудіо пакетів у буфері!\n" -#define MSGTR_TooManyVideoInBuffer "\nDEMUXER: Надто багато (%d, %d байтів) відео пакетів у буфері!\n" -#define MSGTR_MaybeNI "(можливо ви програєте неперемежений потік/файл або невдалий кодек)\n" -#define MSGTR_SwitchToNi "\nДетектовано погано перемежений AVI файл - переходжу в -ni режим...\n" -#define MSGTR_Detected_XXX_FileFormat "Знайдений %s формат файлу!\n" -#define MSGTR_DetectedAudiofile "Аудіо файл детектовано.\n" -#define MSGTR_NotSystemStream "Не в форматі MPEG System Stream... (можливо, Transport Stream?)\n" -#define MSGTR_FormatNotRecognized "========= Вибачте, формат цього файлу не розпізнаний чи не підтримується ===========\n"\ - "===== Якщо це AVI, ASF або MPEG потік, будь ласка зв'яжіться з автором! ======\n" -#define MSGTR_MissingVideoStream "Відео потік не знайдений!\n" -#define MSGTR_MissingAudioStream "Аудіо потік не знайдений... -> програю без звуку\n" -#define MSGTR_MissingVideoStreamBug "Відео потік загублений!? Зв'яжіться з автором, це мабуть помилка :(\n" - -#define MSGTR_DoesntContainSelectedStream "demux: файл не містить обраний аудіо або відео потік\n" +// m_config.c +#define MSGTR_SaveSlotTooOld "Знайдений слот збереження застарий з lvl %d: %d !!!\n" +#define MSGTR_InvalidCfgfileOption "Опція %s не може бути використана у файлі конфігурації.\n" +#define MSGTR_InvalidCmdlineOption "Опція %s не може бути використана у команд. рядку.\n" +#define MSGTR_InvalidSuboption "Помилка: опція '%s' не має субопцій '%s'.\n" +#define MSGTR_MissingSuboptionParameter "Помилка: в субопції '%s' опції '%s' повинен бути параметр!\n" +#define MSGTR_MissingOptionParameter "Помилка: опція '%s' повинна мати параметр!\n" +#define MSGTR_OptionListHeader "\n І'мя Тип Мін Макс Загальн CL Конф\3n\n" +#define MSGTR_TotalOptions "\nЗагалом: %d опцій\n" +#define MSGTR_ProfileInclusionTooDeep "ПОПЕРЕДЖЕННЯ: Включення профайлу дуже глибоко.\n" +#define MSGTR_NoProfileDefined "Не визначено профайлів.\n" +#define MSGTR_AvailableProfiles "Доступні профайлиs:\n" +#define MSGTR_UnknownProfile "Невідомий профайл '%s'.\n" +#define MSGTR_Profile "Профайл %s: %s\n" -#define MSGTR_NI_Forced "Примусово вибраний" -#define MSGTR_NI_Detected "Знайдений" -#define MSGTR_NI_Message "%s НЕПЕРЕМЕЖЕНИЙ формат AVI файлу!\n" +// m_property.c +#define MSGTR_PropertyListHeader "\n Назва Тип Мін Макс\n\n" +#define MSGTR_TotalProperties "\nЗагалом: %d властивостей\n" -#define MSGTR_UsingNINI "Використання НЕПЕРЕМЕЖЕНОГО або пошкодженого формату AVI файлу!\n" -#define MSGTR_CouldntDetFNo "Не зміг визначити число кадрів (для абсолютного перенесення)\n" -#define MSGTR_CantSeekRawAVI "Не можу переміститися у непроіндексованому потоці .AVI! (вимагається індекс, спробуйте з ключом -idx!)\n" -#define MSGTR_CantSeekFile "Не можу переміщуватися у цьому файлі!\n" +// loader/ldt_keeper.c +#define MSGTR_LOADER_DYLD_Warning "ПОПЕРЕДЖЕННЯ: Намагаюсь використати DLL кодеки але змінна середовища\n DYLD_BIND_AT_LAUNCH не встановлена. Це здається поламка.\n" -#define MSGTR_MOVcomprhdr "MOV: Стиснуті заголовки (поки що) не підтримуються!\n" -#define MSGTR_MOVvariableFourCC "MOV: Попередження! Знайдено перемінний FOURCC!?\n" -#define MSGTR_MOVtooManyTrk "MOV: Попередження! надто багато треків!" -#define MSGTR_FoundAudioStream "==> Знайдено аудіо потік: %d\n" -#define MSGTR_FoundVideoStream "==> Знайдено відео потік: %d\n" -#define MSGTR_DetectedTV "Детектовано ТВ! ;-)\n" -#define MSGTR_ErrorOpeningOGGDemuxer "Неможливо відкрити ogg demuxer.\n" -#define MSGTR_ASFSearchingForAudioStream "ASF: Пошук аудіо потоку (id:%d).\n" -#define MSGTR_CannotOpenAudioStream "Неможливо відкрити аудіо потік: %s\n" -#define MSGTR_CannotOpenSubtitlesStream "Неможливо відкрити потік субтитрів: %s\n" -#define MSGTR_OpeningAudioDemuxerFailed "Не вдалося відкрити аудіо demuxer: %s\n" -#define MSGTR_OpeningSubtitlesDemuxerFailed "Не вдалося відкрити demuxer субтитрів: %s\n" -#define MSGTR_TVInputNotSeekable "TV input is not seekable! (Seeking will probably be for changing channels ;)\n" -#define MSGTR_ClipInfo "Інформація кліпу:\n" - - -// dec_video.c & dec_audio.c: -#define MSGTR_CantOpenCodec "Не зміг відкрити кодек\n" -#define MSGTR_CantCloseCodec "Не зміг закрити кодек\n" - -#define MSGTR_MissingDLLcodec "ПОМИЛКА: Не зміг відкрити необхідний DirectShow кодек: %s\n" -#define MSGTR_ACMiniterror "Не зміг завантажити чи ініціалізувати Win32/ACM AUDIO кодек (загублений DLL файл?)\n" -#define MSGTR_MissingLAVCcodec "Не можу знайти кодек \"%s\" у libavcodec...\n" - -#define MSGTR_MpegNoSequHdr "MPEG: FATAL: КІНЕЦЬ ФАЙЛУ при пошуку послідовності заголовків\n" -#define MSGTR_CannotReadMpegSequHdr "FATAL: Не можу читати послідовність заголовків!\n" -#define MSGTR_CannotReadMpegSequHdrEx "FATAL: Не мочу читати розширення послідовності заголовків!\n" -#define MSGTR_BadMpegSequHdr "MPEG: Погана послідовність заголовків!\n" -#define MSGTR_BadMpegSequHdrEx "MPEG: Погане розширення послідовності заголовків!\n" - -#define MSGTR_ShMemAllocFail "Не можу захопити загальну пам'ять\n" -#define MSGTR_CantAllocAudioBuf "Не можу захопити вихідний буфер аудіо\n" - -#define MSGTR_UnknownAudio "Невідомий чи загублений аудіо формат, програю без звуку\n" - -#define MSGTR_UsingExternalPP "[PP] Використовую зовнішній фільтр обробки, макс q = %d.\n" -#define MSGTR_UsingCodecPP "[PP] Використовую обробку кодека, макс q = %d.\n" -#define MSGTR_VideoAttributeNotSupportedByVO_VD "Відео атрибут '%s' не підтримується вибраними vo & vd.\n" -#define MSGTR_VideoCodecFamilyNotAvailableStr "Запрошений драйвер відео кодеку [%s] (vfm=%s) недосяжний (ввімкніть його під час компіляції)\n" -#define MSGTR_AudioCodecFamilyNotAvailableStr "Запрошений драйвер аудіо кодеку [%s] (afm=%s) недосяжний (ввімкніть його під час компіляції)\n" -#define MSGTR_OpeningVideoDecoder "Відкриваю відео декодер: [%s] %s\n" -#define MSGTR_OpeningAudioDecoder "Відкриваю аудіо декодер: [%s] %s\n" -#define MSGTR_UninitVideoStr "відновлення відео: %s\n" -#define MSGTR_UninitAudioStr "відновлення аудіо: %s\n" -#define MSGTR_VDecoderInitFailed "Збій ініціалізації VDecoder :(\n" -#define MSGTR_ADecoderInitFailed "Збій ініціалізації ADecoder :(\n" -#define MSGTR_ADecoderPreinitFailed "Збій підготування ADecoder :(\n" -#define MSGTR_AllocatingBytesForInputBuffer "dec_audio: Розподіляю %d байт вхідному буферу\n" -#define MSGTR_AllocatingBytesForOutputBuffer "dec_audio: Розподіляю %d + %d = %d байт вихідному буферу\n" - -// LIRC: -#define MSGTR_SettingUpLIRC "Встановлення підтримки lirc...\n" -#define MSGTR_LIRCopenfailed "Невдале відкриття підтримки lirc!\n" -#define MSGTR_LIRCcfgerr "Невдале читання файлу конфігурації LIRC %s!\n" - -// vf.c -#define MSGTR_CouldNotFindVideoFilter "Неможливо знайти відео фільтр '%s'\n" -#define MSGTR_CouldNotOpenVideoFilter "Неможливо відкрити відео фільтр '%s'\n" -#define MSGTR_OpeningVideoFilter "Відкриваю відео фільтр: " -//----------------------------- -#define MSGTR_CannotFindColorspace "Не можу підібрати загальну схему кольорів, навіть додавши 'scale' :(\n" - -// vd.c -#define MSGTR_CodecDidNotSet "VDec: Кодек не встановив sh->disp_w та sh->disp_h, спробую обійти це.\n" -#define MSGTR_VoConfigRequest "VDec: vo config запит - %d x %d (preferred csp: %s)\n" -#define MSGTR_CouldNotFindColorspace "Не можу підібрати підходящу схему кольорів - повтор з -vf scale...\n" -#define MSGTR_MovieAspectIsSet "Відношення сторін %.2f:1 - масштабую аби скоректувати.\n" -#define MSGTR_MovieAspectUndefined "Відношення сторін не вказано - масштабування не використовується.\n" // ====================== GUI messages/buttons ======================== -#ifdef CONFIG_GUI - // --- labels --- -#define MSGTR_About "Про програму" +#define MSGTR_About "Про" #define MSGTR_FileSelect "Вибрати файл..." #define MSGTR_SubtitleSelect "Вибрати субтитри..." -#define MSGTR_OtherSelect "Вибір..." -#define MSGTR_AudioFileSelect "Вибрати зовнішній аудіо канал..." +#define MSGTR_OtherSelect "Вибрати..." +#define MSGTR_AudioFileSelect "Вибрати іншу аудіо доріжку..." #define MSGTR_FontSelect "Вибрати шрифт..." +// Note: If you change MSGTR_PlayList please see if it still fits MSGTR_MENU_PlayList #define MSGTR_PlayList "Список програвання" -#define MSGTR_Equalizer "Еквалайзер" -#define MSGTR_SkinBrowser "Переглядач жупанів" -#define MSGTR_Network "Програвання з мережі..." -#define MSGTR_Preferences "Налаштування" -#define MSGTR_NoMediaOpened "Немає відкритого носію." -#define MSGTR_VCDTrack "Доріжка VCD %d" -#define MSGTR_NoChapter "No chapter" -#define MSGTR_Chapter "Chapter %d" -#define MSGTR_NoFileLoaded "Немає завантаженого файлу." +#define MSGTR_Equalizer "Аквалайзер" +#define MSGTR_ConfigureEqualizer "Налаштувати Аквалайзер" +#define MSGTR_SkinBrowser "Переглядач скінів" +#define MSGTR_Network "Передача потоку..." +// Note: If you change MSGTR_Preferences please see if it still fits MSGTR_MENU_Preferences +#define MSGTR_Preferences "Шалаштування" +#define MSGTR_AudioPreferences "Налаштування аудіо драйверу" +#define MSGTR_NoMediaOpened "Носій не відкритий." +#define MSGTR_VCDTrack "VCD доріжка %d" +#define MSGTR_NoChapter "Без розділу" +#define MSGTR_Chapter "Розділ %d" +#define MSGTR_NoFileLoaded "Файл не завантжено." // --- buttons --- -#define MSGTR_Ok "Так" -#define MSGTR_Cancel "Скасувати" +#define MSGTR_Ok "OK" +#define MSGTR_Cancel "Відміна" #define MSGTR_Add "Додати" #define MSGTR_Remove "Видалити" -#define MSGTR_Clear "Вичистити" -#define MSGTR_Config "Конфігурувати" -#define MSGTR_ConfigDriver "Конфігурувати драйвер" -#define MSGTR_Browse "Проглядати" +#define MSGTR_Clear "Очистити" +#define MSGTR_Config "Налаштунки" +#define MSGTR_ConfigDriver "Налаштувати драйвер" +#define MSGTR_Browse "Дивитись" // --- error messages --- -#define MSGTR_NEMDB "Вибачте, не вистачає пам'яті для відмальовування буферу." -#define MSGTR_NEMFMR "Вибачте, не вистачає пам'яті для відображення меню." -#define MSGTR_IDFGCVD "Вибачте, не знайдено відповідного до GUI вихідного відео драйверу." -#define MSGTR_NEEDLAVC "Вибачте, ви не можете грати не-MPEG файли на вашому DXR3/H+ пристрої без перекодування.\nБудь ласка, ввімкніть lavc в панелі конфігурування DXR3/H+." +#define MSGTR_NEMDB "Вибачте, не достатньо пам'яті для прорисовки буферу." +#define MSGTR_NEMFMR "Вибачте, не достатньо пам'яті для рендерення меню." +#define MSGTR_IDFGCVD "Вибачте, не знаходжу відео драйвер для підтримки GUI." +#define MSGTR_NEEDLAVC "Вибачте, ви не можете програвати не MPEG файли з вашим DXR3/H+ пристроєм без перекодування.\nВключіть lavc у нашалтунки DXR3/H+." +#define MSGTR_UNKNOWNWINDOWTYPE "Знайдено невідомий тип вікна..." // --- skin loader error messages -#define MSGTR_SKIN_ERRORMESSAGE "[жупан] помилка у файлі конфігурації жупана, рядок %d : %s" -#define MSGTR_SKIN_WARNING1 "[жупан] попередження: у файлі конфігурації жупана, рядок %d: widget знайдений але до цього не знайдено \"section\" (%s)" -#define MSGTR_SKIN_WARNING2 "[жупан] попередження: у файлі конфігурації жупана, рядок %d: widget знайдений але до цього не знайдено \"subsection\" (%s)" -#define MSGTR_SKIN_WARNING3 "[жупан] попередження: у файлі конфігурації жупана, рядок %d: цей widget (%s) не підтримує цю subsection" -#define MSGTR_SKIN_BITMAP_16bit "Глибина кольору бітової карти у 16 біт і менше не підтримується (%s).\n" -#define MSGTR_SKIN_BITMAP_FileNotFound "файл не знайдений (%s)\n" -#define MSGTR_SKIN_BITMAP_BMPReadError "помилка читання BMP (%s)\n" -#define MSGTR_SKIN_BITMAP_TGAReadError "помилка читання TGA (%s)\n" -#define MSGTR_SKIN_BITMAP_PNGReadError "помилка читання PNG (%s)\n" -#define MSGTR_SKIN_BITMAP_RLENotSupported "RLE запакований TGA не підтримується (%s)\n" -#define MSGTR_SKIN_BITMAP_UnknownFileType "невідомий тип файлу (%s)\n" -#define MSGTR_SKIN_BITMAP_ConversionError "помилка перетворення 24-біт у 32-біт (%s)\n" +#define MSGTR_SKIN_ERRORMESSAGE "[скін] помилка у налаштунках скіна у рядку %d: %s" +#define MSGTR_SKIN_WARNING1 "[скін] попередження: у налаштунках у рядку %d:\nвіджет (%s) знайдено але \"секцію\" не знайдено" +#define MSGTR_SKIN_WARNING2 "[скін] попередження: у налаштунках у рядку %d:\nвіджет (%s) знайдено але \"підсекцію\" не знайдено" +#define MSGTR_SKIN_WARNING3 "[скін] попередження: у налаштунках у рядку %d:\nця підсекція не підтримується віджетом (%s)" +#define MSGTR_SKIN_SkinFileNotFound "[skin] файл ( %s ) не знайдено.\n" +#define MSGTR_SKIN_SkinFileNotReadable "[skin] файл ( %s ) не прочитати.\n" +#define MSGTR_SKIN_BITMAP_16bit "Глибина матриці у 16 біт і менше не підтримується (%s).\n" +#define MSGTR_SKIN_BITMAP_FileNotFound "Файл не знайдено (%s)\n" +#define MSGTR_SKIN_BITMAP_BMPReadError "Помилка читання BMP (%s)\n" +#define MSGTR_SKIN_BITMAP_TGAReadError "Помилка читання TGA (%s)\n" +#define MSGTR_SKIN_BITMAP_PNGReadError "Помилка читання PNG (%s)\n" +#define MSGTR_SKIN_BITMAP_RLENotSupported "RLE запакований у TGA не підримується (%s)\n" +#define MSGTR_SKIN_BITMAP_UnknownFileType "тип файлу невідомий (%s)\n" +#define MSGTR_SKIN_BITMAP_ConversionError "помилка конвертування з 24 до 32 біт (%s)\n" #define MSGTR_SKIN_BITMAP_UnknownMessage "невідоме повідомлення: %s\n" -#define MSGTR_SKIN_FONT_NotEnoughtMemory "не вистачає пам'яті\n" -#define MSGTR_SKIN_FONT_TooManyFontsDeclared "оголошено надто багато шрифтів\n" -#define MSGTR_SKIN_FONT_FontFileNotFound "файл шрифту не знайдений\n" -#define MSGTR_SKIN_FONT_FontImageNotFound "файл образів шрифту не знайдений\n" -#define MSGTR_SKIN_FONT_NonExistentFontID "неіснуючий ідентифікатор шрифту (%s)\n" +#define MSGTR_SKIN_FONT_NotEnoughtMemory "недостатньо пам'яті\n" +#define MSGTR_SKIN_FONT_TooManyFontsDeclared "Вказано забагато шрифтів.\n" +#define MSGTR_SKIN_FONT_FontFileNotFound "Файл шрифту не знайдено.\n" +#define MSGTR_SKIN_FONT_FontImageNotFound "Font image file not found.\n" +#define MSGTR_SKIN_FONT_NonExistentFontID "ідентифікатор шрифту не існує (%s)\n" #define MSGTR_SKIN_UnknownParameter "невідомий параметр (%s)\n" -#define MSGTR_SKIN_SKINCFG_SkinNotFound "Жупан не знайдено (%s).\n" -#define MSGTR_SKIN_SKINCFG_SkinCfgReadError "Помилка читання файла конфігурації жупана (%s).\n" -#define MSGTR_SKIN_LABEL "Жупани:" +#define MSGTR_SKIN_SKINCFG_SkinNotFound "Скін не знайдено (%s).\n" +#define MSGTR_SKIN_SKINCFG_SelectedSkinNotFound "Обраний скін ( %s ) не знайдено, обираю 'default'...\n" +#define MSGTR_SKIN_SKINCFG_SkinCfgReadError "помилка читання файлу налаштування скіну (%s)\n" +#define MSGTR_SKIN_LABEL "Скіни:" -// --- gtk menus +// --- GTK menus #define MSGTR_MENU_AboutMPlayer "Про програму" #define MSGTR_MENU_Open "Відкрити..." #define MSGTR_MENU_PlayFile "Грати файл..." @@ -651,6 +605,7 @@ static char help_text[]= #define MSGTR_MENU_NextStream "Наступний потік" #define MSGTR_MENU_PrevStream "Попередній потік" #define MSGTR_MENU_Size "Розмір" +#define MSGTR_MENU_HalfSize "Half size" #define MSGTR_MENU_NormalSize "Нормальний розмір" #define MSGTR_MENU_DoubleSize "Подвійний розмір" #define MSGTR_MENU_FullScreen "Повний екран" @@ -663,9 +618,11 @@ static char help_text[]= #define MSGTR_MENU_None "(нема)" #define MSGTR_MENU_Chapters "Розділи" #define MSGTR_MENU_Chapter "Розділ %2d" -#define MSGTR_MENU_AudioLanguages "Авто мова" -#define MSGTR_MENU_SubtitleLanguages "Мова субтитрів" +#define MSGTR_MENU_AudioLanguages "Аудіо мови" +#define MSGTR_MENU_SubtitleLanguages "Мови субтитрів" +#define MSGTR_MENU_PlayList MSGTR_PlayList #define MSGTR_MENU_SkinBrowser "Переглядач жупанів" +#define MSGTR_MENU_Preferences MSGTR_Preferences #define MSGTR_MENU_Exit "Вихід..." #define MSGTR_MENU_Mute "Тиша" #define MSGTR_MENU_Original "Вихідний" @@ -673,9 +630,12 @@ static char help_text[]= #define MSGTR_MENU_AudioTrack "Аудіо доріжка" #define MSGTR_MENU_Track "Доріжка %d" #define MSGTR_MENU_VideoTrack "Відео доріжка" +#define MSGTR_MENU_Subtitles "Субтитри" // --- equalizer +// Note: If you change MSGTR_EQU_Audio please see if it still fits MSGTR_PREFERENCES_Audio #define MSGTR_EQU_Audio "Аудіо" +// Note: If you change MSGTR_EQU_Video please see if it still fits MSGTR_PREFERENCES_Video #define MSGTR_EQU_Video "Відео" #define MSGTR_EQU_Contrast "Контраст: " #define MSGTR_EQU_Brightness "Яскравість: " @@ -702,11 +662,14 @@ static char help_text[]= #define MSGTR_PLAYLIST_DirectoryTree "Дерево каталогу" // --- preferences +#define MSGTR_PREFERENCES_Audio MSGTR_EQU_Audio +#define MSGTR_PREFERENCES_Video MSGTR_EQU_Video #define MSGTR_PREFERENCES_SubtitleOSD "Субтитри й OSD" #define MSGTR_PREFERENCES_Codecs "Кодеки й demuxer" +// Note: If you change MSGTR_PREFERENCES_Misc see if it still fits MSGTR_PREFERENCES_FRAME_Misc #define MSGTR_PREFERENCES_Misc "Різне" - #define MSGTR_PREFERENCES_None "Немає" +#define MSGTR_PREFERENCES_DriverDefault "звичайний драйвер" #define MSGTR_PREFERENCES_AvailableDrivers "Доступні драйвери:" #define MSGTR_PREFERENCES_DoNotPlaySound "Не грати звук" #define MSGTR_PREFERENCES_NormalizeSound "Нормалізувати звук" @@ -732,6 +695,10 @@ static char help_text[]= #define MSGTR_PREFERENCES_SUB_MPSUB "Перетворити вказані субтитри до формату MPlayer" #define MSGTR_PREFERENCES_SUB_SRT "Перетворити вказані субтитри до формату SubViewer (SRT)" #define MSGTR_PREFERENCES_SUB_Overlap "Дозволити/заборонити перекриття субтитрів" +#define MSGTR_PREFERENCES_SUB_USE_ASS "SSA/ASS вивід субтитрів" +#define MSGTR_PREFERENCES_SUB_ASS_USE_MARGINS "Використовувати кордони" +#define MSGTR_PREFERENCES_SUB_ASS_TOP_MARGIN "Угорі: " +#define MSGTR_PREFERENCES_SUB_ASS_BOTTOM_MARGIN "Знизу: " #define MSGTR_PREFERENCES_Font "Шрифт:" #define MSGTR_PREFERENCES_FontFactor "Фактор шрифту:" #define MSGTR_PREFERENCES_PostProcess "Дозволити postprocessing" @@ -746,6 +713,10 @@ static char help_text[]= #define MSGTR_PREFERENCES_FRAME_PostProcess "Postprocessing" #define MSGTR_PREFERENCES_FRAME_CodecDemuxer "Кодек й demuxer" #define MSGTR_PREFERENCES_FRAME_Cache "Кеш" +#define MSGTR_PREFERENCES_FRAME_Misc MSGTR_PREFERENCES_Misc +#define MSGTR_PREFERENCES_Audio_Device "Пристрій:" +#define MSGTR_PREFERENCES_Audio_Mixer "Мікшер:" +#define MSGTR_PREFERENCES_Audio_MixerChannel "Канал мікшеру:" #define MSGTR_PREFERENCES_Message "Не забудьте, що вам треба перезапустити програвання для набуття чинності деяких параметрів!" #define MSGTR_PREFERENCES_DXR3_VENC "Відео кодек:" #define MSGTR_PREFERENCES_DXR3_LAVC "Використовувати LAVC (FFmpeg)" @@ -771,6 +742,7 @@ static char help_text[]= #define MSGTR_PREFERENCES_FontEncoding20 "Thai charset (CP874)" #define MSGTR_PREFERENCES_FontEncoding21 "Cyrillic Windows (CP1251)" #define MSGTR_PREFERENCES_FontEncoding22 "Slavic/Central European Windows (CP1250)" +#define MSGTR_PREFERENCES_FontEncoding23 "Arabic Windows (CP1256)" #define MSGTR_PREFERENCES_FontNoAutoScale "Без автомасштабування" #define MSGTR_PREFERENCES_FontPropWidth "Пропорційно ширині кадру" #define MSGTR_PREFERENCES_FontPropHeight "Пропорційно висоті кадру" @@ -784,20 +756,310 @@ static char help_text[]= #define MSGTR_PREFERENCES_CacheSize "Розмір кешу: " #define MSGTR_PREFERENCES_LoadFullscreen "Стартувати в полний екран" #define MSGTR_PREFERENCES_SaveWinPos "Зберігати положення вікна" -#define MSGTR_PREFERENCES_XSCREENSAVER "Stop XScreenSaver" +#define MSGTR_PREFERENCES_XSCREENSAVER "Зупинити XScreenSaver" #define MSGTR_PREFERENCES_PlayBar "Дозволити лінійку програвання" -#define MSGTR_PREFERENCES_AutoSync "AutoSync on/off" +#define MSGTR_PREFERENCES_AutoSync "AutoSync ув/вимк" #define MSGTR_PREFERENCES_AutoSyncValue "Autosync: " #define MSGTR_PREFERENCES_CDROMDevice "CD-ROM пристрій:" #define MSGTR_PREFERENCES_DVDDevice "DVD пристрій:" #define MSGTR_PREFERENCES_FPS "Кадрів на секунду:" #define MSGTR_PREFERENCES_ShowVideoWindow "Показувати неактивне вікно зображення" +#define MSGTR_PREFERENCES_ArtsBroken "Новіші версії aRts не сумісні"\ + "з GTK 1.x та спричинять помилку GMPlayer!" +// -- aboutbox #define MSGTR_ABOUT_UHU "GUI розробку спонсовано UHU Linux\n" +#define MSGTR_ABOUT_Contributors "Розробники коду та документації\n" +#define MSGTR_ABOUT_Codecs_libs_contributions "Кодеки та сторонні бібліотеки\n" +#define MSGTR_ABOUT_Translations "Переклади\n" +#define MSGTR_ABOUT_Skins "Жупани\n" // --- messagebox -#define MSGTR_MSGBOX_LABEL_FatalError "фатальна помилка..." -#define MSGTR_MSGBOX_LABEL_Error "помилка..." -#define MSGTR_MSGBOX_LABEL_Warning "попередження..." +#define MSGTR_MSGBOX_LABEL_FatalError "Фатальна помилка!" +#define MSGTR_MSGBOX_LABEL_Error "Помилка!" +#define MSGTR_MSGBOX_LABEL_Warning "Попередження!" + +// bitmap.c +#define MSGTR_NotEnoughMemoryC32To1 "[c32to1] недостатньо пам'яті для картинки\n" +#define MSGTR_NotEnoughMemoryC1To32 "[c1to32] недостатньо пам'яті для картинки\n" + +// cfg.c +#define MSGTR_ConfigFileReadError "[cfg] помилка читання файлу налаштунків ...\n" +#define MSGTR_UnableToSaveOption "[cfg] Не можу зберегти '%s' опцію.\n" + +// interface.c +#define MSGTR_DeletingSubtitles "[GUI] Видаляю субтитри.\n" +#define MSGTR_LoadingSubtitles "[GUI] Вантажу субтитри: %s\n" +#define MSGTR_AddingVideoFilter "[GUI] Додаю відео фільтр: %s\n" +#define MSGTR_RemovingVideoFilter "[GUI] Видаляю відео фільтр: %s\n" + +// mw.c +#define MSGTR_NotAFile "Здається, це не файл: %s !\n" + +// ws.c +#define MSGTR_WS_CouldNotOpenDisplay "[ws] Не можу відкрити дисплей.\n" +#define MSGTR_WS_RemoteDisplay "[ws] Віддалений дисплей, вимикаю XMITSHM.\n" +#define MSGTR_WS_NoXshm "[ws] Вибачте, ваша система не підтримує розширення загальної пам'яті X.\n" +#define MSGTR_WS_NoXshape "[ws] Вибачте, здається, ваша система не підтримує розширення XShape.\n" +#define MSGTR_WS_ColorDepthTooLow "[ws] Вибачте, глибина кольору занизька.\n" +#define MSGTR_WS_TooManyOpenWindows "[ws] Забагато відкри