diff --git a/ChangeLog b/ChangeLog index a2f6411..1dd1f64 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ +User m.Rcu +Date: Sun Feb 12 20:28:22 CET 2012 + + Jpeg screengrab use VDR RgbToJpeg function. + User johns -Date: +Date: Sun Feb 12 20:14:43 CET 2012 Add play/pause audio support. Fix bug: audible glitch when switching AC-3 pass-through <-> none. diff --git a/Makefile b/Makefile index e3e07d7..8cae7eb 100644 --- a/Makefile +++ b/Makefile @@ -24,15 +24,15 @@ CONFIG += -DAV_INFO CONFIG += $(shell pkg-config --exists vdpau && echo "-DUSE_VDPAU") CONFIG += $(shell pkg-config --exists libva && echo "-DUSE_VAAPI") CONFIG += $(shell pkg-config --exists alsa && echo "-DUSE_ALSA") -CONFIG += $(shell ls /usr/lib/libjpeg* >/dev/null 2>&1 && echo "-DUSE_JPEG") CONFIG += -DUSE_OSS ### The C++ compiler and options: -CC ?= gcc -CXX ?= g++ -CFLAGS ?= -g -O2 -W -Wall -Wextra -Winit-self \ - -Wdeclaration-after-statement +CC ?= gcc +CXX ?= g++ +CFLAGS ?= -g -O2 -W -Wall -Wextra -Winit-self \ + -Wdeclaration-after-statement \ + -ftree-vectorize -msse3 -flax-vector-conversions CXXFLAGS ?= -g -O2 -W -Wall -Wextra -Woverloaded-virtual ### The directory environment: @@ -71,15 +71,15 @@ _CFLAGS = $(DEFINES) $(INCLUDES) \ xcb-screensaver xcb-randr xcb-glx xcb-icccm xcb-keysyms`\ `pkg-config --cflags gl glu` \ $(if $(findstring USE_VDPAU,$(CONFIG)), \ - `pkg-config --cflags vdpau`) \ + `pkg-config --cflags vdpau`) \ $(if $(findstring USE_VAAPI,$(CONFIG)), \ - `pkg-config --cflags libva-x11 libva-glx libva`) \ + `pkg-config --cflags libva-x11 libva-glx libva`) \ $(if $(findstring USE_ALSA,$(CONFIG)), \ - `pkg-config --cflags alsa`) + `pkg-config --cflags alsa`) #override _CFLAGS += -Werror override CXXFLAGS += $(_CFLAGS) -override CFLAGS += $(_CFLAGS) +override CFLAGS += $(_CFLAGS) LIBS += -lrt \ $(shell pkg-config --libs libavcodec libavformat) \ @@ -87,13 +87,11 @@ LIBS += -lrt \ xcb-screensaver xcb-randr xcb-glx xcb-icccm xcb-keysyms`\ `pkg-config --libs gl glu` \ $(if $(findstring USE_VDPAU,$(CONFIG)), \ - `pkg-config --libs vdpau`) \ + `pkg-config --libs vdpau`) \ $(if $(findstring USE_VAAPI,$(CONFIG)), \ - `pkg-config --libs libva-x11 libva-glx libva`) \ + `pkg-config --libs libva-x11 libva-glx libva`) \ $(if $(findstring USE_ALSA,$(CONFIG)), \ - `pkg-config --libs alsa`) \ - $(if $(findstring USE_JPEG,$(CONFIG)), \ - -ljpeg) + `pkg-config --libs alsa`) ### The object files (add further files here): @@ -122,11 +120,11 @@ $(OBJS): Makefile ### Internationalization (I18N): -PODIR = po +PODIR = po LOCALEDIR = $(VDRDIR)/locale -I18Npo = $(wildcard $(PODIR)/*.po) +I18Npo = $(wildcard $(PODIR)/*.po) I18Nmsgs = $(addprefix $(LOCALEDIR)/, $(addsuffix /LC_MESSAGES/vdr-$(PLUGIN).mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file)))))) -I18Npot = $(PODIR)/$(PLUGIN).pot +I18Npot = $(PODIR)/$(PLUGIN).pot %.mo: %.po msgfmt -c -o $@ $< diff --git a/softhddev.c b/softhddev.c index 882d2c1..99f06f8 100644 --- a/softhddev.c +++ b/softhddev.c @@ -39,9 +39,6 @@ #define __USE_GNU #endif #include -#ifdef USE_JPEG -#include -#endif #include "misc.h" #include "softhddev.h" @@ -1013,6 +1010,9 @@ int PlayVideo(const uint8_t * data, int size) #endif } + /// call VDR support function +extern uint8_t *CreateJpeg(uint8_t *, int *, int, int, int); + #if defined(USE_JPEG) && JPEG_LIB_VERSION >= 80 /** @@ -1079,21 +1079,15 @@ uint8_t *CreateJpeg(uint8_t * image, int raw_size, int *size, int quality, uint8_t *GrabImage(int *size, int jpeg, int quality, int width, int height) { if (jpeg) { -#if defined(USE_JPEG) && JPEG_LIB_VERSION >= 80 - int raw_size; - uint8_t *image; uint8_t *jpg_image; + uint8_t *image; + int raw_size = 0; - raw_size = 0; image = VideoGrab(&raw_size, &width, &height, 0); - jpg_image = CreateJpeg(image, raw_size, size, quality, width, height); + jpg_image = CreateJpeg(image, size, quality, width, height); + free(image); return jpg_image; -#else - (void)quality; - Error(_("softhddev: jpeg grabbing not supported\n")); - return NULL; -#endif } if (width != -1 && height != -1) { Warning(_("softhddev: scaling unsupported\n")); diff --git a/softhddevice.cpp b/softhddevice.cpp index ad9d0cb..a579bd3 100644 --- a/softhddevice.cpp +++ b/softhddevice.cpp @@ -886,17 +886,17 @@ bool cSoftHdDevice::Flush(int timeout_ms) ** Sets the video display format to the given one (only useful if this ** device has an MPEG decoder). ** -** @note FIXME: this function isn't called on the initial channel +** @note this function isn't called on the initial channel */ void cSoftHdDevice::SetVideoDisplayFormat( eVideoDisplayFormat video_display_format) { static int last = -1; - cDevice::SetVideoDisplayFormat(video_display_format); - dsyslog("[softhddev]%s: %d\n", __FUNCTION__, video_display_format); + cDevice::SetVideoDisplayFormat(video_display_format); + // called on every channel switch, no need to kill osd... if (last != video_display_format) { last = video_display_format; @@ -1033,6 +1033,16 @@ uchar *cSoftHdDevice::GrabImage(int &size, bool jpeg, int quality, int width, return::GrabImage(&size, jpeg, quality, width, height); } +/** +** Call rgb to jpeg for C Plugin. +*/ +extern "C" uint8_t * CreateJpeg(uint8_t * image, int *size, int quality, + int width, int height) +{ + return (uint8_t *) RgbToJpeg((uchar *) image, width, height, *size, + quality); +} + ////////////////////////////////////////////////////////////////////////////// // cPlugin //////////////////////////////////////////////////////////////////////////////