From f78c49e030f3cfbf12e8ae73fcae6d804dfd7e04 Mon Sep 17 00:00:00 2001 From: reimar Date: Sat, 14 Feb 2009 08:22:49 +0000 Subject: Add MP_IMGTYPE_NUMBERED which gives access to the kind of mp_image_t that are numbered and have a "in use" flag which is necessary for proper buffer management as e.g. H.264 direct-rendering needs and is already used successfully for the -vo vdpau work-in-progress. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28550 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpcodecs/mp_image.h | 7 ++++++- libmpcodecs/vf.c | 17 ++++++++++++++++- libmpcodecs/vf.h | 3 +++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/libmpcodecs/mp_image.h b/libmpcodecs/mp_image.h index 512f83e8c5..ad92421787 100644 --- a/libmpcodecs/mp_image.h +++ b/libmpcodecs/mp_image.h @@ -53,6 +53,8 @@ // buffer type was printed (do NOT set this flag - it's for INTERNAL USE!!!) #define MP_IMGFLAG_TYPE_DISPLAYED 0x8000 +// set if it can not be reused yet (for MP_IMGTYPE_NUMBERED) +#define MP_IMGFLAG_IN_USE 0x10000 // codec doesn't support any form of direct rendering - it has own buffer // allocation. so we just export its buffer pointers: @@ -65,6 +67,8 @@ #define MP_IMGTYPE_IP 3 // I+P+B type, requires 2+ independent static R/W and 1+ temp WO buffers #define MP_IMGTYPE_IPB 4 +// Upper 16 bits give desired buffer number, -1 means get next available +#define MP_IMGTYPE_NUMBERED 5 #define MP_MAX_PLANES 4 @@ -76,8 +80,9 @@ #define MP_IMGFIELD_INTERLACED 0x20 typedef struct mp_image_s { - unsigned short flags; + unsigned int flags; unsigned char type; + int number; unsigned char bpp; // bits/pixel. NOT depth! for RGB it will be n*8 unsigned int imgfmt; int width,height; // stored dimensions diff --git a/libmpcodecs/vf.c b/libmpcodecs/vf.c index cd181156f4..2371b0fdff 100644 --- a/libmpcodecs/vf.c +++ b/libmpcodecs/vf.c @@ -253,6 +253,7 @@ void vf_mpi_clear(mp_image_t* mpi,int x0,int y0,int w,int h){ mp_image_t* vf_get_image(vf_instance_t* vf, unsigned int outfmt, int mp_imgtype, int mp_imgflag, int w, int h){ mp_image_t* mpi=NULL; int w2; + int number = mp_imgtype >> 16; #ifdef MP_DEBUG assert(w == -1 || w >= vf->w); @@ -275,7 +276,7 @@ mp_image_t* vf_get_image(vf_instance_t* vf, unsigned int outfmt, int mp_imgtype, // Note: we should call libvo first to check if it supports direct rendering // and if not, then fallback to software buffers: - switch(mp_imgtype){ + switch(mp_imgtype & 0xff){ case MP_IMGTYPE_EXPORT: if(!vf->imgctx.export_images[0]) vf->imgctx.export_images[0]=new_mp_image(w2,h); mpi=vf->imgctx.export_images[0]; @@ -299,6 +300,19 @@ mp_image_t* vf_get_image(vf_instance_t* vf, unsigned int outfmt, int mp_imgtype, mpi=vf->imgctx.static_images[vf->imgctx.static_idx]; vf->imgctx.static_idx^=1; break; + case MP_IMGTYPE_NUMBERED: + if (number == -1) { + int i; + for (i = 0; i < NUM_NUMBERED_MPI; i++) + if (!vf->imgctx.numbered_images[i] || !(vf->imgctx.numbered_images[i]->flags & MP_IMGFLAG_IN_USE)) + break; + number = i; + } + if (number < 0 || number >= NUM_NUMBERED_MPI) return NULL; + if (!vf->imgctx.numbered_images[number]) vf->imgctx.numbered_images[number] = new_mp_image(w2,h); + mpi = vf->imgctx.numbered_images[number]; + mpi->number = number; + break; } if(mpi){ mpi->type=mp_imgtype; @@ -306,6 +320,7 @@ mp_image_t* vf_get_image(vf_instance_t* vf, unsigned int outfmt, int mp_imgtype, // keep buffer allocation status & color flags only: // mpi->flags&=~(MP_IMGFLAG_PRESERVE|MP_IMGFLAG_READABLE|MP_IMGFLAG_DIRECT); mpi->flags&=MP_IMGFLAG_ALLOCATED|MP_IMGFLAG_TYPE_DISPLAYED|MP_IMGFLAGMASK_COLORS; + mpi->flags |= MP_IMGFLAG_IN_USE; // accept restrictions & draw_slice flags only: mpi->flags|=mp_imgflag&(MP_IMGFLAGMASK_RESTRICTIONS|MP_IMGFLAG_DRAW_CALLBACK); if(!vf->draw_slice) mpi->flags&=~MP_IMGFLAG_DRAW_CALLBACK; diff --git a/libmpcodecs/vf.h b/libmpcodecs/vf.h index a2617ff164..e96d3fb26d 100644 --- a/libmpcodecs/vf.h +++ b/libmpcodecs/vf.h @@ -16,10 +16,13 @@ typedef struct vf_info_s { const void* opts; } vf_info_t; +#define NUM_NUMBERED_MPI 50 + typedef struct vf_image_context_s { mp_image_t* static_images[2]; mp_image_t* temp_images[1]; mp_image_t* export_images[1]; + mp_image_t* numbered_images[NUM_NUMBERED_MPI]; int static_idx; } vf_image_context_t; -- cgit v1.2.3 From 8c1978cc265ececda2a30ea40bea0de52f4fc1d1 Mon Sep 17 00:00:00 2001 From: reimar Date: Sat, 14 Feb 2009 08:29:45 +0000 Subject: Add support for image formats and codecs used by VDPAU git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28551 b3059339-0415-0410-9bf9-f77b7e298cf2 --- codec-cfg.c | 6 ++++++ etc/codecs.conf | 55 ++++++++++++++++++++++++++++++++++++++++++++++++ libmpcodecs/img_format.c | 5 +++++ libmpcodecs/img_format.h | 10 +++++++++ libmpcodecs/mp_image.h | 4 ++++ 5 files changed, 80 insertions(+) diff --git a/codec-cfg.c b/codec-cfg.c index 221c88dd18..bb09f109fd 100644 --- a/codec-cfg.c +++ b/codec-cfg.c @@ -182,6 +182,12 @@ static int add_to_format(char *s, char *alias,unsigned int *fourcc, unsigned int {"IDCT_MPEG2",IMGFMT_XVMC_IDCT_MPEG2}, {"MOCO_MPEG2",IMGFMT_XVMC_MOCO_MPEG2}, + {"VDPAU_MPEG1",IMGFMT_VDPAU_MPEG1}, + {"VDPAU_MPEG2",IMGFMT_VDPAU_MPEG2}, + {"VDPAU_H264",IMGFMT_VDPAU_H264}, + {"VDPAU_WMV3",IMGFMT_VDPAU_WMV3}, + {"VDPAU_VC1",IMGFMT_VDPAU_VC1}, + {NULL, 0} }; diff --git a/etc/codecs.conf b/etc/codecs.conf index 8c584979f8..a269adb9d5 100644 --- a/etc/codecs.conf +++ b/etc/codecs.conf @@ -272,6 +272,33 @@ videocodec ffmpeg12mc out IDCT_MPEG2 out MOCO_MPEG2 +videocodec ffmpeg12vdpau + info "FFmpeg MPEG-1/2 (VDPAU)" + status working + format 0x10000001 ; MPEG-1 + format 0x10000002 ; MPEG-2 + fourcc mpg1,mpg2,MPG2 + fourcc "DVR " + fourcc hdv1 + fourcc hdv2 + fourcc PIM1 ; Pinnacle hardware-MPEG-1 + fourcc VCR2 + fourcc MPEG + fourcc hdv3 ; HDV 1080i50 + fourcc hdv5 ; HDV 720p25 + fourcc mx5p ; MPEG IMX 625/50 (50 Mb/s) + fourcc MMES,mmes ; matrox mpeg2 in avi + fourcc hdv6,hdv7,hdv8 + fourcc xdv1,xdv2,xdv3 + fourcc xdv4,xdv5,xdv6 + fourcc xdv7,xdv8,xdv9 + fourcc xdva,xdvb,xdvc + fourcc xdvd,xdve,xdvf + driver ffmpeg + dll "mpegvideo_vdpau" + out VDPAU_MPEG1 + out VDPAU_MPEG2 + ; we have only native open source codecs for these: videocodec ffnuv @@ -771,6 +798,14 @@ videocodec ffwmv3 dll wmv3 out YV12,I420,IYUV +videocodec ffwmv3vdpau + info "FFmpeg WMV3/WMV9 (VDPAU)" + status working + fourcc WMV3,wmv3 + driver ffmpeg + dll wmv3_vdpau + out VDPAU_WMV3 + videocodec ffvc1 info "FFmpeg WVC1" status buggy @@ -780,6 +815,14 @@ videocodec ffvc1 dll vc1 out YV12,I420,IYUV +videocodec ffvc1vdpau + info "FFmpeg WVC1 (VDPAU)" + status working + fourcc WVC1,wvc1 + driver ffmpeg + dll vc1_vdpau + out VDPAU_VC1 + videocodec ffh264 info "FFmpeg H.264" status working @@ -792,6 +835,18 @@ videocodec ffh264 dll h264 out YV12,I420,IYUV +videocodec ffh264vdpau + info "FFmpeg H.264 (VDPAU)" + status working + fourcc H264,h264 + fourcc X264,x264 + fourcc avc1,AVC1 + fourcc davc,DAVC + format 0x10000005 + driver ffmpeg + dll h264_vdpau + out VDPAU_H264 + videocodec ffsvq3 info "FFmpeg Sorenson Video v3 (SVQ3)" status working diff --git a/libmpcodecs/img_format.c b/libmpcodecs/img_format.c index 30df2391f4..789e473f84 100644 --- a/libmpcodecs/img_format.c +++ b/libmpcodecs/img_format.c @@ -67,6 +67,11 @@ const char *vo_format_name(int format) case IMGFMT_ZRMJPEGIB: return "Zoran MJPEG bottom field first"; case IMGFMT_XVMC_MOCO_MPEG2: return "MPEG1/2 Motion Compensation"; case IMGFMT_XVMC_IDCT_MPEG2: return "MPEG1/2 Motion Compensation and IDCT"; + case IMGFMT_VDPAU_MPEG1: return "MPEG1 VDPAU acceleration"; + case IMGFMT_VDPAU_MPEG2: return "MPEG2 VDPAU acceleration"; + case IMGFMT_VDPAU_H264: return "H.264 VDPAU acceleration"; + case IMGFMT_VDPAU_WMV3: return "WMV3 VDPAU acceleration"; + case IMGFMT_VDPAU_VC1: return "VC1 VDPAU acceleration"; } snprintf(unknown_format,20,"Unknown 0x%04x",format); return unknown_format; diff --git a/libmpcodecs/img_format.h b/libmpcodecs/img_format.h index c15269b580..3922fdc5f3 100644 --- a/libmpcodecs/img_format.h +++ b/libmpcodecs/img_format.h @@ -107,6 +107,16 @@ #define IMGFMT_XVMC_MOCO_MPEG2 (IMGFMT_XVMC|0x02) #define IMGFMT_XVMC_IDCT_MPEG2 (IMGFMT_XVMC|0x82) +// VDPAU specific format. +#define IMGFMT_VDPAU 0x1DC80000 +#define IMGFMT_VDPAU_MASK 0xFFFF0000 +#define IMGFMT_IS_VDPAU(fmt) (((fmt)&IMGFMT_VDPAU_MASK)==IMGFMT_VDPAU) +#define IMGFMT_VDPAU_MPEG1 (IMGFMT_VDPAU|0x01) +#define IMGFMT_VDPAU_MPEG2 (IMGFMT_VDPAU|0x02) +#define IMGFMT_VDPAU_H264 (IMGFMT_VDPAU|0x03) +#define IMGFMT_VDPAU_WMV3 (IMGFMT_VDPAU|0x04) +#define IMGFMT_VDPAU_VC1 (IMGFMT_VDPAU|0x05) + typedef struct { void* data; int size; diff --git a/libmpcodecs/mp_image.h b/libmpcodecs/mp_image.h index ad92421787..94fd0d4758 100644 --- a/libmpcodecs/mp_image.h +++ b/libmpcodecs/mp_image.h @@ -118,6 +118,10 @@ static inline void mp_image_setfmt(mp_image_t* mpi,unsigned int out_fmt){ mpi->bpp=0; return; } + if(IMGFMT_IS_VDPAU(out_fmt)){ + mpi->bpp=0; + return; + } if(IMGFMT_IS_XVMC(out_fmt)){ mpi->bpp=0; return; -- cgit v1.2.3 From 5da2252a2c58c829284839925e357828f80f6762 Mon Sep 17 00:00:00 2001 From: reimar Date: Sat, 14 Feb 2009 08:37:29 +0000 Subject: Cosmetics: handle all special/compressed formats in a single if in mp_image_setfmt git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28552 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpcodecs/mp_image.h | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/libmpcodecs/mp_image.h b/libmpcodecs/mp_image.h index 94fd0d4758..41e1b8fa8c 100644 --- a/libmpcodecs/mp_image.h +++ b/libmpcodecs/mp_image.h @@ -108,21 +108,10 @@ typedef struct mp_image_s { static inline void mp_image_setfmt(mp_image_t* mpi,unsigned int out_fmt){ mpi->flags&=~(MP_IMGFLAG_PLANAR|MP_IMGFLAG_YUV|MP_IMGFLAG_SWAPPED); mpi->imgfmt=out_fmt; - if(out_fmt == IMGFMT_MPEGPES){ - mpi->bpp=0; - return; - } - if(out_fmt == IMGFMT_ZRMJPEGNI || - out_fmt == IMGFMT_ZRMJPEGIT || - out_fmt == IMGFMT_ZRMJPEGIB){ - mpi->bpp=0; - return; - } - if(IMGFMT_IS_VDPAU(out_fmt)){ - mpi->bpp=0; - return; - } - if(IMGFMT_IS_XVMC(out_fmt)){ + // compressed formats + if(out_fmt == IMGFMT_MPEGPES || + out_fmt == IMGFMT_ZRMJPEGNI || out_fmt == IMGFMT_ZRMJPEGIT || out_fmt == IMGFMT_ZRMJPEGIB || + IMGFMT_IS_VDPAU(out_fmt) || IMGFMT_IS_XVMC(out_fmt)){ mpi->bpp=0; return; } -- cgit v1.2.3 From 1147a78695197921cb1a8d85501323e3065b9662 Mon Sep 17 00:00:00 2001 From: diego Date: Sat, 14 Feb 2009 11:43:14 +0000 Subject: Replace fprintf call by mp_msg, fixes the warning: In file included from libmpcodecs/vf_fspp.c:58: libmpcodecs/mp_image.h: In function 'mp_image_setfmt': libmpcodecs/mp_image.h:207: warning: implicit declaration of function 'please_use_av_log_instead_of_fprintf' git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28553 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpcodecs/mp_image.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libmpcodecs/mp_image.h b/libmpcodecs/mp_image.h index 41e1b8fa8c..7d82707d10 100644 --- a/libmpcodecs/mp_image.h +++ b/libmpcodecs/mp_image.h @@ -4,6 +4,7 @@ #include #include #include +#include "mp_msg.h" //--------- codec's requirements (filled by the codec/vf) --------- @@ -204,7 +205,7 @@ static inline void mp_image_setfmt(mp_image_t* mpi,unsigned int out_fmt){ mpi->chroma_y_shift=1; return; } - fprintf(stderr,"mp_image: unknown out_fmt: 0x%X\n",out_fmt); + mp_msg(MSGT_DECVIDEO,MSGL_WARN,"mp_image: unknown out_fmt: 0x%X\n",out_fmt); mpi->bpp=0; } #endif -- cgit v1.2.3 From 3d7071594c9823cbb40f256dec7b6f3c081ce2ed Mon Sep 17 00:00:00 2001 From: diego Date: Sat, 14 Feb 2009 13:06:52 +0000 Subject: partial update, patch by sevenfourk, sevenfourk gmail com git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28554 b3059339-0415-0410-9bf9-f77b7e298cf2 --- help/help_mp-uk.h | 313 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 282 insertions(+), 31 deletions(-) diff --git a/help/help_mp-uk.h b/help/help_mp-uk.h index 564e4d3b2c..97208d0353 100644 --- a/help/help_mp-uk.h +++ b/help/help_mp-uk.h @@ -1,7 +1,9 @@ -/* Translated by: Volodymyr M. Lisivka , - Andriy Gritsenko +/* Translated by: Volodymyr M. Lisivka , + Andriy Gritsenko + sevenfourk Was synced with help_mp-en.h: rev 1.105 - ========================= MPlayer help =========================== */ + +========================= MPlayer help =========================== */ #ifdef HELP_MP_DEFINE_STATIC static char help_text[]= @@ -15,12 +17,10 @@ static char help_text[]= #endif #ifdef CONFIG_DVDREAD " dvd://<номер титрів> грати DVD титри/трек з пристрою замість файлу\n" -" -alang/-slang вибрати мову DVD аудіо/субтитрів (двосимвольний код країни)\n" #endif +" -alang/-slang вибрати мову DVD аудіо/субтитрів (двосимвольний код країни)\n" " -ss <час> переміститися на задану (секунди або ГГ:ХХ:СС) позицію\n" " -nosound без звуку\n" -" -stereo <режим> вибір MPEG1 стерео виводу (0:стерео 1:лівий 2:правий)\n" -" -channels номер вихідних каналів звуку\n" " -fs -vm -zoom повноекранне програвання (повноекр.,зміна відео,масштабування\n" " -x -y маштабувати картинку до * [якщо -vo драйвер підтримує!]\n" " -sub вказати файл субтитрів (див. також -subfps, -subdelay)\n" @@ -28,9 +28,7 @@ static char help_text[]= " -vid x -aid y опції для вибору відео (x) і аудіо (y) потоку для програвання\n" " -fps x -srate y опції для зміни відео (x кадр/сек) і аудіо (y Hz) швидкості\n" " -pp дозволити фільтр (0-4 для DivX, 0-63 для mpegs)\n" -" -nobps використовувати альтернативний метод синхронізації A-V для AVI файлів (може допомогти!)\n" " -framedrop дозволити втрату кадрів (для повільних машин)\n" -" -wid використовувати існуюче вікно для відео виводу (корисно для plugger!)\n" "\n" "Клавіші:\n" " <- або -> перемотування вперед/назад на 10 секунд\n" @@ -52,7 +50,6 @@ static char help_text[]= // ========================= MPlayer messages =========================== // mplayer.c: - #define MSGTR_Exiting "\nВиходимо...\n" #define MSGTR_ExitingHow "\nВиходимо... (%s)\n" #define MSGTR_Exit_quit "Вихід" @@ -67,12 +64,13 @@ static char help_text[]= #define MSGTR_CantLoadSub "Не можу завантажити субтитри: %s\n" #define MSGTR_DumpSelectedStreamMissing "dump: FATAL: обраний потік загублений!\n" #define MSGTR_CantOpenDumpfile "Не можу відкрити файл дампу!!!\n" -#define MSGTR_CoreDumped "core dumped :)\n" -#define MSGTR_FPSnotspecified "Кількість кадрів на секунду не вказано (або неприпустиме значення) у заголовку! Використовуйте ключ -fps!\n" -#define MSGTR_CantFindAudioCodec "Не можу знайти кодек для аудіо формату 0x%X!\n" +#define MSGTR_CoreDumped "Створено дамп ядра :)\n" +#define MSGTR_FPSnotspecified "Не вказано чи невірна кількість кадрів, застосуйте опцію -fps.\n" +#define MSGTR_TryForceAudioFmtStr "Намагаюсь форсувати групу аудіо кодеків %s...\n" #define MSGTR_CantFindVideoCodec "Не можу знайти кодек для відео формату 0x%X!\n" -#define MSGTR_VOincompCodec "Вибачте, обраний video_out пристрій не сумісний з цим кодеком.\n" -#define MSGTR_CannotInitVO "FATAL: Не можу ініціалізувати відео драйвер!\n" +#define MSGTR_RTFMCodecs "Прочитайте DOCS/HTML/en/codecs.html!\n" +#define MSGTR_TryForceVideoFmtStr "Намагаюсь форсувати групу відео кодеків %s...\n" +#define MSGTR_CannotInitVO "ФАТАЛЬНО: Не можу ініціалізувати відео драйвер!\n" #define MSGTR_CannotInitAO "не можу відкрити/ініціалізувати аудіо пристрій -> ГРАЮ БЕЗ ЗВУКУ\n" #define MSGTR_StartPlaying "Початок програвання...\n" @@ -83,7 +81,7 @@ static char help_text[]= "!!! Можливі причини, проблеми, обхідні шляхи: \n"\ "- Найбільш загальні: поганий/сирий _аудіо_ драйвер :\n"\ " - спробуйте -ao sdl або використовуйте ALSA 0.5 або емуляцію oss на ALSA 0.9.\n"\ -" - Experiment with different values for -autosync, 30 is a good start.\n"\ +" - Експеримент з різними значеннями для -autosync, спробуйте 30 .\n"\ "- Повільний відео вивід.\n"\ " - спробуйте інший -vo драйвер (список: -vo help) або спробуйте з -framedrop!\n"\ "- Повільний ЦП. Не намагайтеся відтворювати великі dvd/divx на повільних\n"\ @@ -120,23 +118,127 @@ static char help_text[]= #define MSGTR_Paused "\n ===== ПАУЗА =====\r" #define MSGTR_PlaylistLoadUnable "\nНеможливо завантажити playlist %s.\n" #define MSGTR_Exit_SIGILL_RTCpuSel \ -"- MPlayer crashed by an 'Illegal Instruction'.\n"\ -" It may be a bug in our new runtime CPU-detection code...\n"\ -" Please read DOCS/HTML/en/bugreports.html.\n" +"- MPlayer зламався через 'Невірні інструкції'.\n"\ +" Може бути помилка у вашому новому коду визначення типу CPU...\n"\ +" Будь-ласка перегляньте DOCS/HTML/en/bugreports.html.\n" #define MSGTR_Exit_SIGILL \ -"- MPlayer crashed by an 'Illegal Instruction'.\n"\ -" It usually happens when you run it on a CPU different than the one it was\n"\ -" compiled/optimized for.\n Verify this!\n" +"- MPlayer зламався через 'Невірні інструкції'.\n"\ +" Іноді таке трапляється під час запуску програвача на CPU що відрізняється від того, на якому він\n"\ +" був зібраний/оптимізований.\n Перевірте!\n" #define MSGTR_Exit_SIGSEGV_SIGFPE \ -"- MPlayer crashed by bad usage of CPU/FPU/RAM.\n"\ -" Recompile MPlayer with --enable-debug and make a 'gdb' backtrace and\n"\ -" disassembly. For details, see DOCS/HTML/en/bugreports_what.html#bugreports_crash\n" +"- MPlayer зламався через невірне використання CPU/FPU/RAM.\n"\ +" Зберіть знову MPlayer з --enable-debug а зробіть 'gdb' backtrace та\n"\ +" дизасемблювання. Для довідок, перегляньте DOCS/HTML/en/bugreports_what.html#bugreports_crash\n" #define MSGTR_Exit_SIGCRASH \ -"- MPlayer crashed. This shouldn't happen.\n"\ -" It can be a bug in the MPlayer code _or_ in your drivers _or_ in your\n"\ -" gcc version. If you think it's MPlayer's fault, please read\n"\ -" DOCS/HTML/en/bugreports.html and follow the instructions there. We can't and\n"\ -" won't help unless you provide this information when reporting a possible bug.\n" +"- MPlayer зламався. Цього не повинно було трапитися.\n"\ +" Може бути помилка у коді MPlayer _або_ ваших драйверах _або_ через\n"\ +" версію gcc. Якщо важаєте що, це помилка MPlayer, будь-ласка читайте\n"\ +" DOCS/HTML/en/bugreports.html та слідкуєте інструкціям. Ми можемо\n"\ +" допомогти лише у разі забезпечення інформація коли доповідаєте про помилку.\n" +#define MSGTR_LoadingConfig "Завантаження конфігурації '%s'\n" +#define MSGTR_LoadingProtocolProfile "Завантаження профілю для протоколу '%s'\n" +#define MSGTR_LoadingExtensionProfile "Завантаження профілю для розширення '%s'\n" +#define MSGTR_AddedSubtitleFile "СУБТИТРИ: Додано файл субтитрів (%d): %s\n" +#define MSGTR_RemovedSubtitleFile "СУБТИТРИ: Видалено файл субтитрів (%d): %s\n" +#define MSGTR_ErrorOpeningOutputFile "Помилка при відкритті файлу [%s] для запису!\n" +#define MSGTR_CommandLine "Командний рядок:" +#define MSGTR_RTCDeviceNotOpenable "Не можу відкрити %s: %s (користувач повинен мати права читання для файлу.)\n" +#define MSGTR_LinuxRTCInitErrorIrqpSet "Помилка ініцілізації Linux RTC у ioctl (rtc_irqp_set %lu): %s\n" +#define MSGTR_IncreaseRTCMaxUserFreq "Спробуйте додати \"echo %lu > /proc/sys/dev/rtc/max-user-freq\" до скриптів запуску системи.\n" +#define MSGTR_LinuxRTCInitErrorPieOn "Помилка ініціалізації Linux RTC у ioctl (rtc_pie_on): %s\n" +#define MSGTR_UsingTimingType "Використовую %s синхронізацію.\n" +#define MSGTR_NoIdleAndGui "Опція -idle не викориcтовується в GMPlayer.\n" +#define MSGTR_MenuInitialized "Меню ініціалізовано: %s\n" +#define MSGTR_MenuInitFailed "Ініціалізація меню невдале.\n" +#define MSGTR_Getch2InitializedTwice "ПОПЕРЕДЖЕННЯ: getch2_init визвано двічі!\n" +#define MSGTR_DumpstreamFdUnavailable "Не можу створити дамп цього потоку - не має доступного дексриптору.\n" +#define MSGTR_CantOpenLibmenuFilterWithThisRootMenu "Не можу відкрити відео фільтр libmenu з цим кореневим меню %s.\n" +#define MSGTR_AudioFilterChainPreinitError "Помилка у ланці pre-init аудіо фільтру!\n" +#define MSGTR_LinuxRTCReadError "Помилка читання Linux RTC: %s\n" +#define MSGTR_SoftsleepUnderflow "Попередження! Недупустиме низьке значення затримки програми!\n" +#define MSGTR_DvdnavNullEvent "Подія DVDNAV NULL?!\n" +#define MSGTR_DvdnavHighlightEventBroken "Подія DVDNAV: Подія виділення зламана\n" +#define MSGTR_DvdnavEvent "Подія DVDNAV: %s\n" +#define MSGTR_DvdnavHighlightHide "Подія DVDNAV: Виділення сховано\n" +#define MSGTR_DvdnavStillFrame "######################################## Подія DVDNAV: Стоп-кадр: %d сек\n" +#define MSGTR_DvdnavNavStop "Подія DVDNAV: Зупинка Nav\n" +#define MSGTR_DvdnavNavNOP "Подія DVDNAV: Nav NOP\n" +#define MSGTR_DvdnavNavSpuStreamChangeVerbose "Подія DVDNAV: Зміна SPU потоку Nav: фізично: %d/%d/%d логічно: %d\n" +#define MSGTR_DvdnavNavSpuStreamChange "Подія DVDNAV: Зміна SPU потоку Nav: фізично: %d логічно: %d\n" +#define MSGTR_DvdnavNavAudioStreamChange "Подія DVDNAV: Зміна Аудіо потоку Nav: фізично: %d логічно: %d\n" +#define MSGTR_DvdnavNavVTSChange "Подія DVDNAV: Зміна Nav VTS\n" +#define MSGTR_DvdnavNavCellChange "Подія DVDNAV: Зміна Nav Cell\n" +#define MSGTR_DvdnavNavSpuClutChange "Подія DVDNAV: Зміна Nav SPU CLUT\n" +#define MSGTR_DvdnavNavSeekDone "Подія DVDNAV: Nav Seek зроблено\n" +#define MSGTR_MenuCall "Виклик меню\n" + +#define MSGTR_EdlOutOfMem "Не можу виділити достатньо пам'яті для збереження даних EDL.\n" +#define MSGTR_EdlRecordsNo "Читання %d EDL дій.\n" +#define MSGTR_EdlQueueEmpty "Немає дій EDL які треба виконати.\n" +#define MSGTR_EdlCantOpenForWrite "Не може відкрити EDL файл [%s] для запису.\n" +#define MSGTR_EdlCantOpenForRead "Не може відкрити EDL файл [%s] для читання.\n" +#define MSGTR_EdlNOsh_video "Не можу використати EDL без відео, вимикаю.\n" +#define MSGTR_EdlNOValidLine "Невірний рядок EDL: %s\n" +#define MSGTR_EdlBadlyFormattedLine "Погано відформатований EDL рядок [%d], пропускаю.\n" +#define MSGTR_EdlBadLineOverlap "Остання зупинка була [%f]; наступний старт [%f].\n"\ +"Записи повинні бути у хронологічному порядку, не можу перекрити. Пропускаю.\n" +#define MSGTR_EdlBadLineBadStop "Час зупинки повинен бути після часу старту.\n" +#define MSGTR_EdloutBadStop "Ігнорування EDL відмінено, останній start > stop\n" +#define MSGTR_EdloutStartSkip "Старт EDL пропуску, натисніть 'i' знов, щоб завершити блок.\n" +#define MSGTR_EdloutEndSkip "Кінець EDL пропуску, рядок записано.\n" +#define MSGTR_MPEndposNoSizeBased "Опція -endpos у MPlayer ще не підтримує одиниці ромзіру.\n" + +// mplayer.c OSD +#define MSGTR_OSDenabled "увімкнено" +#define MSGTR_OSDdisabled "вимкнено" +#define MSGTR_OSDAudio "Аудіо: %s" +#define MSGTR_OSDVideo "Відео: %s" +#define MSGTR_OSDChannel "Канал: %s" +#define MSGTR_OSDSubDelay "Затримка субтитрыв: %d мс" +#define MSGTR_OSDSpeed "Швидкість: x %6.2f" +#define MSGTR_OSDosd "OSD: %s" +#define MSGTR_OSDChapter "Розділ: (%d) %s" +#define MSGTR_OSDAngle "Кут: %d/%d" + +// property values +#define MSGTR_EnabledEdl "увімкнено (EDL)" +#define MSGTR_Disabled "вимкнено" +#define MSGTR_HardFrameDrop "інтенсивний" +#define MSGTR_Unknown "невідомий" +#define MSGTR_Bottom "низ" +#define MSGTR_Center "центр" +#define MSGTR_Top "верх" +#define MSGTR_SubSourceFile "файл" +#define MSGTR_SubSourceVobsub "vobsub" +#define MSGTR_SubSourceDemux "вкладено" + +// OSD bar names +#define MSGTR_Volume "Гучність" +#define MSGTR_Panscan "Зріз сторін" +#define MSGTR_Gamma "Гамма" +#define MSGTR_Brightness "Яскравість" +#define MSGTR_Contrast "Контраст" +#define MSGTR_Saturation "Насиченність" +#define MSGTR_Hue "Колір" +#define MSGTR_Balance "Баланс" + +// property state +#define MSGTR_LoopStatus "Повтор: %s" +#define MSGTR_MuteStatus "Вимкнути звук: %s" +#define MSGTR_AVDelayStatus "A-V затримка: %s" +#define MSGTR_OnTopStatus "Звурху інших: %s" +#define MSGTR_RootwinStatus "Вікно-root: %s" +#define MSGTR_BorderStatus "Рамка: %s" +#define MSGTR_FramedroppingStatus "Пропуск кадрів: %s" +#define MSGTR_VSyncStatus "Вертикальна синхронізація: %s" +#define MSGTR_SubSelectStatus "Субтитри: %s" +#define MSGTR_SubSourceStatus "Субтитри з: %s" +#define MSGTR_SubPosStatus "Позиція субтитрів: %s/100" +#define MSGTR_SubAlignStatus "Вирівнювання субтитрів: %s" +#define MSGTR_SubDelayStatus "Затримка субтитрів: %s" +#define MSGTR_SubScale "Масштаб субтитрів: %s" +#define MSGTR_SubVisibleStatus "Субтитри: %s" +#define MSGTR_SubForcedOnlyStatus "Форсувати тільки субтитри: %s" // mencoder.c: #define MSGTR_UsingPass3ControlFile "Використовую pass3 файл: %s\n" @@ -147,13 +249,162 @@ static char help_text[]= #define MSGTR_NoVideoEncoderSelected "\nНе вибраний відео кодек (-ovc). Виберіть, спробуйте -ovc help!\n" #define MSGTR_CannotOpenOutputFile "Неможливо створити файл '%s'.\n" #define MSGTR_EncoderOpenFailed "Неможливо відкрити кодек.\n" +#define MSGTR_MencoderWrongFormatAVI "\nПОПЕРЕДЖЕННЯ: ФОРМАТ ФАЙЛУ НА ВИХОДІ _AVI_. Погляньте -of help.\n" +#define MSGTR_MencoderWrongFormatMPG "\nПОПЕРЕДЖЕННЯ: ФОРМАТ ФАЙЛУ НА ВИХОДІ _MPEG_. Погляньте -of help.\n" +#define MSGTR_MissingOutputFilename "Не вказано файлу на виході, будь-ласка подивіться опцію -o." #define MSGTR_ForcingOutputFourcc "Встановлюю вихідний fourcc в %x [%.4s]\n" +#define MSGTR_ForcingOutputAudiofmtTag "Форсую таг аудіо фармату на виході до 0x%x.\n" #define MSGTR_DuplicateFrames "\n%d повторних кадрів!\n" #define MSGTR_SkipFrame "\nКадр пропущено!\n" +#define MSGTR_ResolutionDoesntMatch "\nНовий та попередній відео файл має різне розширення та кольорову гаму.\n" +#define MSGTR_FrameCopyFileMismatch "\nУсі відео файли повинні мати однакові кадр/сек, розширення, та кодек для -ovc copy.\n" +#define MSGTR_AudioCopyFileMismatch "\nУсі відео файли повинні мати однакові аудіо кодек та формат для -oac copy.\n" +#define MSGTR_NoAudioFileMismatch "\nНе можу поєднати файли відео з файлами аудіо та відео. Спробуйте -nosound.\n" +#define MSGTR_NoSpeedWithFrameCopy "ПОПЕРЕДЖЕННЯ: опція -speed не гарантує коректну роботу з -oac copy!\n"\ +"Ваше кодування може бути невдалим!\n" #define MSGTR_ErrorWritingFile "%s: Помилка запису файлу.\n" +#define MSGTR_FlushingVideoFrames "\nЗкидую кадри відео.\n" +#define MSGTR_FiltersHaveNotBeenConfiguredEmptyFile "Фільтри не було налаштовано! Порожній файл?\n" #define MSGTR_RecommendedVideoBitrate "Рекомендований бітрейт для %s CD: %d\n" -#define MSGTR_VideoStreamResult "\nВідео потік: %8.3f kbit/s (%d Б/с) розмір: %"PRIu64" байт %5.3f секунд %d кадрів\n" -#define MSGTR_AudioStreamResult "\nАудіо потік: %8.3f kbit/s (%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" +#define MSGTR_ACodecFramecopy "аудіокодек: копія кадрів (формат=%x каналів=%d швидкість=%d бітів=%d Б/с=%d приклад-%d)\n" +#define MSGTR_CBRPCMAudioSelected "Вибрано CBR PCM аудіо.\n" +#define MSGTR_MP3AudioSelected "Вибрано MP3 аудіо.\n" +#define MSGTR_CannotAllocateBytes "Не можу виділити пам'ять для %d байтів.\n" +#define MSGTR_SettingAudioDelay "Встановлюю аудіо затримку у %5.3fс.\n" +#define MSGTR_SettingVideoDelay "Встановлюю відео затримку у %5.3fс.\n" +#define MSGTR_SettingAudioInputGain "Встановлюю підсилення вхідного сигналу аудіо потоку у %f.\n" +#define MSGTR_LamePresetEquals "\npreset=%s\n\n" +#define MSGTR_LimitingAudioPreload "Обмежити підвантаження аудіо до 0.4с.\n" +#define MSGTR_IncreasingAudioDensity "Збільшую густину аудіо до 4.\n" +#define MSGTR_ZeroingAudioPreloadAndMaxPtsCorrection "Форсую аудіо підвантаження до 0, максимальну корекцію pts у 0.\n" +#define MSGTR_CBRAudioByterate "\n\nCBR аудіо: %d байтів/сек, %d байтів/блок\n" +#define MSGTR_LameVersion "Версія LAME %s (%s)\n\n" +#define MSGTR_InvalidBitrateForLamePreset "Помилка: Вказаний бітрейт не є вірним для даного встановлення.\n"\ +"\n"\ +"Використовуючи цей режим ви повинні ввести значення між \"8\" та \"320\".\n"\ +"\n"\ +"Для подальшої інформації спробуйте: \"-lameopts preset=help\"\n" +#define MSGTR_InvalidLamePresetOptions "Помилка: Ви не ввели дійсний профайл та/чи опції з встановлення.\n"\ +"\n"\ +"Доступні профайли:\n"\ +"\n"\ +" standard\n"\ +" extreme\n"\ +" insane\n"\ +" (Режим ABR) - Мається на увазі режим ABR. Для використання,\n"\ +" просто вкажіть бітрейт. Наприклад:\n"\ +" \"preset=185\" активує це\n"\ +" встановлення та використовує 185 як середнє значення кбіт/с.\n"\ +"\n"\ +" Декілька прикладів:\n"\ +"\n"\ +" \"-lameopts fast:preset=standard \"\n"\ +" or \"-lameopts cbr:preset=192 \"\n"\ +" or \"-lameopts preset=172 \"\n"\ +" or \"-lameopts preset=extreme \"\n"\ +"\n"\ +"Для подальшої інформації спробуйте: \"-lameopts preset=help\"\n" +#define MSGTR_LamePresetsLongInfo "\n"\ +"Встановлення розроблені так, щоб отримати якнайкращу якість.\n"\ +"\n"\ +"Вони були розроблені та налаштовані у результаті ретельних тестів\n"\ +"тести подвійного прослуховування, щоб досягти цього результату.\n"\ +"\n"\ +"Ключі встановлень постійно поновлюються, щоб відповідати останнім розробленням.\n"\ +"в результаті чого ви повинні отримати практично найкращу якість\n"\ +"на даний момент можливо при використанні LAME.\n"\ +"\n"\ +"Щоб активувати ці встановлення:\n"\ +"\n"\ +" Для VBR режимів (найкраща якість звичайно):\n"\ +"\n"\ +" \"preset=standard\" Звичайно цього встановлення повинно бути достатньо\n"\ +" для більшості людей та більшості музики, та воно\n"\ +" являє собою досить високу якість.\n"\ +"\n"\ +" \"preset=extreme\" Якщо у вас хороший слух та добра музича апаратура,\n"\ +" це встановлення як правило забезпечить кращу якість\n"\ +" ніж режим \"standard\"\n"\ +" mode.\n"\ +"\n"\ +" Для CBR 320kbps (максимально можлива якість, яку можна тримати з встановлень):\n"\ +"\n"\ +" \"preset=insane\" Це встановлення звичайно буде занадто для більшості людей\n"\ +" та ситуацій, але якщо ви мусите отримати найкращу\n"\ +" максимально можливу якість, не дивлячись на\n"\ +" розмір файлу, це ваш вибір.\n"\ +"\n"\ +" Для ABR режимів (висока якість для заданого бітрейта, але така висока як VBR):\n"\ +"\n"\ +" \"preset=\" Використовуючи це встановлення звичайно дає добру якість\n"\ +" для заданого бітрейта. Базуючись на введеному\n"\ +" бітрейті, це встановлення визначить оптимальні\n"\ +" налаштування для кожной конкретного випадку.\n"\ +" Не дивлячись на то, що цей підхід працює, він\n"\ +" далеко не такий гнучкий як VBR, та звичайно не досягає\n"\ +" такого рівня якості як VBR на високих бітрейтах.\n"\ +"\n"\ +"Наступні опції також доступні для існуючих профілей:\n"\ +"\n"\ +" standard\n"\ +" extreme\n"\ +" insane\n"\ +" (Режим ABR) - Мається на увазі режим ABR. Для використання\n"\ +" просто вкажіть бітрейт. Наприклад:\n"\ +" \"preset=185\" активує це встановлення\n"\ +" та використая 185 як середнє значення кбіт/сек.\n"\ +"\n"\ +" \"fast\" - Вмикає новий швидкий VBR для конкретного профілю.\n"\ +" Недостатком цього ключа є те, що часто бітрейт буде\n"\ +" набагато більше ніж у нормальному режимі;\n"\ +" а якість може буте дещо гірше.\n"\ +"Попередження: У теперешній версії швидкі встановлення можуть привести до\n"\ +" високому бітрейту, у порівнянні з звичайними встановленнями.\n"\ +"\n"\ +" \"cbr\" - Якщо ви використовуєте режим ABR (див. вище) з бітрейтом кратним\n"\ +" 80, 96, 112, 128, 160, 192, 224, 256, 320,\n"\ +" ви можете застосувати опцію \"cbr\" щоб форсувати кодування у режимі\n"\ +" CBR замість стандартного режиму abr. ABR забезпечує кращу якість,\n"\ +" але CBR може бути корисним у таких ситуаціях,\n"\ +" як передача потоків mp3 через інтернет.\n"\ +"\n"\ +" Наприклад:\n"\ +"\n"\ +" \"-lameopts fast:preset=standard \"\n"\ +" or \"-lameopts cbr:preset=192 \"\n"\ +" or \"-lameopts preset=172 \"\n"\ +" or \"-lameopts preset=extreme \"\n"\ +"\n"\ +"\n"\ +"Декілька псевдонімів доступні для режима ABR:\n"\ +"phone => 16kbps/mono phon+/lw/mw-eu/sw => 24kbps/mono\n"\ +"mw-us => 40kbps/mono voice => 56kbps/mono\n"\ +"fm/radio/tape => 112kbps hifi => 160kbps\n"\ +"cd => 192kbps studio => 256kbps" +#define MSGTR_LameCantInit \ +"Не можу встановити опції LAME, перевірте бітрейт/частому_дискретизації, деякі\n"\ +"дуже низькі бітрейти (<32) потребують менші частоти\nдискретизації(наприклад, -srate 8000).\n"\ +"Якщо все це не допоможе, спробуйте встановлення." +#define MSGTR_ConfigFileError "помилка у файлі налаштувань" +#define MSGTR_ErrorParsingCommandLine "помилка аналізу командного рядка" +#define MSGTR_VideoStreamRequired "Вивід відео обов'язковий!\n" +#define MSGTR_ForcingInputFPS "Вхідні кадри/сек будуть замінені на %5.3f.\n" +#define MSGTR_RawvideoDoesNotSupportAudio "Вихідний формат файлу RAWVIDEO не підтримує аудіо - вимикаю відео.\n" +#define MSGTR_DemuxerDoesntSupportNosound "Цей демультиплексор поки не підтримується -nosound.\n" +#define MSGTR_MemAllocFailed "Не можу виділити пам'ять.\n" +#define MSGTR_NoMatchingFilter "Не можу знайти потрібний фільтр/формат аудіовиводу!\n" +#define MSGTR_MP3WaveFormatSizeNot30 "sizeof(MPEGLAYER3WAVEFORMAT)==%d!=30, можливо зламаний компілятор C?\n" +#define MSGTR_NoLavcAudioCodecName "Аудіо LAVC, відсутнє назва кодека!\n" +#define MSGTR_LavcAudioCodecNotFound "Аудіо LAVC, не можу знайти кодувальщик для кодека %s.\n" +#define MSGTR_CouldntAllocateLavcContext "Аудіо LAVC, не можу розмістити контекст!\n" +#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"\ -- cgit v1.2.3 From 919b7aef263325e8b21dd7fd36c67e89ae80431e Mon Sep 17 00:00:00 2001 From: kostya Date: Sat, 14 Feb 2009 16:37:39 +0000 Subject: Some AltiVec functions in SwScaler produce different output than their counterparts in pure C, so don't invoke them in bitexact mode. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28555 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/swscale.c | 1 + libswscale/swscale_template.c | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/libswscale/swscale.c b/libswscale/swscale.c index 586715eacd..a38c14d9a8 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -2396,6 +2396,7 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d #ifdef COMPILE_ALTIVEC if ((c->flags & SWS_CPU_CAPS_ALTIVEC) && + !(c->flags & SWS_BITEXACT) && srcFormat == PIX_FMT_YUV420P) { // unscaled YV12 -> packed YUV, we want speed if (dstFormat == PIX_FMT_YUYV422) diff --git a/libswscale/swscale_template.c b/libswscale/swscale_template.c index c0e680ca4a..1f5a10de41 100644 --- a/libswscale/swscale_template.c +++ b/libswscale/swscale_template.c @@ -1136,9 +1136,10 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_ #if HAVE_ALTIVEC /* The following list of supported dstFormat values should match what's found in the body of altivec_yuv2packedX() */ - if (c->dstFormat==PIX_FMT_ABGR || c->dstFormat==PIX_FMT_BGRA || + if (!(c->flags & SWS_BITEXACT) && + (c->dstFormat==PIX_FMT_ABGR || c->dstFormat==PIX_FMT_BGRA || c->dstFormat==PIX_FMT_BGR24 || c->dstFormat==PIX_FMT_RGB24 || - c->dstFormat==PIX_FMT_RGBA || c->dstFormat==PIX_FMT_ARGB) + c->dstFormat==PIX_FMT_RGBA || c->dstFormat==PIX_FMT_ARGB)) altivec_yuv2packedX (c, lumFilter, lumSrc, lumFilterSize, chrFilter, chrSrc, chrFilterSize, dest, dstW, dstY); -- cgit v1.2.3 From 060548889799bad3f9fc417c6a22a39783fd66ae Mon Sep 17 00:00:00 2001 From: kostya Date: Sat, 14 Feb 2009 16:39:15 +0000 Subject: Make hScale_altivec_real() trim its output like other implementations do git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28556 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libswscale/swscale_altivec_template.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libswscale/swscale_altivec_template.c b/libswscale/swscale_altivec_template.c index 2111cec410..a008b966e8 100644 --- a/libswscale/swscale_altivec_template.c +++ b/libswscale/swscale_altivec_template.c @@ -220,7 +220,7 @@ static inline void hScale_altivec_real(int16_t *dst, int dstW, uint8_t *src, int for (j=0; j>7, 0, (1<<15)-1); + dst[i] = FFMIN(val>>7, (1<<15)-1); } } else @@ -259,7 +259,7 @@ static inline void hScale_altivec_real(int16_t *dst, int dstW, uint8_t *src, int val_vEven = vec_mule(src_v, filter_v); val_s = vec_sums(val_vEven, vzero); vec_st(val_s, 0, tempo); - dst[i] = av_clip(tempo[3]>>7, 0, (1<<15)-1); + dst[i] = FFMIN(tempo[3]>>7, (1<<15)-1); } } break; @@ -286,7 +286,7 @@ static inline void hScale_altivec_real(int16_t *dst, int dstW, uint8_t *src, int val_v = vec_msums(src_v, filter_v, (vector signed int)vzero); val_s = vec_sums(val_v, vzero); vec_st(val_s, 0, tempo); - dst[i] = av_clip(tempo[3]>>7, 0, (1<<15)-1); + dst[i] = FFMIN(tempo[3]>>7, (1<<15)-1); } } break; @@ -315,7 +315,7 @@ static inline void hScale_altivec_real(int16_t *dst, int dstW, uint8_t *src, int vector signed int val_s = vec_sums(val_v, vzero); vec_st(val_s, 0, tempo); - dst[i] = av_clip(tempo[3]>>7, 0, (1<<15)-1); + dst[i] = FFMIN(tempo[3]>>7, (1<<15)-1); } } break; @@ -377,7 +377,7 @@ static inline void hScale_altivec_real(int16_t *dst, int dstW, uint8_t *src, int val_s = vec_sums(val_v, vzero); vec_st(val_s, 0, tempo); - dst[i] = av_clip(tempo[3]>>7, 0, (1<<15)-1); + dst[i] = FFMIN(tempo[3]>>7, (1<<15)-1); } } -- cgit v1.2.3 From 1538fddadac7e95b23b0a379c33baf7bb28f57a3 Mon Sep 17 00:00:00 2001 From: diego Date: Sat, 14 Feb 2009 17:18:55 +0000 Subject: Remove local copy of xvmc_render.h, it is now an installed header in FFmpeg. Also adapt MPlayer to definition name changes in libavcodec/xvmc.h. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28557 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpcodecs/vd_ffmpeg.c | 10 +++---- libvo/vo_xvmc.c | 30 ++++++++++---------- xvmc_render.h | 75 ------------------------------------------------- 3 files changed, 20 insertions(+), 95 deletions(-) delete mode 100644 xvmc_render.h diff --git a/libmpcodecs/vd_ffmpeg.c b/libmpcodecs/vd_ffmpeg.c index 4f4c7f6c7d..e4d40e3bdc 100644 --- a/libmpcodecs/vd_ffmpeg.c +++ b/libmpcodecs/vd_ffmpeg.c @@ -27,7 +27,7 @@ LIBVD_EXTERN(ffmpeg) #include "libavcodec/avcodec.h" #if CONFIG_XVMC -#include "xvmc_render.h" +#include "libavcodec/xvmc.h" #endif int avcodec_initialized=0; @@ -985,8 +985,8 @@ static int mc_get_buffer(AVCodecContext *avctx, AVFrame *pic){ if( mp_msg_test(MSGT_DECVIDEO,MSGL_DBG5) ) mp_msg(MSGT_DECVIDEO, MSGL_DBG5, "vd_ffmpeg::mc_get_buffer (render=%p)\n",render); assert(render != 0); - assert(render->magic == MP_XVMC_RENDER_MAGIC); - render->state |= MP_XVMC_STATE_PREDICTION; + assert(render->magic == AV_XVMC_RENDER_MAGIC); + render->state |= AV_XVMC_STATE_PREDICTION; return 0; } @@ -1012,8 +1012,8 @@ static void mc_release_buffer(AVCodecContext *avctx, AVFrame *pic){ if( mp_msg_test(MSGT_DECVIDEO,MSGL_DBG5) ) mp_msg(MSGT_DECVIDEO, MSGL_DBG5, "vd_ffmpeg::mc_release_buffer (render=%p)\n",render); assert(render!=NULL); - assert(render->magic==MP_XVMC_RENDER_MAGIC); - render->state&=~MP_XVMC_STATE_PREDICTION; + assert(render->magic==AV_XVMC_RENDER_MAGIC); + render->state&=~AV_XVMC_STATE_PREDICTION; for(i=0; i<4; i++){ pic->data[i]= NULL; } diff --git a/libvo/vo_xvmc.c b/libvo/vo_xvmc.c index 35b5d39309..36b0602707 100644 --- a/libvo/vo_xvmc.c +++ b/libvo/vo_xvmc.c @@ -42,7 +42,7 @@ #include #include "x11_common.h" -#include "xvmc_render.h" +#include "libavcodec/xvmc.h" #include "sub.h" #include "aspect.h" @@ -371,11 +371,11 @@ static uint32_t xvmc_draw_image(mp_image_t *mpi){ rndr = (struct xvmc_render_state*)mpi->priv;//there is copy in plane[2] assert( rndr != NULL ); - assert( rndr->magic == MP_XVMC_RENDER_MAGIC ); + assert( rndr->magic == AV_XVMC_RENDER_MAGIC ); if( mp_msg_test(MSGT_VO,MSGL_DBG4) ) printf("vo_xvmc: draw_image(show rndr=%p)\n",rndr); // the surface have passed vf system without been skiped, it will be displayed - rndr->state |= MP_XVMC_STATE_DISPLAY_PENDING; + rndr->state |= AV_XVMC_STATE_DISPLAY_PENDING; p_render_surface_to_show = rndr; top_field_first = mpi->fields & MP_IMGFIELD_TOP_FIRST; return VO_TRUE; @@ -528,7 +528,7 @@ int vm = flags & VOFLAG_MODESWITCHING; rez=XvMCCreateSurface(mDisplay,&ctx,&surface_array[i]); if( rez != Success ) break; - surface_render[i].magic = MP_XVMC_RENDER_MAGIC; + surface_render[i].magic = AV_XVMC_RENDER_MAGIC; surface_render[i].data_blocks = data_blocks.blocks; surface_render[i].mv_blocks = mv_blocks.macro_blocks; surface_render[i].total_number_of_mv_blocks = numblocks; @@ -899,12 +899,12 @@ int rez; osd_rndr->display_flags = p_render_surface_to_show->display_flags; //add more if needed osd_rndr-> = p_render_surface_to_show->; - p_render_surface_to_show->state &= ~MP_XVMC_STATE_DISPLAY_PENDING; - p_render_surface_to_show->state |= MP_XVMC_STATE_OSD_SOURCE; + p_render_surface_to_show->state &= ~AV_XVMC_STATE_DISPLAY_PENDING; + p_render_surface_to_show->state |= AV_XVMC_STATE_OSD_SOURCE; p_render_surface_to_show->p_osd_target_surface_render = osd_rndr; p_render_surface_to_show = osd_rndr; - p_render_surface_to_show->state = MP_XVMC_STATE_DISPLAY_PENDING; + p_render_surface_to_show->state = AV_XVMC_STATE_DISPLAY_PENDING; if( mp_msg_test(MSGT_VO,MSGL_DBG4) ) printf("vo_xvmc:draw_osd: surface_to_show changed to %p\n",osd_rndr); @@ -982,7 +982,7 @@ int i,cfs; printf("vo_xvmc: flip_page show(rndr=%p)\n\n",p_render_surface_to_show); if(p_render_surface_to_show == NULL) return; - assert( p_render_surface_to_show->magic == MP_XVMC_RENDER_MAGIC ); + assert( p_render_surface_to_show->magic == AV_XVMC_RENDER_MAGIC ); //fixme assert( p_render_surface_to_show != p_render_surface_visible); if(use_queue){ @@ -1010,9 +1010,9 @@ int i,cfs; //the visible surface won't be displayed anymore, mark it as free if(p_render_surface_visible != NULL) - p_render_surface_visible->state &= ~MP_XVMC_STATE_DISPLAY_PENDING; + p_render_surface_visible->state &= ~AV_XVMC_STATE_DISPLAY_PENDING; -//!!fixme assert(p_render_surface_to_show->state & MP_XVMC_STATE_DISPLAY_PENDING); +//!!fixme assert(p_render_surface_to_show->state & AV_XVMC_STATE_DISPLAY_PENDING); //show it, displaying is always vsynced, so skip it for benchmark put_xvmc_image(p_render_surface_to_show,first_frame); @@ -1127,7 +1127,7 @@ int rez; rndr = (struct xvmc_render_state*)image[2];//this is copy of priv-ate assert( rndr != NULL ); - assert( rndr->magic == MP_XVMC_RENDER_MAGIC ); + assert( rndr->magic == AV_XVMC_RENDER_MAGIC ); rez = XvMCRenderSurface(mDisplay,&ctx,rndr->picture_structure, rndr->p_surface, @@ -1183,13 +1183,13 @@ static void check_osd_source(struct xvmc_render_state * src_rndr){ struct xvmc_render_state * osd_rndr; int stat; //If this is source surface, check does the OSD rendering is compleate - if(src_rndr->state & MP_XVMC_STATE_OSD_SOURCE){ + if(src_rndr->state & AV_XVMC_STATE_OSD_SOURCE){ if( mp_msg_test(MSGT_VO,MSGL_DBG4) ) printf("vo_xvmc: OSD surface=%p quering\n",src_rndr); osd_rndr = src_rndr->p_osd_target_surface_render; XvMCGetSurfaceStatus(mDisplay, osd_rndr->p_surface, &stat); if(!(stat & XVMC_RENDERING)) - src_rndr->state &= ~MP_XVMC_STATE_OSD_SOURCE; + src_rndr->state &= ~AV_XVMC_STATE_OSD_SOURCE; } } static int count_free_surfaces(void) { @@ -1243,8 +1243,8 @@ int i; for(i=0; i -#include -#include -#include -#include -#include - - -//the surface should be shown, the video driver manipulates this -#define MP_XVMC_STATE_DISPLAY_PENDING 1 -//the surface is needed for prediction, the codec manipulates this -#define MP_XVMC_STATE_PREDICTION 2 -//this surface is needed for subpicture rendering -#define MP_XVMC_STATE_OSD_SOURCE 4 -// 1337 IDCT MCo -#define MP_XVMC_RENDER_MAGIC 0x1DC711C0 - -struct xvmc_render_state { - //these are not changed by the decoder! - int magic; - - short * data_blocks; - XvMCMacroBlock * mv_blocks; - int total_number_of_mv_blocks; - int total_number_of_data_blocks; - int mc_type; //XVMC_MPEG1/2/4,XVMC_H263 without XVMC_IDCT - int idct; //Do we use IDCT acceleration? - int chroma_format; //420, 422, 444 - int unsigned_intra; //+-128 for intra pictures after clipping - XvMCSurface* p_surface; //pointer to rendered surface, never changed - - //these are changed by the decoder - //used by the XvMCRenderSurface function - XvMCSurface* p_past_surface; //pointer to the past surface - XvMCSurface* p_future_surface; //pointer to the future prediction surface - - unsigned int picture_structure; //top/bottom fields or frame! - unsigned int flags; //XVMC_SECOND_FIELD - 1st or 2nd field in the sequence - unsigned int display_flags; //1,2 or 1+2 fields for XvMCPutSurface - - //these are for internal communication - int state; //0 - free, 1 - waiting to display, 2 - waiting for prediction - int start_mv_blocks_num; //offset in the array for the current slice, updated by vo - int filled_mv_blocks_num; //processed mv block in this slice, changed by decoder - - int next_free_data_block_num; //used in add_mv_block, pointer to next free block - //extensions - void * p_osd_target_surface_render; //pointer to the surface where subpicture is rendered - -}; - -#endif /* AVCODEC_XVMC_RENDER_H */ -- cgit v1.2.3 From c81dd099749208fccec92471fc5ee65e996997c5 Mon Sep 17 00:00:00 2001 From: reimar Date: Sat, 14 Feb 2009 17:29:59 +0000 Subject: Indentation and other whitespace fixes git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28558 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpcodecs/vd_ffmpeg.c | 180 ++++++++++++++++++++++++------------------------ 1 file changed, 90 insertions(+), 90 deletions(-) diff --git a/libmpcodecs/vd_ffmpeg.c b/libmpcodecs/vd_ffmpeg.c index e4d40e3bdc..2bea063b5d 100644 --- a/libmpcodecs/vd_ffmpeg.c +++ b/libmpcodecs/vd_ffmpeg.c @@ -15,11 +15,11 @@ #include "vd_internal.h" static vd_info_t info = { - "FFmpeg's libavcodec codec family", - "ffmpeg", - "A'rpi", - "A'rpi, Michael, Alex", - "native codecs" + "FFmpeg's libavcodec codec family", + "ffmpeg", + "A'rpi", + "A'rpi, Michael, Alex", + "native codecs" }; LIBVD_EXTERN(ffmpeg) @@ -86,25 +86,25 @@ static int lavc_param_bitexact=0; static char *lavc_avopt = NULL; const m_option_t lavc_decode_opts_conf[]={ - {"bug", &lavc_param_workaround_bugs, CONF_TYPE_INT, CONF_RANGE, -1, 999999, NULL}, - {"er", &lavc_param_error_resilience, CONF_TYPE_INT, CONF_RANGE, 0, 99, NULL}, - {"gray", &lavc_param_gray, CONF_TYPE_FLAG, 0, 0, CODEC_FLAG_PART, NULL}, - {"idct", &lavc_param_idct_algo, CONF_TYPE_INT, CONF_RANGE, 0, 99, NULL}, - {"ec", &lavc_param_error_concealment, CONF_TYPE_INT, CONF_RANGE, 0, 99, NULL}, - {"vstats", &lavc_param_vstats, CONF_TYPE_FLAG, 0, 0, 1, NULL}, - {"debug", &lavc_param_debug, CONF_TYPE_INT, CONF_RANGE, 0, 9999999, NULL}, - {"vismv", &lavc_param_vismv, CONF_TYPE_INT, CONF_RANGE, 0, 9999999, NULL}, - {"st", &lavc_param_skip_top, CONF_TYPE_INT, CONF_RANGE, 0, 999, NULL}, - {"sb", &lavc_param_skip_bottom, CONF_TYPE_INT, CONF_RANGE, 0, 999, NULL}, - {"fast", &lavc_param_fast, CONF_TYPE_FLAG, 0, 0, CODEC_FLAG2_FAST, NULL}, - {"lowres", &lavc_param_lowres_str, CONF_TYPE_STRING, 0, 0, 0, NULL}, - {"skiploopfilter", &lavc_param_skip_loop_filter_str, CONF_TYPE_STRING, 0, 0, 0, NULL}, - {"skipidct", &lavc_param_skip_idct_str, CONF_TYPE_STRING, 0, 0, 0, NULL}, - {"skipframe", &lavc_param_skip_frame_str, CONF_TYPE_STRING, 0, 0, 0, NULL}, - {"threads", &lavc_param_threads, CONF_TYPE_INT, CONF_RANGE, 1, 8, NULL}, - {"bitexact", &lavc_param_bitexact, CONF_TYPE_FLAG, 0, 0, CODEC_FLAG_BITEXACT, NULL}, - {"o", &lavc_avopt, CONF_TYPE_STRING, 0, 0, 0, NULL}, - {NULL, NULL, 0, 0, 0, 0, NULL} + {"bug", &lavc_param_workaround_bugs, CONF_TYPE_INT, CONF_RANGE, -1, 999999, NULL}, + {"er", &lavc_param_error_resilience, CONF_TYPE_INT, CONF_RANGE, 0, 99, NULL}, + {"gray", &lavc_param_gray, CONF_TYPE_FLAG, 0, 0, CODEC_FLAG_PART, NULL}, + {"idct", &lavc_param_idct_algo, CONF_TYPE_INT, CONF_RANGE, 0, 99, NULL}, + {"ec", &lavc_param_error_concealment, CONF_TYPE_INT, CONF_RANGE, 0, 99, NULL}, + {"vstats", &lavc_param_vstats, CONF_TYPE_FLAG, 0, 0, 1, NULL}, + {"debug", &lavc_param_debug, CONF_TYPE_INT, CONF_RANGE, 0, 9999999, NULL}, + {"vismv", &lavc_param_vismv, CONF_TYPE_INT, CONF_RANGE, 0, 9999999, NULL}, + {"st", &lavc_param_skip_top, CONF_TYPE_INT, CONF_RANGE, 0, 999, NULL}, + {"sb", &lavc_param_skip_bottom, CONF_TYPE_INT, CONF_RANGE, 0, 999, NULL}, + {"fast", &lavc_param_fast, CONF_TYPE_FLAG, 0, 0, CODEC_FLAG2_FAST, NULL}, + {"lowres", &lavc_param_lowres_str, CONF_TYPE_STRING, 0, 0, 0, NULL}, + {"skiploopfilter", &lavc_param_skip_loop_filter_str, CONF_TYPE_STRING, 0, 0, 0, NULL}, + {"skipidct", &lavc_param_skip_idct_str, CONF_TYPE_STRING, 0, 0, 0, NULL}, + {"skipframe", &lavc_param_skip_frame_str, CONF_TYPE_STRING, 0, 0, 0, NULL}, + {"threads", &lavc_param_threads, CONF_TYPE_INT, CONF_RANGE, 1, 8, NULL}, + {"bitexact", &lavc_param_bitexact, CONF_TYPE_FLAG, 0, 0, CODEC_FLAG_BITEXACT, NULL}, + {"o", &lavc_avopt, CONF_TYPE_STRING, 0, 0, 0, NULL}, + {NULL, NULL, 0, 0, 0, 0, NULL} }; static enum AVDiscard str2AVDiscard(char *str) { @@ -125,11 +125,11 @@ static int control(sh_video_t *sh,int cmd,void* arg,...){ AVCodecContext *avctx = ctx->avctx; switch(cmd){ case VDCTRL_QUERY_FORMAT: - { - int format =(*((int*)arg)); - if( format == ctx->best_csp ) return CONTROL_TRUE;//supported + { + int format =(*((int*)arg)); + if( format == ctx->best_csp ) return CONTROL_TRUE;//supported // possible conversions: - switch( format ){ + switch( format ){ case IMGFMT_YV12: case IMGFMT_IYUV: case IMGFMT_I420: @@ -144,7 +144,7 @@ static int control(sh_video_t *sh,int cmd,void* arg,...){ #endif } return CONTROL_FALSE; - } + } break; case VDCTRL_RESYNC_STREAM: avcodec_flush_buffers(avctx); @@ -214,10 +214,10 @@ static int init(sh_video_t *sh){ int do_vis_debug= lavc_param_vismv || (lavc_param_debug&(FF_DEBUG_VIS_MB_TYPE|FF_DEBUG_VIS_QP)); if(!avcodec_initialized){ - avcodec_init(); - avcodec_register_all(); - avcodec_initialized=1; - av_log_set_callback(mp_msp_av_log_callback); + avcodec_init(); + avcodec_register_all(); + avcodec_initialized=1; + av_log_set_callback(mp_msp_av_log_callback); } ctx = sh->context = malloc(sizeof(vd_ffmpeg_ctx)); @@ -525,8 +525,8 @@ static int init_vo(sh_video_t *sh, enum PixelFormat pix_fmt){ default: ctx->best_csp=0; } - if (!mpcodecs_config_vo(sh,sh->disp_w,sh->disp_h, ctx->best_csp)) - return -1; + if (!mpcodecs_config_vo(sh,sh->disp_w,sh->disp_h, ctx->best_csp)) + return -1; ctx->vo_initialized = 1; } return 0; @@ -545,33 +545,33 @@ static int get_buffer(AVCodecContext *avctx, AVFrame *pic){ if(avctx->pix_fmt == PIX_FMT_YUV410P) align=63; //yes seriously, its really needed (16x16 chroma blocks in SVQ1 -> 64x64) - if (pic->buffer_hints) { - mp_msg(MSGT_DECVIDEO,MSGL_DBG2, "Buffer hints: %u\n", pic->buffer_hints); - type = MP_IMGTYPE_TEMP; - if (pic->buffer_hints & FF_BUFFER_HINTS_READABLE) - flags |= MP_IMGFLAG_READABLE; - if (pic->buffer_hints & FF_BUFFER_HINTS_PRESERVE) { - type = MP_IMGTYPE_STATIC; - flags |= MP_IMGFLAG_PRESERVE; - } - if (pic->buffer_hints & FF_BUFFER_HINTS_REUSABLE) { - type = MP_IMGTYPE_STATIC; - flags |= MP_IMGFLAG_PRESERVE; - } - flags|=(!avctx->hurry_up && ctx->do_slices) ? - MP_IMGFLAG_DRAW_CALLBACK:0; - mp_msg(MSGT_DECVIDEO,MSGL_DBG2, type == MP_IMGTYPE_STATIC ? "using STATIC\n" : "using TEMP\n"); - } else { - if(!pic->reference){ - ctx->b_count++; + if (pic->buffer_hints) { + mp_msg(MSGT_DECVIDEO,MSGL_DBG2, "Buff