Автор Тема: Объркани цветове в youtube flash player  (Прочетена 4493 пъти)

v13

  • Гост
Re: Объркани цветове в youtube flash player
« Отговор #15 -: May 05, 2012, 21:36 »
Вече има временно решение на проблема със сините лица ето тук: https://bugs.launchpad.net/ubuntu/+source/adobe-flashplugin/+bug/967091/comments/111

Копирам основните неща тук

Код:
$ sudo -s
$ mkdir build
$ cd build
$ apt-get install build-essential fakeroot dpkg-dev
$ apt-get source libvdpau1
$ apt-get build-dep libvdpau1
$ cd libvdpau-0.4.1/
$ patch -p1 < /path/to/vdpau.patch
$ dpkg-buildpackage -rfakeroot -b
$ cp src/vdpau_wrapper.cfg /etc/
$ dpkg -i ../libvdpau1_0.4.1-3ubuntu1_amd64.deb


When patching the source, the output should look like:
---
Цитат
patching file src/Makefile.am
Hunk #2 succeeded at 28 (offset 1 line).
patching file src/vdpau_wrapper.c
Hunk #1 succeeded at 222 (offset 12 lines).
Hunk #2 succeeded at 389 (offset 12 lines).
Hunk #3 succeeded at 399 (offset 12 lines).
patching file src/vdpau_wrapper.cfg
---

Be aware that your custom package will be overwritten with the next update of the original package. So if the next update does not yet contain this patch, you have to do the procedure again.

Ето и пач файла:
Код:
diff --git a/src/Makefile.am b/src/Makefile.am
index 48e69a7..9162ffb 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,6 +1,7 @@
 AM_CFLAGS = \
     -I$(top_srcdir)/include \
     -DVDPAU_MODULEDIR="\"$(moduledir)\"" \
+    -DVDPAU_SYSCONFDIR="\"$(sysconfdir)\"" \
     $(X11_CFLAGS) \
     $(XEXT_CFLAGS)
 
@@ -26,3 +27,6 @@ libvdpauincludedir = $(includedir)/vdpau
 libvdpauinclude_HEADERS = \
     $(top_srcdir)/include/vdpau/vdpau.h \
     $(top_srcdir)/include/vdpau/vdpau_x11.h
+
+libvdpausysconfdir=$(sysconfdir)
+libvdpausysconf_DATA = vdpau_wrapper.cfg
diff --git a/src/vdpau_wrapper.c b/src/vdpau_wrapper.c
index 23de3d4..c955745 100644
--- a/src/vdpau_wrapper.c
+++ b/src/vdpau_wrapper.c
@@ -210,6 +210,163 @@ static void _vdp_close_driver(void)
     _vdp_imp_device_create_x11_proc = NULL;
 }
 
+static VdpGetProcAddress * _imp_get_proc_address;
+static VdpVideoSurfacePutBitsYCbCr * _imp_vid_put_bits_y_cb_cr;
+static VdpPresentationQueueSetBackgroundColor * _imp_pq_set_bg_color;
+static int _inited_fixes;
+static int _running_under_flash;
+static int _enable_flash_uv_swap = 1;
+static int _disable_flash_pq_bg_color = 1;
+
+static VdpStatus vid_put_bits_y_cb_cr_swapped(
+    VdpVideoSurface      surface,
+    VdpYCbCrFormat       source_ycbcr_format,
+    void const * const * source_data,
+    uint32_t const *     source_pitches
+)
+{
+    void const * data_reordered[3];
+    void const * const * data;
+
+    if (source_ycbcr_format == VDP_YCBCR_FORMAT_YV12) {
+        data_reordered[0] = source_data[0];
+        data_reordered[1] = source_data[2];
+        data_reordered[2] = source_data[1];
+        /*
+         * source_pitches[1] and source_pitches[2] should be equal,
+         * so no need to re-order.
+         */
+        data = data_reordered;
+    }
+    else {
+        data = source_data;
+    }
+   
+    return _imp_vid_put_bits_y_cb_cr(
+        surface,
+        source_ycbcr_format,
+        data,
+        source_pitches
+    );
+}
+
+static VdpStatus pq_set_bg_color_noop(
+    VdpPresentationQueue presentation_queue,
+    VdpColor * const     background_color
+)
+{
+    return VDP_STATUS_OK;
+}
+
+static VdpStatus vdp_wrapper_get_proc_address(
+    VdpDevice device,
+    VdpFuncId function_id,
+    /* output parameters follow */
+    void * *  function_pointer
+)
+{
+    VdpStatus status;
+
+    status = _imp_get_proc_address(device, function_id, function_pointer);
+    if (status != VDP_STATUS_OK) {
+        return status;
+    }
+
+    if (_running_under_flash) {
+        switch (function_id) {
+        case VDP_FUNC_ID_VIDEO_SURFACE_PUT_BITS_Y_CB_CR:
+            if (_enable_flash_uv_swap) {
+                _imp_vid_put_bits_y_cb_cr = *function_pointer;
+                *function_pointer = vid_put_bits_y_cb_cr_swapped;
+            }
+            break;
+        case VDP_FUNC_ID_PRESENTATION_QUEUE_SET_BACKGROUND_COLOR:
+            if (_disable_flash_pq_bg_color) {
+                _imp_pq_set_bg_color = *function_pointer;
+                *function_pointer = pq_set_bg_color_noop;
+            }
+            break;
+        default:
+            break;
+        }
+    }
+
+    return VDP_STATUS_OK;
+}
+
+static void init_running_under_flash(void)
+{
+    FILE *fp;
+    char buffer[1024];
+    int ret, i;
+
+    fp = fopen("/proc/self/cmdline", "r");
+    if (!fp) {
+        return;
+    }
+    ret = fread(buffer, 1, sizeof(buffer) - 1, fp);
+    fclose(fp);
+    if (ret < 0) {
+        return;
+    }
+    /*
+     * Sometimes the file contains null between arguments. Wipe these out so
+     * strstr doesn't stop early.
+     */
+    for (i = 0; i < ret; i++) {
+        if (buffer[i] == '\0') {
+            buffer[i] = 'x';
+        }
+    }
+    buffer[ret] = '\0';
+
+    if (strstr(buffer, "libflashplayer") != NULL) {
+        _running_under_flash = 1;
+    }
+}
+
+void init_config(void)
+{
+    FILE *fp;
+    char buffer[1024];
+    int ret;
+
+    fp = fopen(VDPAU_SYSCONFDIR "/vdpau_wrapper.cfg", "r");
+    if (!fp) {
+        return;
+    }
+
+    while (fgets(buffer, sizeof(buffer), fp) != NULL) {
+        char * equals = strchr(buffer, '=');
+        char * param;
+
+        if (equals == NULL) {
+            continue;
+        }
+
+        *equals = '\0';
+        param = equals + 1;
+
+        if (!strcmp(buffer, "enable_flash_uv_swap")) {
+            _enable_flash_uv_swap = atoi(param);
+        }
+        else if (!strcmp(buffer, "disable_flash_pq_bg_color")) {
+            _disable_flash_pq_bg_color = atoi(param);
+        }
+    }
+}
+
+void init_fixes(void)
+{
+    if (_inited_fixes) {
+        return;
+    }
+    _inited_fixes = 1;
+
+    init_running_under_flash();
+    init_config();
+}
+
 VdpStatus vdp_device_create_x11(
     Display *             display,
     int                   screen,
@@ -220,6 +377,8 @@ VdpStatus vdp_device_create_x11(
 {
     VdpStatus status;
 
+    init_fixes();
+
     if (!_vdp_imp_device_create_x11_proc) {
         status = _vdp_open_driver(display, screen);
         if (status != VDP_STATUS_OK) {
@@ -228,10 +387,17 @@ VdpStatus vdp_device_create_x11(
         }
     }
 
-    return _vdp_imp_device_create_x11_proc(
+    status = _vdp_imp_device_create_x11_proc(
         display,
         screen,
         device,
-        get_proc_address
+        &_imp_get_proc_address
     );
+    if (status != VDP_STATUS_OK) {
+        return status;
+    }
+
+    *get_proc_address = vdp_wrapper_get_proc_address;
+
+    return VDP_STATUS_OK;
 }
diff --git a/src/vdpau_wrapper.cfg b/src/vdpau_wrapper.cfg
new file mode 100644
index 0000000..21d5b8c
--- /dev/null
+++ b/src/vdpau_wrapper.cfg
@@ -0,0 +1,2 @@
+enable_flash_uv_swap=1
+disable_flash_pq_bg_color=1
Активен

tolostoi

  • Напреднали
  • *****
  • Публикации: 1337
  • Distribution: Ubuntu
  • Window Manager: Unity
  • левел: авераж :)
    • Профил
Re: Объркани цветове в youtube flash player
« Отговор #16 -: May 06, 2012, 00:36 »
Бачка, Благодрая!  [_]3

Едит: Аз сега се загледах в това което си постнал и ...

Цитат
...
$ cp src/vdpau_wrapper.cfg /etc/
$ dpkg -i ../libvdpau1_0.4.1-3ubuntu1_amd64.deb ...
Аз на нотбука сложих 64 битово убунту и там нямам тази грижа, предполгам съм си с 64 битовия флаш, още при инсталацията сложих отметка да инсталира рестриктед екстрите. Мързи ме да го вадя и проверявам но бях убеден, че с 64 битовия флаш нямам грижи  ;D. Но пък от друга страна ... кво разбирам, аз оня ден на домашния десктоп видях, че нямам swap, кой знае от колко години карам така, дори нямах дял за swap никъде по хардовете  ;D ;D ;D зае*ал съм поддръжката нещо.
« Последна редакция: May 06, 2012, 00:41 от tolostoi »
Активен


... в Столичен инспекторат една година след миграцията, продължават да работят под Linux. Което, май прави "експеримента" успешен
by entusiast

v13

  • Гост
Re: Объркани цветове в youtube flash player
« Отговор #17 -: May 06, 2012, 08:15 »
Пачнатият пакет ---> https://bugs.launchpad.net/ubuntu/+source/adobe-flashplugin/+bug/967091/+attachment/3132316/+files/libvdpau1_0.4.1-3ubuntu1_amd64.deb
Не забравяйте и да създадете файл с име ---> /etc/vdpau_wrapper.cfg
със следното съдържание
Код:
enable_flash_uv_swap=1
disable_flash_pq_bg_color=1

Както писах по-горе това е временно решение, докато от Adobe излезе кръпка за проблема. Това в момента е просто поправка на гафа на Adobe със средствата на libvdpau1.
Повечето коментари на хората са, че не е добре да се прави официален ъпдейт на пакета libvdpau1 заради проблема с плеера. Някой казват, че това ще е един вид "замърсяване" на оригиналния код.
Всички се надяваме, че скоро ще има коректно работеща версия на плеера. Доколкото разбрах вече има работна верся на плеера, в която е отстранен проблема.

Много е важно при ъпдейт на системата да не се ъпдейтва libvdpau1, защото ще се припокрие пакета с оригиналния. Ако пък излезе нова версия на libvdpau1, след ъпдейта може отново да се приложи пача.  [_]3
« Последна редакция: May 06, 2012, 09:52 от v13 »
Активен

tolostoi

  • Напреднали
  • *****
  • Публикации: 1337
  • Distribution: Ubuntu
  • Window Manager: Unity
  • левел: авераж :)
    • Профил
Re: Объркани цветове в youtube flash player
« Отговор #18 -: May 08, 2012, 14:08 »
Е то не е болка за умиране, понеже по описаният начин имаш пачнат deb и лесно можеш пак да го инсталираш.
Активен


... в Столичен инспекторат една година след миграцията, продължават да работят под Linux. Което, май прави "експеримента" успешен
by entusiast

ЗибелтБг

  • Напреднали
  • *****
  • Публикации: 1302
  • Distribution: Kubuntu 14.04 Realtime 3.12.0-rt2 JACK Audio Connection Kit
  • Window Manager: KDE 4.13.3 !!! VLC-настр-Аудио-SRC-Sinc function(best quality)
  • М
    • Профил
    • WWW
Re: Объркани цветове в youtube flash player
« Отговор #19 -: May 09, 2012, 14:09 »
  Ама как се ядосвам-няма кой да каже да се махне libvdpau1 и mplayer, и да се ползва VLC  и край с проблема-някой нов в Линукс съвсем се обърква. ::)
Активен

Кубунту  със Realtime Kernel дава звук, който няма нищо общо с другите дистрибуции...Линукс е за галеници на Боговете-не е за простосмъртни...при прекомпилиране-make menuconfig, Under ‘Processor type and features’, Scroll  down to ‘Timer Frequency’ and set this to 1,000Hz!!! за 3.12 иска lzop

tolostoi

  • Напреднали
  • *****
  • Публикации: 1337
  • Distribution: Ubuntu
  • Window Manager: Unity
  • левел: авераж :)
    • Профил
Re: Объркани цветове в youtube flash player
« Отговор #20 -: May 09, 2012, 15:52 »
Е как да каже, като е пълна простотия  ;D
С vdpau и mplayer гледам блурей 1080p с над 25000 битрейт и млеър ми товари процесора 4-11%, докато с VLC ... стой та гледай, той не просто ми товари процесора над допустимото, ами направо сече. Вярно, че процесора е легаси (П4 на 3.4) но дори и да не беше, не обичам да ми се включват/усилват вентилатори за ... "простотии"
То ако става въпрос, още в първите постове има решение, да се махне отметката от хардуерно ускорение на флаш плеъра и готово, но това също е не приемливо решение, поне за мен.
Активен


... в Столичен инспекторат една година след миграцията, продължават да работят под Linux. Което, май прави "експеримента" успешен
by entusiast

ЗибелтБг

  • Напреднали
  • *****
  • Публикации: 1302
  • Distribution: Kubuntu 14.04 Realtime 3.12.0-rt2 JACK Audio Connection Kit
  • Window Manager: KDE 4.13.3 !!! VLC-настр-Аудио-SRC-Sinc function(best quality)
  • М
    • Профил
    • WWW
Re: Объркани цветове в youtube flash player
« Отговор #21 -: May 09, 2012, 21:01 »
  Еми прав си, ама и VLC през simple directmedia layer видео изход ми товари 18 %, а MPlayer на X11 -23 % на HDTV
« Последна редакция: May 09, 2012, 21:05 от zibeltbg »
Активен

Кубунту  със Realtime Kernel дава звук, който няма нищо общо с другите дистрибуции...Линукс е за галеници на Боговете-не е за простосмъртни...при прекомпилиране-make menuconfig, Under ‘Processor type and features’, Scroll  down to ‘Timer Frequency’ and set this to 1,000Hz!!! за 3.12 иска lzop

tolostoi

  • Напреднали
  • *****
  • Публикации: 1337
  • Distribution: Ubuntu
  • Window Manager: Unity
  • левел: авераж :)
    • Профил
Re: Объркани цветове в youtube flash player
« Отговор #22 -: May 09, 2012, 22:16 »
Не съм чувал за  simple directmedia layer ако имаш предвид някакъв вид хардуерно ускорение, то във влц работи само с vaapi и с него VLC товари повече, тествал съм. Само, че съм тествал само с nvidia, но съм питал други с ati-та за теста и винаги vaapi-то товари повече. Оставяме настрана, че всъщност с карта на nvidia ти трябва vdpau за да работи хардуерното ускорение и при vlc. Относно mplayer ... не зная от къде ти хрумна за изход да ползваш X11, това съм го чел само в този форум и то явно от хора които са имали проблеми с по-нормалните видео изходи xv и най-вече vdpau (който работи с nvidia затвореният драйвер и от тази тема научих, че вече и в свободния radeon драйвер, но само за mpeg 2 ускорение, което  си е едно добро начало  [_]3)
Активен


... в Столичен инспекторат една година след миграцията, продължават да работят под Linux. Което, май прави "експеримента" успешен
by entusiast

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
flash player
Настройка на програми
carlitto 4 4970 Последна публикация Feb 19, 2005, 17:51
от Goust
Flash Player за 64 битова Федора 4
Настройка на програми
Gryman 6 4494 Последна публикация Sep 29, 2005, 11:52
от alabal
Flash player
Настройка на програми
tlf 3 3404 Последна публикация Apr 09, 2006, 02:16
от
Flash player ПРОБЛЕМ
Настройка на програми
trankata 0 2514 Последна публикация May 03, 2006, 22:14
от trankata
Flash player ?
Настройка на програми
_NetCutter_ 2 3500 Последна публикация Jul 29, 2006, 02:39
от Nik123