Compare commits

...

282 Commits

Author SHA1 Message Date
Johns
6dfa88aecf Preparations for new ffmpeg VDPAU API. 2015-11-03 11:39:41 +01:00
Johns
ee2311d252 Fix compile error with opengl and without va-api. 2015-10-06 18:28:34 +02:00
Johns
4fa4f6616a Added VDPAU multi decoder loop changes to VA-API code. 2015-10-05 08:54:19 +02:00
Johns
5dc5601576 Fix comment spelling. 2015-10-01 15:46:38 +02:00
Johns
9e56747a56 Disabled old code before removement. 2015-10-01 12:48:37 +02:00
Johns
5b90137050 Handle change of audio ac3 downmix direct. 2015-09-30 12:24:26 +02:00
Johns
f47ee3a201 Speedup queuing output surface, when decoder buffers are full. 2015-09-30 11:27:10 +02:00
Johns
93981031aa Calculate queued output surfaces and show them in info message. 2015-09-30 11:16:50 +02:00
Johns
509329c90a Add support for new API of vdr 2.3.1. 2015-09-24 14:31:51 +02:00
Johns
8c347fdf1d Fix bug: EnableDPMSatBlackScreen only available with USE_SCREENSAVER. 2015-08-26 10:11:49 +02:00
Johns
06b8f77327 H264_EOS_TRICKSPEED and USE_MPEG_COMPLETE enabled as default. 2015-08-17 13:14:44 +02:00
master_red
700c8e8767 Configurable enable DPMS, while black screen is displayed. 2015-08-10 15:32:25 +02:00
Johns
ec58e45607 Fix bug: wrong and crash, if vdr draws pixmaps outside OSD. 2015-06-30 10:12:09 +02:00
Johns
396d5fac05 Fix bug: wrong version number check for av_frame_alloc(), ... 2015-06-19 01:06:52 +02:00
Johns
f0d31ad33c Fixed typing error. 2015-04-22 12:35:42 +02:00
Johns
e0f4a99b99 Workaround for ffmpeg 2.6 artifacts. 2015-04-22 12:14:15 +02:00
Johns
a1939eb6cb Fix bug: brightness and .. are calculated wrong. 2015-03-10 10:44:29 +01:00
Johns
28555643a5 Add automatic frame rate detection for older ffmpeg versions. 2015-03-10 10:38:00 +01:00
Johns
2866e328c6 Fix bug: destroyed vdpau surfaces still used in queue. 2015-03-10 10:31:49 +01:00
Johns
915dff8714 Fix bug: need signed char, if compiler has unsigned chars. 2015-03-10 10:20:53 +01:00
Johns
ca0181b1b1 Try smaller audio puffer, if default size fails. 2015-03-10 10:14:37 +01:00
Johns
a36221dea7 Fix bug: center cut-out didn't use cut off pixels. 2015-03-10 10:10:14 +01:00
Johns
4e72638766 Fix bug #2058: support for Make.plgcfg. 2015-03-10 09:43:09 +01:00
Johns
93ea660a38 Fix for compile with vdr 2.1.10, for older vdr versions. 2015-02-16 15:18:59 +01:00
jinx
73ce4ba803 Enable toggle AC3 downmix. 2015-02-16 10:02:27 +01:00
Johns
1d06c5ba59 Compile with vdr 2.1.10 2015-02-12 10:30:50 +01:00
Johns
2ceeb6db40 Fix bug: AVCodecContext.framerate not supported.
Older versions of ffmpeg have no member framerate in AVCodecContext.
2015-02-09 11:50:41 +01:00
Johns
4f4d304479 Use video stream frame rate for A/V sync.
Use the video stream frame rate and not the fixed 50Hz for A/V sync.
2015-02-06 09:50:54 +01:00
Antti Seppälä
9f134c1b6d Corrected black surface for va-api. 2014-10-16 14:16:01 +02:00
Johns
0adc02dd78 Newer va-api intel drivers support PutImage. 2014-10-16 14:05:17 +02:00
Johns
46e9f23355 Use more portable fork for vfork. 2014-10-16 12:54:21 +02:00
Johns
ac1d5250c8 Fix crash with VA-API vdpau backend. 2014-10-13 15:16:05 +02:00
mini73
c2556eb90a Fix bug: random rubbish at the end of letter. 2014-10-11 16:56:24 +02:00
Johns
a3c0052c4b Fix audio thread close race condition. 2014-09-23 12:36:39 +02:00
Johns
8b7402a397 Support ffmpeg new AVFrame API in the audio codec. 2014-08-13 12:04:39 +02:00
Johns
4a4de36878 Newer version of msgfmt force this. 2014-07-14 11:39:01 +02:00
Johns
37f409cb9a Use GCC built-in functions for atomic operations. 2014-06-25 15:17:00 +02:00
Johns
5207af6b2d Fix last commit. 2014-06-04 19:32:44 +02:00
Johns
90538ebfa9 Support detach or suspend in plugin menu. 2014-06-04 14:49:18 +02:00
Johns
ac7672053a Fix out of sync with ffmpeg >= 2.2.
This workaround for some special ffmpeg versions, conflicts with latest ffmpeg.
2014-05-30 10:18:20 +02:00
Johns
0cdedb88ac Fix "make clean-plugins". 2014-04-17 14:33:12 +02:00
Johns
42bbb763fd Fix compile with newer libav. 2014-02-27 14:20:25 +01:00
Johns
5bf2a9b761 No conf and rc file in git. 2014-02-18 12:26:03 +01:00
Johns
b7d372aa39 Audio flush only with audio. 2014-02-18 10:12:34 +01:00
Johns
3d3a88e76c Fix OSD bugs. 2014-02-12 14:37:35 +01:00
Johns
450c9b6309 Add some VA-API VPP info outputs. 2014-02-04 14:46:22 +01:00
Johns
23ab3707dc Remove build files for old unstable VDR. 2014-01-30 10:47:03 +01:00
hd.brummy
b3f0fe9fea Update gentoo ebuild. 2014-01-30 10:42:17 +01:00
Johns
f73f7a28f3 Fix spelling in arguments help. 2014-01-30 10:36:53 +01:00
Johns
340e10a0eb Add Workaround for alsa blocking audio device. 2014-01-29 10:07:07 +01:00
mini73
a45b9a3abe Fix bug: learing x11 remote keys fails. 2014-01-24 11:31:57 +01:00
Johns
590bae406a USE_BITMAP shouldn't be the default. 2014-01-14 14:59:44 +01:00
Johns
501d46793f Fix alternative OSD support with VDPAU bitmap surfaces. 2014-01-14 14:59:01 +01:00
Johns
978fc59aba Add support for umlauts in input fields. 2014-01-08 16:57:08 +01:00
Johns
aee9bbed90 Fix compile error with VDR 2.1.3. 2014-01-07 12:34:54 +01:00
Johns
8577292c50 Fix bug: memory leak. 2014-01-06 16:51:37 +01:00
Johns
a74a8e1c74 Added libswresample as required for ffmpeg. 2013-12-04 10:25:32 +01:00
Johns
e2a65cbf76 Missing change for PIP close, clear. 2013-12-04 10:12:31 +01:00
Johns
35a1dde089 ClearOnSwitch added to readme. 2013-12-04 10:10:09 +01:00
Johns
7ffbfea224 PIP close clears the last used PIP channel. 2013-12-04 10:01:36 +01:00
Johns
bb70c75656 Fix bug: -DOSD_DEBUG uses old (deleted) variable. 2013-11-23 16:51:30 +01:00
Johns
cfda3ba39d Fix bug: Option softhddevice.BlackPicture has no effect. 2013-11-23 16:48:02 +01:00
Dr. Seltsam
0e40f5f872 Add support to configure and clear buffers on channel switch. 2013-11-05 16:46:46 +01:00
Johns
fb2a7f9959 CLOCK_REALTIME -> CLOCK_MONOTONIC to allow time changes. 2013-10-08 10:18:04 +02:00
Johns
e3b32861b0 Add function VideoStreamOpen and always use VideoStreamClose. 2013-10-08 10:13:38 +02:00
Johns
58a76439ee Softer audio/video sync. 2013-09-30 20:54:27 +02:00
Johns
a13c25d309 Add function GetStats to the video output module. 2013-08-07 10:29:44 +02:00
Johns
5265e68aa9 Add function ResetStart to the video output module. 2013-08-06 12:16:30 +02:00
Johns
11121b5bdd Add function SetClosing to the video output module. 2013-08-04 17:43:11 +02:00
Johns
d8e96c7871 Generalize GetVaapiContext to GetHwAccelContext. 2013-08-03 17:27:52 +02:00
Johns
8ff65a011a Add compile time configurable trickspeed packets dump. 2013-07-29 19:14:32 +02:00
Johns
171a3f4dc9 Fix bug #1410: wrong spelled AC-3 and E-AC-3. 2013-07-26 16:55:33 +02:00
Johns
93357fb1cd Add compile time selectable h264 trickspeed workaround. 2013-07-24 20:06:05 +02:00
Johns
c646007db1 Use ffmpeg new names AVCodecID, AV_CODEC_... . 2013-07-18 17:08:47 +02:00
Johns
7615305960 Fix bug: video lagging behind after recording stop. 2013-07-16 16:39:46 +02:00
Johns
cc1e2de58b Reduce PES error messages. 2013-07-15 17:00:22 +02:00
Johns
738e9402d2 Report synced as info and not as debug message. 2013-07-15 16:58:36 +02:00
Johns
34fd275b42 Fix bug #1392: Wrong value for mixing LFE. 2013-07-08 14:36:08 +02:00
Johns
64c11efc1b Fix bug: wrong grab size, introduced with AMD VDPAU. 2013-05-16 20:28:44 +02:00
Johns
ebb8482226 Use VDR SPU decoder as default. 2013-05-15 10:07:30 +02:00
Johns
833112eaa9 Fix bug: grab image negative quality isn't 100. 2013-05-14 12:32:09 +02:00
Johns
3022920b40 Don't forget PIP documentation. 2013-05-10 16:33:37 +02:00
Johns
c1d3b9d048 Support AMD VDPAU with surface != requested size. 2013-05-10 15:53:26 +02:00
Johns
4fe1c43c08 Removes VA-API enabled as default.
Removes studio levels environment setting.
2013-04-23 20:46:36 +02:00
Johns
7a5e696bc4 Fix opengl and opengl threads bugs. 2013-04-17 16:35:51 +02:00
Johns
8f99f80d44 Initial opengl support with va-api only. 2013-04-16 16:44:42 +02:00
Johns
c0286b3ab4 Fix "broken driver" message if empty ring buffer. 2013-04-15 16:55:15 +02:00
Johns
9dd248f9d0 Enable seamless audio track change. 2013-04-11 12:03:38 +02:00
Johns
238224efc8 Better to unlock after the free and zero. 2013-04-10 15:04:09 +02:00
Johns
5b35e70b94 Fix bug #1302: Unsupported pixel format crash. 2013-04-08 16:42:47 +02:00
Johns
857546a3a5 Fix the fix, when sillpicture is called in suspend. 2013-04-06 14:24:08 +02:00
Johns
a1b77b1502 Fixes PIP Y translation. 2013-04-03 16:53:45 +02:00
Johns
7ef5667598 Patch was not 100% correct, fixed. 2013-04-03 16:51:27 +02:00
Johns
4e3f5f5414 Fix crash, when sillpicture is called in suspend mode. 2013-04-03 16:48:00 +02:00
Johns
23b0e0d599 Add workaround for zero width+height and ffmpeg >= 1.2. 2013-04-03 16:47:21 +02:00
Johns
eab051f5e6 Release Version 0.6.0. 2013-03-17 15:53:01 +01:00
anbr
e058302a08 Update german translation. 2013-03-17 15:51:11 +01:00
Johns
efcf3a1d2d Fix Bug #1286: typo. 2013-03-12 23:27:09 +01:00
Johns
1f0d5878b1 Adds H264 only hardware decoder for still-pictures. 2013-03-11 16:32:00 +01:00
Johns
f09a37a941 Enable optional VDR-SPU deocder support. 2013-03-11 12:18:11 +01:00
Johns
a7562eb2be Removes "static" warning. 2013-03-06 17:31:01 +01:00
cyril
a747829ffb Adds raise softhddevice video window support. 2013-03-06 17:07:30 +01:00
Johns
7db63875d0 Adds optional only complete mpeg packets support. 2013-03-06 10:30:27 +01:00
Johns
637c04655a Fixes text of EAC-3 pass-through setup. 2013-03-05 14:39:13 +01:00
Johns
9954b939ef Try to connect to X11 server, when start fails. 2013-02-27 16:48:42 +01:00
Johns
e65572c2e2 Updated ebuild for new vdr-plugin-2.eclass. 2013-02-25 16:40:44 +01:00
Johns
b3ddc47cb5 Removes "unused parameter" warnings. 2013-02-25 16:39:32 +01:00
Johns
4d9e3a71f4 More informations in short description. 2013-02-25 16:34:28 +01:00
Johns
21e4f4ee04 Workaround for ffmpeg 1.1.x get_format bug. 2013-02-25 16:33:40 +01:00
Johns
746746d5b7 Workaround for ffmpeg 1.1.2 bug. 2013-02-25 16:32:52 +01:00
Johns
936566c642 Show vaapi droped/missed messages with info level. 2013-02-23 15:56:24 +01:00
Johns
d6f557c6f7 Removes warnings, when compiles without VDPAU. 2013-02-15 15:58:49 +01:00
Johns
2d2ea53d16 Quote spaces to get correct ouput. 2013-02-13 22:47:16 +01:00
Johns
bccd959833 Fix .pot file generation, support _ and _N macros. 2013-02-13 22:46:08 +01:00
Johns
240fc17471 Store pass-through on/off state in setup. 2013-02-13 17:23:18 +01:00
Johns
7b2caac901 Fix bug: still old CodecPassthroughAC3 used. 2013-02-12 22:03:52 +01:00
Johns
56aae221e7 Adds missing USE_SCREENSAVER to old Makefile. 2013-02-12 18:11:40 +01:00
Johns
54255e7b57 Try to use HBR (High Bit-Rate) for EAC3. 2013-02-11 23:40:09 +01:00
Johns
2cd667fb44 Improved pass-through (PCM+EAC3) support. 2013-02-11 16:53:51 +01:00
Johns
145d65ff01 Debug time for channel switch. 2013-02-11 15:11:52 +01:00
Johns
8faff0fd1e Try to detect wrong Makefile use. 2013-02-11 14:41:19 +01:00
Johns
d31ff55b12 Clear buffers quicker, when replay stops. 2013-02-08 21:03:06 +01:00
Johns
d4535a34c9 Fix xcb deadlock while closing PIP decoder.
Close video decoder from inside the decoder thread,
otherwise xcb hangs in a lock.
2013-02-07 16:54:16 +01:00
Johns
ebd2f85f90 Update for new Makefiles. 2013-02-07 10:17:48 +01:00
Johns
dce7ef9110 Adds PIP hot-key support. 2013-02-06 16:27:25 +01:00
Johns
780e2989ae Makes audio mixer optional. 2013-02-06 16:02:22 +01:00
Johns
2661fdf333 Plugin needs -D_GNU_SOURCE. 2013-01-30 18:04:53 +01:00
Johns
2557418e81 No longer needed. 2013-01-29 20:48:04 +01:00
Johns
b48e0d0638 Support VDR 1.7.36 new build system. 2013-01-29 17:04:50 +01:00
Johns
2c27d83b9e Makes buffers soft limit configurable. 2013-01-28 23:13:23 +01:00
Johns
8b22585748 Never trust the docs: fix ffmpeg downsample. 2013-01-26 00:18:59 +01:00
Johns
7ed6975330 Support upsampling 3,5 to 8 channels.
Improve next ring buffer handling.
Improve audio/video sync debug.
2013-01-25 17:05:53 +01:00
Johns
d5e111238d Improves VDPAU dissplay preemption handling. 2013-01-25 16:55:25 +01:00
Sibbi
2733e47af7 Add modifiers to X11 remote key names. 2013-01-25 16:52:23 +01:00
Johns
f9998e7664 Add audio compatibility with >=ffmpeg 1.1. 2013-01-24 21:42:39 +01:00
Johns
04286fb2ad Add video compatibility with >=ffmpeg 1.1. 2013-01-23 21:54:56 +01:00
Johns
cd82ee8e4a Fix bug: no sound with video output "none". 2013-01-22 17:18:18 +01:00
Johns
a1f17199d6 Crop setup is done by VdpauSetupOutput. 2013-01-22 17:08:44 +01:00
Johns
849ca7cfd6 Stronger H264/Mpeg detection tests. 2013-01-12 19:13:43 +01:00
Johns
308742a927 React faster only with mpeg. 2013-01-11 18:54:45 +01:00
Johns
1a730ef90b Fix build without USE_PIP. 2013-01-09 00:39:27 +01:00
Johns
d59c2ad40b Must guard CodecVideoDecode. 2013-01-08 23:52:41 +01:00
Johns
3366faece2 Fixes close PIP threading bug. 2013-01-08 21:11:46 +01:00
Johns
2bb2875cd7 Update PIP only, when visible. 2013-01-07 19:31:05 +01:00
Johns
e88403d044 Close pip before switching channel. 2013-01-07 17:47:05 +01:00
Johns
11293e8dc1 Split mpeg packets in receiver thread. 2013-01-07 16:55:42 +01:00
Johns
3bcc3d280e fprints only when building debug version. 2013-01-06 19:17:02 +01:00
Johns
55587c86f0 Switch PIP to only available channels. 2013-01-06 19:15:46 +01:00
Johns
7cc74795be Fix bug: missing external reference with -DUSE_PIP. 2013-01-06 19:14:46 +01:00
Johns
534b4094b5 Fix thread exit problem. 2013-01-06 14:47:00 +01:00
Johns
7cd025a023 Cosmetic cleanups. 2013-01-06 14:06:08 +01:00
Johns
b14a67b601 New features documented. 2013-01-05 23:16:03 +01:00
Johns
b24409323d Fix detach and attach bug. 2013-01-05 22:48:01 +01:00
Johns
9ec2716026 PIP function update. 2013-01-05 20:47:14 +01:00
Johns
fa09d940c5 Fix PIP threading problems. 2013-01-05 20:44:54 +01:00
Johns
d4702b9a9e Include softhddevice.cpp in indent target.
Fix constconst after indent.  Hello GNU who many years until it will be
fixed?
2013-01-05 19:49:59 +01:00
Johns
6a3a560857 Adds PIP channel switch functions. 2013-01-05 17:17:50 +01:00
Johns
8ee1e84b2e Restore video position, when PIP closes. 2013-01-05 16:37:25 +01:00
Johns
7e96a292eb First video surface clears complete window. 2013-01-05 15:41:57 +01:00
Johns
d89ada9aad Makes PIP+Video position configurable. 2013-01-04 21:50:55 +01:00
Johns
59d1a6b1f2 Adds function to stop PIP. 2013-01-04 18:50:14 +01:00
Johns
1a744a8eb8 Sync to audio only with the first video stream. 2013-01-04 18:04:53 +01:00
Johns
78100cba00 Use second stream for PIP. 2013-01-04 15:56:26 +01:00
Johns
b54ddd4549 Enable more than 1 vdpau video stream. 2013-01-04 15:54:32 +01:00
Johns
d42475f2dc Prepared reentrant video stream. 2013-01-03 18:52:34 +01:00
Johns
7cf6c1ab2b va-api has problems with h264 interlace. 2013-01-03 01:03:22 +01:00
Johns
06b8e3d784 Fix video size not updated for VAAPI. 2013-01-02 23:59:46 +01:00
horchi
63c22a13cf Adds VDR SeduAtmo Plugin support. 2013-01-01 17:58:54 +01:00
Johns
3d5e59a6e5 Support multiple streams with ScaleVideo. 2013-01-01 15:21:28 +01:00
Johns
acf377ec60 Makes 4:3 and 16:9 display format configurable.
Don't use DVB display format.
2013-01-01 14:48:51 +01:00
Zoolook
87c1c7be84 Add support for new vdr ScaleVideo API. 2013-01-01 12:51:08 +01:00
Johns
5bacd0cf7b Comments cleanup. 2013-01-01 12:40:12 +01:00
Johns
b1beb49798 Add support for old PES HDTV recording. 2013-01-01 12:09:54 +01:00
Johns
33b14be516 Change VideoSetOutputPosition to work OSD relative. 2012-12-31 17:51:43 +01:00
Johns
3907f3eb2f Change +%d to %+d, which is more general. 2012-12-31 17:11:22 +01:00
Johns
00d314dcd1 Disable trickspeed hack, to prevent ffmpeg crash. 2012-12-31 14:03:19 +01:00
Johns
9719fef55b Fix video size not updated, when window size change. 2012-12-30 17:05:42 +01:00
Johns
9b69045a20 Use 1 surface reserve. 2012-12-24 12:59:35 +01:00
Johns
966ff4229a Better video stream window position support. 2012-12-24 12:23:16 +01:00
Johns
e0c0c2021f Need LOCALEDIR to build as user. 2012-12-24 11:56:10 +01:00
Johns
a3907d11a5 Spam syslog with a/v sync infos. 2012-12-24 11:55:32 +01:00
Johns
b94d19e7b8 Make clear what downmix is enabled. 2012-12-24 11:53:16 +01:00
Johns
943ee22aa5 Makes X11 server arguments configurable. 2012-12-14 17:24:54 +01:00
Johns
b6154a988f Fix build with NO_TS_AUDIO. 2012-12-14 17:04:50 +01:00
Johns
932871dea9 Use vdr-plugin-2. 2012-11-30 20:46:13 +01:00
Johns
5ec6963398 Missing space added. 2012-11-25 00:38:32 +01:00
Johns
b04323704d Missing space added. 2012-11-25 00:35:39 +01:00
FireFly
38011d51b6 Add german translation. 2012-11-18 21:17:09 +01:00
Johns
9a2b6f860a Version 0.5.2 released. 2012-11-15 22:30:55 +01:00
maverick-me
10075aa501 Fix 3d OSD position. 2012-11-05 23:13:42 +01:00
Johns
cb91c779d3 Correct offsets for 3D OSD. Allow 1920x1200 OSD. 2012-11-05 12:03:50 +01:00
Johns
aad3742670 Log subtitle clear. 2012-11-01 14:12:31 +01:00
Johns
1b23074de7 Ignore empty options. 2012-10-31 10:20:07 +01:00
Johns
78015d90fb 3D update. 2012-10-30 16:53:40 +01:00
maverick-me
0286c434b4 Add support to change OSD for 3d SBS/TB streams. 2012-10-30 16:50:31 +01:00
Johns
6e9e641453 Comment how to change the error recognition. 2012-10-30 12:11:25 +01:00
Johns
d36e4c22b6 Removes debug output slipped into GIT. 2012-10-30 12:10:25 +01:00
Johns
7e4657e615 Use software decoder for still-pictures. 2012-10-29 23:06:00 +01:00
Johns
84e8e58c91 Don't show black picture during still-pictures. 2012-10-29 19:29:43 +01:00
Johns
141eb5cf71 Flush X11 output buffer before close. 2012-10-29 17:24:58 +01:00
Johns
a9e664ac52 Add Feature #1103: change audio without vdr restart. 2012-10-29 16:00:45 +01:00
Johns
30952face4 Fix bug #1089: vdpau wrong number of mpeg refs. 2012-10-24 15:38:09 +02:00
Johns
0519aff4d8 Removed double comment. 2012-10-19 15:38:05 +02:00
Johns
92b4203644 Fix bug: possible endless loop in pes audio parser. 2012-10-19 15:36:41 +02:00
Johns
f640ebdeb5 Report correct size in cSoftHdDevice::GetVideoSize. 2012-10-10 17:26:49 +02:00
Johns
de7c4b2a96 Workaround for bug #1069.
Option -s (start in suspended mode) does not work anymore.
2012-10-06 19:16:10 +02:00
Johns
0cf4598f68 Jpeg isn't longer used. 2012-09-15 21:40:04 +02:00
Johns
80dfa4a80f Close all filehandles before exec.
Add stillpicture debug.
Some small stillpicture fixes.
2012-09-15 21:38:54 +02:00
Johns
0a78944996 Fix bug: hue menu entry changes brightness. 2012-09-14 16:53:13 +02:00
Johns
142c3b16f6 Fix bug: didn't compile without vdpau support. 2012-09-11 00:24:27 +02:00
Johns
73fe963c36 Add picture adjustment support for vdpau. 2012-09-03 16:39:33 +02:00
Johns
a61cbcb65a Add PTS to render too slow message. 2012-08-29 17:00:36 +02:00
Johns
3df9acc034 Add number of buffered video output frames to info. 2012-08-28 19:15:11 +02:00
Johns
d9c9061a7c Reset closing only, if trickspeed is set. 2012-08-18 15:53:14 +02:00
Johns
e9fbe6b54f Need get_format for software decoder. 2012-08-17 10:35:52 +02:00
Johns
5e93fb2756 Fix bug: VA-API trickspeed. 2012-08-17 10:33:10 +02:00
Johns
e02c1fa5f9 Revert "mpeg_vdpau" back to "mpegvideo_vdpau". 2012-08-14 16:02:44 +02:00
Johns
c07ec82e6d Fix bug: Can't use software decoder with VDPAU. 2012-08-13 16:57:36 +02:00
Johns
ecb48a5d63 Resume plugin, if dummy player looses control. 2012-08-09 16:22:06 +02:00
Johns
9efc73144d Removes old audio code (!USE_AUDIORING). 2012-08-08 22:58:57 +02:00
arttupii
a920da652b Osd work:
Use -DOSD_DEBUG to debug OSD.
Fix bug #909: Subtitles destroy menu.
Fix bug #1003: Subtitles overlapping.
2012-08-07 16:46:23 +02:00
Johns
9ec077ec8a VA-API/XvBA backend improvements. 2012-07-27 19:15:48 +02:00
Johns
8b0d8d8446 Free used X11 resources colormap, pixmap, cursor. 2012-07-25 16:07:36 +02:00
Johns
15583a79c4 FreeBSD compatibility fix. 2012-07-09 17:17:16 +02:00
Johns
2cdce610d6 Fix bug: spelling USE_VAPI wrong, missing function. 2012-07-06 00:04:08 +02:00
Johns
2d6d151b85 Fix compiler warnings. 2012-07-05 23:59:28 +02:00
Johns
ca4f519a1f Force ffmpeg with hardware codec support. 2012-07-05 17:10:05 +02:00
Johns
583b6f246e Release Version 0.5.1 2012-07-03 16:36:53 +02:00
Johns
e6ce7832ba Add commandline support to disable hardware decoder. 2012-07-03 15:48:44 +02:00
Johns
696bb8e934 Display frame statistics in plugin menu. 2012-07-02 17:05:36 +02:00
Johns
3bb7782d40 Remove not working hotkeys from setup menu. 2012-07-02 15:20:14 +02:00
Johns
b5162bae5c Fix bug: 100% CPU use during playback. 2012-06-30 15:40:33 +02:00
Johns
d486fb2ca1 Fix bug: audio use 100% CPU during pause. 2012-06-30 00:19:36 +02:00
Johns
73d65968ae Remove video display format until it is working. 2012-06-29 15:23:17 +02:00
Johns
3be69730f0 Suggested change. 2012-06-29 15:13:38 +02:00
Johns
6f1c4d6ef6 Video_get_format AudioVideoReady feeds old PTS. 2012-06-27 21:47:30 +02:00
Johns
6aa8601f7d Guard audio skip against old PTS values. 2012-06-27 21:22:25 +02:00
Johns
0f62a521f4 Improved audio skip, after channel switch. 2012-06-25 17:30:30 +02:00
Johns
57af986367 Setup add preview of collapsed tree. 2012-06-23 16:47:04 +02:00
Johns
a2311748ca Removed gcc 4.6 warnings.
avcodec_flush_buffers crash fix.
2012-06-22 19:28:48 +02:00
Johns
2c5a14ae4a Removed gcc 4.6 warnings. Va sync experiment. 2012-06-22 19:27:15 +02:00
Johns
ed1e16dccf Removed warnings and old code. 2012-06-22 19:12:00 +02:00
Johns
da9886e9f1 Fix bug: dvd plugin times out. Readme update. 2012-06-08 15:27:42 +02:00
Johns
32527f832e Makes OSD size configurable. 2012-05-21 15:34:33 +02:00
Johns
57bbd02c57 Fix bug: Black screen is sometimes not shown. 2012-05-17 16:52:08 +02:00
Johns
940849d03f Safer 4:3 detection, 4:3 crop correction. 2012-05-17 16:50:40 +02:00
Johns
c112b850d8 Fix bug: 100% cpu use.
Fix bug: audio/video out of sync after jump in recordings.
2012-05-16 20:35:35 +02:00
Johns
752ee356fa Poll input buffers, if display buffers are full. 2012-05-13 18:33:24 +02:00
Johns
43e70b6a3f Reduce errors during suspend mode. 2012-05-13 16:58:45 +02:00
Johns
541754a619 Support display with non-square pixels. 2012-05-10 16:03:56 +02:00
Johns
3772b2160c Initial ADTS (AAC+) support. 2012-05-09 20:16:46 +02:00
Johns
465c68d839 Fix bug #959: log flooded with service messages. 2012-05-03 15:26:58 +02:00
durchflieger
aca508114b Adds VDR DFAtmo Plugin support. 2012-04-30 14:47:08 +02:00
Johns
49ae1c7211 Fix bug: PTS are 1/90ms and use AudioVideoDelay. 2012-04-30 13:56:26 +02:00
Johns
0cf110da81 Less logging. 2012-04-28 12:38:41 +02:00
Johns
8d5ff6f6fb Skip audio to sync with video. 2012-04-28 12:24:03 +02:00
Johns
5456164dce Mute pass-through, if volume is 0. 2012-04-27 12:31:40 +02:00
Johns
6dd7c2680a Skip audio sync while trick play. 2012-04-26 15:33:51 +02:00
Johns
3b5c1adef2 Fix bug: don't normalize or compress AC3 samples. 2012-04-24 16:02:07 +02:00
Johns
47d840bbff Force black picture after start or suspend. 2012-04-22 21:01:34 +02:00
Johns
207871fd9b Make audio ring buffer size a multiple of 3,5,7,8. 2012-04-22 17:17:54 +02:00
Johns
ebe0beb400 Add upmix from 5 to 6 channels. 2012-04-21 16:45:56 +02:00
Johns
93ddd26a4a Fix bug: alloca wrong size for audio buffer. 2012-04-21 15:47:50 +02:00
Johns
e30e1e5aad Handle jump in stream like stream start. 2012-04-21 12:59:04 +02:00
Johns
d26c34f34f Always compile audio drift correction.
Add audio drift correction configuration to the setup.
2012-04-20 18:28:25 +02:00
mini73
24a8c7f763 Add support for svdr command "stat". 2012-04-20 16:51:04 +02:00
Johns
3e39ffd5e0 New audio ring buffer code, now OSS part. 2012-04-20 16:05:40 +02:00
Johns
53f22a2ed2 Made showing black picture configurable. 2012-04-20 15:40:14 +02:00
Johns
44ca71fedb Adds audio normalize support. 2012-04-19 16:01:20 +02:00
Johns
8039e8ae04 New audio filters next part. 2012-04-19 00:47:34 +02:00
Johns
79e78bf235 Show black picture, if no video stream available.
New audio ring code.
New audio filters (first part).
2012-04-17 16:45:27 +02:00
Johns
c9ef8b759a Fix bug: autocrop toggle didn't work. 2012-04-15 23:03:40 +02:00
Johns
80db7c6656 Setup split into foldable sections. 2012-04-15 22:59:52 +02:00
Johns
3ba18d8720 Add -D option to getopt. 2012-04-15 14:46:57 +02:00
Johns
2ffcb874bb Adds show cursor on mouse move + hide after 200ms. 2012-04-14 21:58:14 +02:00
Johns
5b765f02bd Add Hot-key support for auto-crop enable/disable. 2012-04-14 21:25:44 +02:00
Johns
2c52955ac0 Adds detached start mode. 2012-04-14 21:16:01 +02:00
Johns
09d8588588 Fix buf: VDPAU looses preemption callback. 2012-04-12 15:38:22 +02:00
Johns
71f786711b Fix bug: X11 server keeps sending USR1 signals. 2012-04-12 15:37:19 +02:00
Johns
deea34eb5e Show message for hot-keys. 2012-04-11 18:20:08 +02:00
Johns
1f14af6590 Fix bug: playback errors with old PES recordings. 2012-04-11 12:16:00 +02:00
Johns
aeae505bd4 Adds Hot-key support for 4:3 zoom modes. 2012-04-11 12:15:12 +02:00
22 changed files with 10748 additions and 3082 deletions

2
.gitignore vendored
View File

@ -4,7 +4,7 @@
.*.swp
.gdb_history
# work directory
chaos
.chaos
# generated files
.dependencies
libvdr-softhddevice.so*

309
ChangeLog
View File

@ -1,3 +1,312 @@
User johns
Date:
Preparations for new ffmpeg VDPAU API.
Added VDPAU multi decoder loop changes to VA-API code.
Reenabled VA-API auto detection.
Check and enforce USE_PIP is defined, for new code.
Fix comment spelling.
Disabled old code before removement.
Handle change of audio ac3 downmix direct.
Speedup queuing output surface, when decoder buffers are full.
Fix bug: info shows wrong decoded video surfaces.
Calculate queued output surfaces and show them in info message.
Add support for new API of vdr 2.3.1.
Fix bug: EnableDPMSatBlackScreen only available with USE_SCREENSAVER.
- H264_EOS_TRICKSPEED and USE_MPEG_COMPLETE enabled as default.
User master_red
Date: Mon Aug 10 15:29:33 CEST 2015
Configurable enable DPMS, while black screen is displayed.
User johns
Date: Tue Jun 30 10:12:09 CET 2015
Fix bug: wrong and crash, if vdr draws pixmaps outside OSD.
Fix bug: wrong version number check for av_frame_alloc(), ...
Workaround for ffmpeg 2.6 artifacts.
Fix bug: brightness and .. are calculated wrong.
Add automatic frame rate detection for older ffmpeg versions.
Fix bug: destroyed vdpau surfaces still used in queue.
Fix bug: need signed char, if compiler has unsigned chars.
Try smaller audio puffer, if default size fails.
Fix bug: center cut-out didn't use cut off pixels.
Fix bug #2058: support for Make.plgcfg.
Fix for compile with vdr 2.1.10, for older vdr versions.
User jinx
Date: Mon Feb 16 09:58:06 CET 2015
Enable toggle AC3 downmix.
User johns
Date: Thu Feb 12 10:30:50 CET 2015
Compile with vdr 2.1.10.
Fix bug: AVCodecContext.framerate not supported.
Use video stream frame rate for A/V sync.
User Antti Seppälä
Date: Thu Oct 16 14:15:15 CEST 2014
Corrected black surface for va-api.
User johns
Date: Thu Oct 16 14:05:17 CEST 2014
Newer va-api intel drivers support PutImage.
Use more portable fork for vfork.
Fix crash with VA-API vdpau backend.
User mini73
Date: Sat Oct 11 16:53:18 CEST 2014
Fix bug: random rubbish at the end of letter.
User johns
Date: Tue Sep 23 12:36:39 CEST 2014
Fix audio thread close race condition.
Support ffmpeg new AVFrame API in the audio codec.
Config for automatic AES parameters.
Use GCC built-in functions for atomic operations.
User master_red
Date: Wed Jun 4 14:44:32 CEST 2014
Support detach or suspend in plugin menu.
User johns
Date: Fri May 30 10:18:20 CEST 2014
Fix "make clean-plugins".
Fix compile with newer libav.
Fix OSD bugs.
Add some VA-API VPP info outputs.
Remove build files for old unstable VDR.
User hd.brummy
Date: Thu Jan 30 10:40:49 CET 2014
Update gentoo ebuild.
User johns
Date: Thu Jan 30 10:36:53 CET 2014
Fix spelling in arguments help.
Add Workaround for alsa blocking audio device.
Improves thread handling for audio flush and close.
User mini73
Date: Fri Jan 24 11:30:49 CET 2014
Fix bug: learing x11 remote keys fails.
Add support for umlauts in input fields.
User johns
Date: Tue Jan 14 14:59:44 CET 2014
Fix alternative OSD support with VDPAU bitmap surfaces.
Fix compile error with VDR 2.1.3.
Fix bug: memory leak.
PIP close clears the last used PIP channel.
Fix bug: -DOSD_DEBUG uses old (deleted) variable.
Fix bug: Option softhddevice.BlackPicture has no effect.
User Dr. Seltsam
Date: Tue Nov 5 16:46:34 CET 2013
Add support to configure and clear buffers on channel switch.
User johns
Date: Tue Oct 8 10:18:04 CET 2013
CLOCK_REALTIME -> CLOCK_MONOTONIC to allow time changes.
Add function VideoStreamOpen and always use VideoStreamClose.
Softer audio/video sync.
Add function GetStats to the video output module.
Add function ResetStart to the video output module.
Add function SetClosing to the video output module.
Generalize GetVaapiContext to GetHwAccelContext.
Add compile time configurable trickspeed packets dump.
Fix bug #1410: wrong spelled AC-3 and E-AC-3.
Add compile time selectable h264 trickspeed workaround.
Use ffmpeg new names AVCodecID, AV_CODEC_... .
Fix bug: video lagging behind after recording stop.
Reduce PES error messages.
Fix bug #1392: Wrong value for mixing LFE.
Fix bug: wrong grab size, introduced with AMD VDPAU.
Use VDR SPU decoder as default.
Fix bug: grab image negative quality isn't the default 100.
Support AMD VDPAU with surface size != requested size.
Add cache for auto-crop buffer.
Fix opengl and opengl threads bugs.
Initial opengl support with va-api only.
Fix "broken driver" message if empty ring buffer.
Enable seamless audio track change.
Fix bug #1302: Unsupported pixel format crash.
Fix the fix, when sillpicture is called in suspend mode.
Fix crash, when sillpicture is called in suspend mode.
Add workaround for zero width+height and ffmpeg >= 1.2.
User johns
Date: Sun Mar 17 15:52:42 CET 2013
Release Version 0.6.0
Adds H264 only hardware decoder for still-pictures.
Enable optional VDR-SPU deocder support.
User anbr
Date: Sun Mar 17 15:49:46 CET 2013
Update german translation.
User cyril
Date: Wed Mar 6 17:05:10 CET 2013
Adds raise softhddevice video window support.
User johns
Date: Wed Mar 6 10:30:27 CET 2013
Adds optional only complete mpeg packets support.
Fixes text of EAC-3 pass-through setup.
Try to start or connect to X11 server with -xx.
Try to use HBR (High Bit-Rate) for EAC3.
Improved pass-through (PCM+EAC3) support.
Support VDR 1.7.36 new build system.
Improves VDPAU display preemption handling.
Add modifiers to X11 remote key names (from Sibbi).
Add compatibility with >=ffmpeg 1.1.
Adds PIP (Picture-in-Picture) support.
Split mpeg packets in receiver thread.
User horchi
Date: Tue Jan 1 17:58:54 CET 2013
Adds VDR SeduAtmo Plugin support.
User johns
Date: Tue Jan 1 15:21:28 CET 2013
Support multiple streams with ScaleVideo.
Makes 4:3 and 16:9 display format configurable.
Don't use DVB display format.
User Zoolook
Date: Tue Jan 1 12:49:19 CET 2013
Add support for new vdr ScaleVideo API.
User johns
Date: Tue Jan 1 12:40:12 CET 2013
Add support for old PES HDTV recording.
Disable trickspeed hack, to prevent ffmpeg crash.
Makes X11 server arguments configurable.
Add german translation.
User FireFly
Date: Sun Nov 18 21:15:50 CET 2012
Add german translation.
User johns
Date: Thu Nov 15 22:28:55 CET 2012
Release Version 0.5.2
User maverick-me
Date: Mon Nov 5 23:13:42 CET 2012
Fix 3d OSD position.
User maverick-me
Date: Tue Oct 30 16:50:25 CET 2012
Add support to change the OSD for 3d SBS/TB streams.
User johns
Date: Tue Oct 30 12:11:25 CEST 2012
Use software decoder for still-pictures.
Add Feature #1103: change audio devices without vdr restart.
Fix bug #1089: Vdpau decoder used wrong number of mpeg reference frames.
Fix bug: with some streams endless loop in pes audio parser.
Report correct video size in cSoftHdDevice::GetVideoSize.
Add picture adjustment support for vdpau.
Revert "mpeg_vdpau" back to "mpegvideo_vdpau".
Fix bug: Can't use software decoder with VDPAU.
Resume plugin, if suspend control stops.
Removes old audio code (!USE_AUDIORING).
Use -DOSD_DEBUG to debug OSD.
User arttupii
Date: Tue Aug 7 16:46:23 2012 +0200
Fix bug #909: Subtitles destroy menu.
Fix bug #1003: Subtitles overlapping.
User johns
Date: Fri Jul 27 19:15:48 CEST 2012
Free used X11 resources colormap, pixmap, cursor.
Fix bug: spelling USE_VAPI wrong, missing functions.
User johns
Date: Tue Jul 3 16:35:46 CEST 2012
Release Version 0.5.1
Add commandline support to disable hardware decoder.
Display frame statistics in plugin menu.
Fix bug: 100% CPU use during playback.
Fix bug: audio use 100% CPU during pause.
Guard audio skip against old PTS values.
Improved audio skip, after channel switch.
Setup add preview of collapsed tree.
Fix bug: dvd plugin times out.
Makes OSD size configurable.
Support display with non-square pixels.
Initial ADTS (AAC+) support.
Fix bug #959: log flooded with service messages.
User durchflieger
Date: Mon Apr 30 14:46:51 CEST 2012
Adds VDR DFAtmo Plugin support.
User johns
Date: Mon Apr 30 13:56:26 CEST 2012
Fix bug: don't normalize or compress pass-through samples.
Make audio ring buffer size a multiple of 3,5,7,8.
Add reset ring buffer support.
Fix bug: alloca wrong size for audio buffer.
Handle jump in stream like stream start.
Always compile audio drift correction.
Add audio drift correction configuration to the setup.
User mini73
Date: Fri Apr 20 16:51:14 CEST 2012
Add support for svdr command "stat".
User johns
Date: Fri Apr 20 16:05:40 CEST 2012
Made showing black picture configurable.
Show black picture, if no video stream is available.
Setup split into foldable sections.
Adds show cursor on pointer move and hide after 200ms.
Adds Hot-key support for auto-crop enable/disable/toggle.
Adds detached start mode.
Fix bug: VDPAU looses preemption callback.
Fix bug: X11 server keeps sending USR1 signals, which confuses suspend.
Show message for hot-keys.
Fix bug: playback errors with old PES recordings.
Adds Hot-key support for 4:3 zoom modes.
User johns
Date: Sat Apr 7 20:21:16 CEST 2012

246
Makefile
View File

@ -6,154 +6,209 @@
# The official name of this plugin.
# This name will be used in the '-P...' option of VDR to load the plugin.
# By default the main source file also carries this name.
# IMPORTANT: the presence of this macro is important for the Make.config
# file. So it must be defined, even if it is not used here!
#
PLUGIN = softhddevice
### Configuration (edit this for your needs)
# support alsa audio output module
ALSA ?= $(shell pkg-config --exists alsa && echo 1)
# support OSS audio output module
OSS ?= 1
# support VDPAU video output module
VDPAU ?= $(shell pkg-config --exists vdpau && echo 1)
# support VA-API video output module (deprecated)
VAAPI ?= $(shell pkg-config --exists libva && echo 1)
# support glx output
OPENGL ?= $(shell pkg-config --exists gl glu && echo 1)
# screensaver disable/enable
SCREENSAVER ?= 1
# use ffmpeg libswresample
SWRESAMPLE ?= $(shell pkg-config --exists libswresample && echo 1)
# use libav libavresample
ifneq ($(SWRESAMPLE),1)
AVRESAMPLE ?= $(shell pkg-config --exists libavresample && echo 1)
endif
CONFIG := # -DDEBUG #-DOSD_DEBUG # enable debug output+functions
#CONFIG += -DSTILL_DEBUG=2 # still picture debug verbose level
CONFIG += -DAV_INFO -DAV_INFO_TIME=3000 # info/debug a/v sync
CONFIG += -DUSE_PIP # PIP support
#CONFIG += -DHAVE_PTHREAD_NAME # supports new pthread_setname_np
#CONFIG += -DNO_TS_AUDIO # disable ts audio parser
#CONFIG += -DUSE_TS_VIDEO # build new ts video parser
CONFIG += -DUSE_MPEG_COMPLETE # support only complete mpeg packets
CONFIG += -DH264_EOS_TRICKSPEED # insert seq end packets for trickspeed
#CONDIF += -DDUMP_TRICKSPEED # dump trickspeed packets
#CONFIG += -DUSE_BITMAP # VDPAU, use bitmap surface for OSD
CONFIG += -DUSE_VDR_SPU # use VDR SPU decoder.
#CONFIG += -DUSE_SOFTLIMIT # (tobe removed) limit the buffer fill
### The version number of this plugin (taken from the main source file):
VERSION = $(shell grep 'static const char \*const VERSION *=' $(PLUGIN).cpp | awk '{ print $$7 }' | sed -e 's/[";]//g')
GIT_REV = $(shell git describe --always 2>/dev/null)
### Configuration (edit this for your needs)
CONFIG := #-DDEBUG
#CONFIG += -DUSE_AUDIO_DRIFT_CORRECTION # build new audio drift code
#CONFIG += -DUSE_AC3_DRIFT_CORRECTION # build new ac-3 drift code
CONFIG += -DAV_INFO -DAV_INFO_TIME=3000 # debug a/v sync
#CONFIG += -DHAVE_PTHREAD_NAME # supports new pthread_setname_np
#CONFIG += -DNO_TS_AUDIO # disable ts audio parser
#CONFIG += -DUSE_TS_VIDEO # build new ts video parser
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 += -DUSE_OSS
### The C++ compiler and options:
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 -Werror=overloaded-virtual
### The directory environment:
VDRDIR ?= ../../..
LIBDIR ?= ../../lib
# Use package data if installed...otherwise assume we're under the VDR source directory:
PKGCFG = $(if $(VDRDIR),$(shell pkg-config --variable=$(1) $(VDRDIR)/vdr.pc),$(shell PKG_CONFIG_PATH="$$PKG_CONFIG_PATH:../../.." pkg-config --variable=$(1) vdr))
LIBDIR = $(call PKGCFG,libdir)
LOCDIR = $(call PKGCFG,locdir)
PLGCFG = $(call PKGCFG,plgcfg)
#
TMPDIR ?= /tmp
### Make sure that necessary options are included:
### The compiler options:
include $(VDRDIR)/Make.global
export CFLAGS = $(call PKGCFG,cflags)
export CXXFLAGS = $(call PKGCFG,cxxflags)
ifeq ($(CFLAGS),)
$(warning CFLAGS not set)
endif
ifeq ($(CXXFLAGS),)
$(warning CXXFLAGS not set)
endif
### The version number of VDR's plugin API:
APIVERSION = $(call PKGCFG,apiversion)
### Allow user defined options to overwrite defaults:
-include $(VDRDIR)/Make.config
### The version number of VDR's plugin API (taken from VDR's "config.h"):
APIVERSION = $(shell sed -ne '/define APIVERSION/s/^.*"\(.*\)".*$$/\1/p' $(VDRDIR)/config.h)
-include $(PLGCFG)
### The name of the distribution archive:
ARCHIVE = $(PLUGIN)-$(VERSION)
PACKAGE = vdr-$(ARCHIVE)
### Includes, Defines and dependencies (add further entries here):
### The name of the shared object file:
INCLUDES += -I$(VDRDIR)/include
SOFILE = libvdr-$(PLUGIN).so
DEFINES += $(CONFIG) -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"' \
### Parse softhddevice config
ifeq ($(ALSA),1)
CONFIG += -DUSE_ALSA
_CFLAGS += $(shell pkg-config --cflags alsa)
LIBS += $(shell pkg-config --libs alsa)
endif
ifeq ($(OSS),1)
CONFIG += -DUSE_OSS
endif
ifeq ($(VDPAU),1)
CONFIG += -DUSE_VDPAU
_CFLAGS += $(shell pkg-config --cflags vdpau)
LIBS += $(shell pkg-config --libs vdpau)
endif
ifeq ($(VAAPI),1)
CONFIG += -DUSE_VAAPI
_CFLAGS += $(shell pkg-config --cflags libva-x11 libva)
LIBS += $(shell pkg-config --libs libva-x11 libva)
ifeq ($(OPENGL),1)
_CFLAGS += $(shell pkg-config --cflags libva-glx)
LIBS += $(shell pkg-config --libs libva-glx)
endif
endif
ifeq ($(OPENGL),1)
CONFIG += -DUSE_GLX
_CFLAGS += $(shell pkg-config --cflags gl glu)
LIBS += $(shell pkg-config --libs gl glu)
endif
ifeq ($(SCREENSAVER),1)
CONFIG += -DUSE_SCREENSAVER
_CFLAGS += $(shell pkg-config --cflags xcb-screensaver xcb-dpms)
LIBS += $(shell pkg-config --libs xcb-screensaver xcb-dpms)
endif
ifeq ($(SWRESAMPLE),1)
CONFIG += -DUSE_SWRESAMPLE
_CFLAGS += $(shell pkg-config --cflags libswresample)
LIBS += $(shell pkg-config --libs libswresample)
endif
ifeq ($(AVRESAMPLE),1)
CONFIG += -DUSE_AVRESAMPLE
_CFLAGS += $(shell pkg-config --cflags libavresample)
LIBS += $(shell pkg-config --libs libavresample)
endif
_CFLAGS += $(shell pkg-config --cflags libavcodec x11 x11-xcb xcb xcb-icccm)
LIBS += -lrt $(shell pkg-config --libs libavcodec x11 x11-xcb xcb xcb-icccm)
### Includes and Defines (add further entries here):
INCLUDES +=
DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"' -D_GNU_SOURCE $(CONFIG) \
$(if $(GIT_REV), -DGIT_REV='"$(GIT_REV)"')
_CFLAGS = $(DEFINES) $(INCLUDES) \
$(shell pkg-config --cflags libavcodec) \
`pkg-config --cflags x11 x11-xcb xcb xcb-xv xcb-shm xcb-dpms xcb-atom\
xcb-screensaver xcb-randr xcb-glx xcb-icccm xcb-keysyms`\
`pkg-config --cflags gl glu` \
$(if $(findstring USE_VDPAU,$(CONFIG)), \
`pkg-config --cflags vdpau`) \
$(if $(findstring USE_VAAPI,$(CONFIG)), \
`pkg-config --cflags libva-x11 libva-glx libva`) \
$(if $(findstring USE_ALSA,$(CONFIG)), \
`pkg-config --cflags alsa`)
### Make it standard
#override _CFLAGS += -Werror
override CXXFLAGS += $(_CFLAGS)
override CFLAGS += $(_CFLAGS)
LIBS += -lrt \
$(shell pkg-config --libs libavcodec) \
`pkg-config --libs x11 x11-xcb xcb xcb-xv xcb-shm xcb-dpms xcb-atom\
xcb-screensaver xcb-randr xcb-glx xcb-icccm xcb-keysyms`\
`pkg-config --libs gl glu` \
$(if $(findstring USE_VDPAU,$(CONFIG)), \
`pkg-config --libs vdpau`) \
$(if $(findstring USE_VAAPI,$(CONFIG)), \
`pkg-config --libs libva-x11 libva-glx libva`) \
$(if $(findstring USE_ALSA,$(CONFIG)), \
`pkg-config --libs alsa`)
override CXXFLAGS += $(_CFLAGS) $(DEFINES) $(INCLUDES) \
-g -W -Wall -Wextra -Winit-self -Werror=overloaded-virtual
override CFLAGS += $(_CFLAGS) $(DEFINES) $(INCLUDES) \
-g -W -Wall -Wextra -Winit-self -Wdeclaration-after-statement
### The object files (add further files here):
OBJS = $(PLUGIN).o softhddev.o video.o audio.o codec.o ringbuffer.o
SRCS = $(wildcard $(OBJS:.o=.c)) $(PLUGIN).cpp
### The main target:
all: libvdr-$(PLUGIN).so i18n
### Implicit rules:
#
#%.o: %.cpp
# $(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) $<
all: $(SOFILE) i18n
### Dependencies:
MAKEDEP = $(CC) -MM -MG
MAKEDEP = $(CXX) -MM -MG
DEPFILE = .dependencies
$(DEPFILE): Makefile
@$(MAKEDEP) $(DEFINES) $(INCLUDES) $(SRCS) >$@
$(OBJS): Makefile
@$(MAKEDEP) $(CXXFLAGS) $(SRCS) > $@
-include $(DEPFILE)
### Internationalization (I18N):
PODIR = po
LOCALEDIR = $(VDRDIR)/locale
I18Npo = $(wildcard $(PODIR)/*.po)
I18Nmsgs = $(addprefix $(LOCALEDIR)/, $(addsuffix /LC_MESSAGES/vdr-$(PLUGIN).mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file))))))
I18Nmo = $(addsuffix .mo, $(foreach file, $(I18Npo), $(basename $(file))))
I18Nmsgs = $(addprefix $(DESTDIR)$(LOCDIR)/, $(addsuffix /LC_MESSAGES/vdr-$(PLUGIN).mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file))))))
I18Npot = $(PODIR)/$(PLUGIN).pot
%.mo: %.po
msgfmt -c -o $@ $<
$(I18Npot): $(wildcard *.cpp) $(wildcard *.c)
$(I18Npot): $(SRCS)
xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP \
-k_ -k_N --package-name=VDR --package-version=$(VDRVERSION) \
--msgid-bugs-address='<see README>' -o $@ $^
-k_ -k_N --package-name=vdr-$(PLUGIN) --package-version=$(VERSION) \
--msgid-bugs-address='<see README>' -o $@ `ls $^`
%.po: $(I18Npot)
msgmerge -U --no-wrap --no-location --backup=none -q $@ $<
msgmerge -U --no-wrap --no-location --backup=none -q -N $@ $<
@touch $@
$(I18Nmsgs): $(LOCALEDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo
@mkdir -p $(dir $@)
cp $< $@
$(I18Nmsgs): $(DESTDIR)$(LOCDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo
install -D -m644 $< $@
.PHONY: i18n
i18n: $(I18Nmsgs) $(I18Npot)
i18n: $(I18Nmo) $(I18Npot)
install-i18n: $(I18Nmsgs)
### Targets:
libvdr-$(PLUGIN).so: $(OBJS) Makefile
$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared -fPIC $(OBJS) -o $@ $(LIBS)
@cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION)
$(OBJS): Makefile
$(SOFILE): $(OBJS)
$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) $(LIBS) -o $@
install-lib: $(SOFILE)
install -D $^ $(DESTDIR)$(LIBDIR)/$^.$(APIVERSION)
install: install-lib install-i18n
dist: $(I18Npo) clean
@-rm -rf $(TMPDIR)/$(ARCHIVE)
@ -164,19 +219,20 @@ dist: $(I18Npo) clean
@echo Distribution package created as $(PACKAGE).tgz
clean:
@-rm -f $(OBJS) $(DEPFILE) *.so *.tgz core* *~ $(PODIR)/*.mo $(PODIR)/*.pot
@-rm -f $(PODIR)/*.mo $(PODIR)/*.pot
@-rm -f $(OBJS) $(DEPFILE) *.so *.tgz core* *~
install: libvdr-$(PLUGIN).so
cp --remove-destination libvdr-$(PLUGIN).so \
/usr/lib/vdr/plugins/libvdr-$(PLUGIN).so.$(APIVERSION)
## Private Targets:
HDRS= $(wildcard *.h)
indent:
for i in $(wildcard $(OBJS:.o=.c)) $(HDRS); do \
indent $$i; unexpand -a $$i > $$i.up; mv $$i.up $$i; \
for i in $(SRCS) $(HDRS); do \
indent $$i; \
unexpand -a $$i | sed -e s/constconst/const/ > $$i.up; \
mv $$i.up $$i; \
done
video_test: video.c Makefile
$(CC) -DVIDEO_TEST -DVERSION='"$(VERSION)"' $(CFLAGS) $(LDFLAGS) $< $(LIBS) \
-o $@
$(CC) -DVIDEO_TEST -DVERSION='"$(VERSION)"' $(CFLAGS) $(LDFLAGS) $< \
$(LIBS) -o $@

View File

@ -1,6 +1,6 @@
@file README.txt @brief A software HD output device for VDR
Copyright (c) 2011, 2012 by Johns. All Rights Reserved.
Copyright (c) 2011 - 2013 by Johns. All Rights Reserved.
Contributor(s):
@ -20,25 +20,27 @@ $Id$
A software and GPU emulated HD output device plugin for VDR.
o Video decoder CPU / VA-API / VDPAU
o Video output VA-API / VDPAU
o Video decoder CPU / VDPAU
o Video output VDPAU
o Audio FFMpeg / Alsa / Analog
o Audio FFMpeg / Alsa / Digital
o Audio FFMpeg / OSS / Analog
o HDMI/SPDIF pass-through
o YaepgHD support
o Software volume, compression, normalize and channel resample
o VDR ScaleVideo API
o Software deinterlacer Bob (VA-API only)
o Autocrop
o Grab image (VDPAU only)
o Suspend
o Suspend / Dettach
o Letterbox, Stretch and Center cut-out video display modes
o atmo light support with plugin http://github.com/durchflieger/DFAtmo
o PIP (Picture-in-Picture) (VDPAU only)
o planned: Video decoder VA-API Branch: vaapi-ext/staging
o planned: Video output XvBA / Opengl / Xv
o planned: VA-API grab image
o planned: Improved Software Deinterlacer (yadif or/and ffmpeg filters)
o planned: software volume, software channel resample
o planned: atmo light support
o planned: Remove VA-API decoder and output support
o planned: Video decoder OpenMax
o planned: Video output Opengl / Xv
o planned: Improved software deinterlacer (yadif or/and ffmpeg filters)
o XvBa support is no longer planned (use future Radeon UVD VDPAU)
To compile you must have the 'requires' installed.
@ -56,8 +58,8 @@ Install:
git clone git://projects.vdr-developer.org/vdr-plugin-softhddevice.git
cd vdr-plugin-softhddevice
make VDRDIR=<path-to-your-vdr-files> LIBDIR=.
gentoo: make VDRDIR=/usr/include/vdr LIBDIR=.
make
make install
2a) tarball
@ -66,10 +68,11 @@ Install:
tar vxf vdr-softhddevice-*.tar.bz2
cd softhddevice-*
make VDRDIR=<path-to-your-vdr-files> LIBDIR=.
make
make install
You can edit Makefile to enable/disable VDPAU / VA-API / Alsa / OSS
support.
support. The default is to autodetect as much as possible.
Setup: environment
------
@ -81,14 +84,12 @@ Setup: environment
if set don't use the hardware decoders
NO_MPEG_HW=1
if set don't use the hardware decoder for mpeg1/2
STUDIO_LEVELS=1
if set use studio levels with vdpau (deprecated use setup)
only if alsa is configured
ALSA_DEVICE=default
alsa PCM device name
ALSA_AC3_DEVICE=
alsa AC3/pass-though device name
ALSA_PASSTHROUGH_DEVICE=
alsa pass-though (AC-3,E-AC-3,DTS,...) device name
ALSA_MIXER=default
alsa control device name
ALSA_MIXER_CHANNEL=PCM
@ -97,8 +98,8 @@ Setup: environment
only if oss is configured
OSS_AUDIODEV=/dev/dsp
oss dsp device name
OSS_AC3_AUDIODEV=
oss AC3/pass-though device name
OSS_PASSTHROUGHDEV=
oss pass-though (AC-3,E-AC-3,DTS,...) device name
OSS_MIXERDEV=/dev/mixer
oss mixer device name
OSS_MIXER_CHANNEL=pcm
@ -108,12 +109,17 @@ Setup: /etc/vdr/setup.conf
------
Following is supported:
softhddevice.MakePrimary = 1
softhddevice.MakePrimary = 0
0 = no change, 1 make softhddevice primary at start
softhddevice.HideMainMenuEntry = 0
0 = show softhddevice main menu entry, 1 = hide entry
softhddevice.Osd.Width = 0
0 = auto (=display, unscaled) n = fixed osd size scaled for display
softhddevice.Osd.Height = 0
0 = auto (=display, unscaled) n = fixed osd size scaled for display
<res> of the next parameters is 576i, 720p, 1080i_fake or 1080i.
1080i_fake is 1280x1080 or 1440x1080
1080i is "real" 1920x1080
@ -123,7 +129,7 @@ Setup: /etc/vdr/setup.conf
softhddevice.<res>.Deinterlace = 0
0 = bob, 1 = weave, 2 = temporal, 3 = temporal_spatial, 4 = software
(only 0, 1 supported with vaapi)
(only 0, 1, 4 supported with VA-API)
softhddevice.<res>.SkipChromaDeinterlace = 0
0 = disabled, 1 = enabled (for slower cards, poor qualität)
@ -149,13 +155,40 @@ Setup: /etc/vdr/setup.conf
delay audio or delay video
softhddevice.AudioPassthrough = 0
0 = none, 1 = AC-3
0 = none, 1 = PCM, 2 = MPA, 4 = AC-3, 8 = EAC-3, -X disable
for AC-3 the pass-through device is used.
for PCM/AC-3/EAC-3 the pass-through device is used and the audio
stream is passed undecoded to the output device.
z.b. 12 = AC-3+EAC-3, 13 = PCM+AC-3+EAC-3
note: MPA/DTS/TrueHD/... aren't supported yet
negative values disable passthrough
softhddevice.AudioDownmix = 0
0 = none, 1 = downmix
downmix AC-3 to stero.
Use ffmpeg/libav downmix of AC-3/EAC-3 audio to stereo.
softhddevice.AudioSoftvol = 0
0 = off, use hardware volume control
1 = on, use software volume control
softhddevice.AudioNormalize = 0
0 = off, 1 = enable audio normalize
softhddevice.AudioMaxNormalize = 0
maximal volume factor/1000 of the normalize filter
softhddevice.AudioCompression = 0
0 = off, 1 = enable audio compression
softhddevice.AudioMaxCompression = 0
maximal volume factor/1000 of the compression filter
softhddevice.AudioStereoDescent = 0
reduce volume level (/1000) for stereo sources
softhddevice.AudioBufferTime = 0
0 = default (336 ms)
1 - 1000 = size of the buffer in ms
softhddevice.AutoCrop.Interval = 0
0 disables auto-crop
@ -196,11 +229,49 @@ Setup: /etc/vdr/setup.conf
0 disable soft start of audio/video sync
1 enable soft start of audio/video sync
VideoDisplayFormat = ?
softhddevice.BlackPicture = 0
0 disable black picture during channel switch
1 enable black picture during channel switch
softhddevice.ClearOnSwitch = 0
0 keep video und audio buffers during channel switch
1 clear video and audio buffers on channel switch
softhddevice.Video4to3DisplayFormat = 1
0 pan and scan
1 letter box
2 center cut-out
softhddevice.VideoOtherDisplayFormat = 1
0 pan and scan
1 pillar box
2 center cut-out
softhddevice.pip.X = 79
softhddevice.pip.Y = 78
softhddevice.pip.Width = 18
softhddevice.pip.Height = 18
PIP pip window position and size in percent.
softhddevice.pip.VideoX = 0
softhddevice.pip.VideoY = 0
softhddevice.pip.VideoWidth = 0
softhddevice.pip.VideoHeight = 0
PIP video window position and size in percent.
softhddevice.pip.Alt.X = 0
softhddevice.pip.Alt.Y = 50
softhddevice.pip.Alt.Width = 0
softhddevice.pip.Alt.Height = 50
PIP alternative pip window position and size in percent.
softhddevice.pip.Alt.VideoX = 0
softhddevice.pip.Alt.VideoY = 0
softhddevice.pip.Alt.VideoWidth = 0
softhddevice.pip.Alt.VideoHeight = 50
PIP alternative video window position and size in percent.
Setup: /etc/vdr/remote.conf
------
@ -248,6 +319,19 @@ Keymacros:
@softhddevice Blue 1 0 disable pass-through
@softhddevice Blue 1 1 enable pass-through
@softhddevice Blue 1 2 toggle pass-through
@softhddevice Blue 1 3 decrease audio delay by 10ms
@softhddevice Blue 1 4 increase audio delay by 10ms
@softhddevice Blue 1 5 toggle ac3 mixdown
@softhddevice Blue 2 0 disable fullscreen
@softhddevice Blue 2 1 enable fullscreen
@softhddevice Blue 2 2 toggle fullscreen
@softhddevice Blue 2 3 disable auto-crop
@softhddevice Blue 2 4 enable auto-crop
@softhddevice Blue 2 5 toggle auto-crop
@softhddevice Blue 3 0 stretch 4:3 to 16:9
@softhddevice Blue 3 1 letter box 4:3 in 16:9
@softhddevice Blue 3 2 center cut-out 4:3 to 16:9
@softhddevice Blue 3 9 rotate 4:3 to 16:9 zoom mode
Running:
--------
@ -259,11 +343,21 @@ Warning:
--------
libav is not supported, expect many bugs with it.
Known Bugs:
-----------
VA-API doesn't v-sync h264 interlaced streams
vdr-image not working
Requires:
---------
media-video/vdr (version >=1.7.xx)
Video Disk Recorder - turns a pc into a powerful set top box
for DVB.
http://www.tvdr.de/
media-video/ffmpeg (version >=0.7)
Complete solution to record, convert and stream audio and
video. Includes libavcodec.
video. Includes libavcodec and libswresample.
http://ffmpeg.org
media-libs/alsa-lib
Advanced Linux Sound Architecture Library
@ -271,7 +365,7 @@ Requires:
or
kernel support for oss/oss4 or alsa oss emulation
x11-libs/libva
x11-libs/libva (deprecated)
Video Acceleration (VA) API for Linux
http://www.freedesktop.org/wiki/Software/vaapi
x11-libs/libva-intel-driver

34
Todo
View File

@ -1,6 +1,6 @@
@file Todo @brief A software HD output device for VDR
Copyright (c) 2011, 2012 by Johns. All Rights Reserved.
Copyright (c) 2011 - 2013 by Johns. All Rights Reserved.
Contributor(s):
@ -19,6 +19,9 @@ GNU Affero General Public License for more details.
$Id: $
missing:
documentation of the PIP hotkeys.
svdrp help page missing PIP hotkeys.
svdrp stat: add X11 crashed status.
more software deinterlace (yadif, ...)
more software decoder with software deinterlace
suspend output / energie saver: stop and restart X11
@ -37,9 +40,18 @@ video:
radio no need to wait on video buffers
starting with radio and own X11 server, shows no video
some low-bandwidth tv channels have hiccups.
check start with 24Hz display rate
crash with ffmpeg without vaapi and vdpau.
still-picture of PES recordings should use VideoMpegEnqueue.
convert PIX_FMT_... PixelFormat to new names AV_PIX_FMT_..., AVPixelFormat.
atmo service support 3D grab
no warnings during still picture
vdpau:
software decoder path not working
software deinterlace path not working.
OSD looses transparency, during channel switch.
OSD looses transparency, while moving cut marks.
ffmpeg >=1.2 supports same API like VA-API.
libva:
yaepghd (VaapiSetOutputPosition) support
@ -49,6 +61,9 @@ libva:
still many: (workaround export NO_MPEG_HW=1)
[drm:i915_hangcheck_elapsed] *ERROR* Hangcheck timer elapsed... GPU hung
[drm:i915_wait_request] *ERROR* i915_wait_request returns -11 ...
missing OSD support for 3d SBS / Top-Bottom streams, like VPDAU.
PIP support / multistream handling
VA-AP VaapiCleanup crash after channel without video.
libva: branch vaapi-ext / staging
add support for vaapi-ext / staging
@ -73,10 +88,8 @@ x11:
support embedded mode
audio:
Combine alsa+oss ringbuffer code.
Make alsa thread/polled and oss thread/polled output module runtime
selectable.
software volume support (could be done with asound.conf)
Mute should do a real mute and not only set volume to zero.
Starting suspended and muted, didn't register the mute.
Relaxed audio sync checks at end of packet and already in sync
@ -84,12 +97,10 @@ audio:
only wait for video start, if video is running.
Not primary device, don't use and block audio/video.
multiple open of audio device, reduce them.
Not all channel conversions are written (f.e. 2->3 ... 5->6 ...)
audio/alsa:
better downmix of >2 channels on 2 channel hardware
remix support of unsupported sample rates
libav supports only resample of mono to 2 channels
ffmpeg didn't support resample of 5 to 2 channels
audio/oss:
alsa oss emulation mixer "pcm" not working
@ -109,24 +120,21 @@ plugins:
setup:
Setup of decoder type.
Setup of output type.
Setup of display type.
Setup 4:3 zoom type
Some setup parameters are not used until restart.
Can a notice be added to the setup menu?
unsorted:
stoping vdr while plugin is suspended opens and closes a window.
svdrp prim: support plugin names for device numbers.
Workaround exists: hangup PipVideoStream -> Vdpau_get_format -> xcb -> poll
+ lock DecoderLockMutex
check compiletime and runtime ffmpeg/libav version during init.
future features (not planed for 1.0 - 1.5)
video out with xv
video out with opengl
video out with xvba
software decoder for xv / opengl
atmolight support
multistream handling
pip support
save and use auto-crop with channel zapping
upmix stereo to AC-3 (supported by alsa plugin)

2591
audio.c

File diff suppressed because it is too large Load Diff

13
audio.h
View File

@ -1,7 +1,7 @@
///
/// @file audio.h @brief Audio module headerfile
///
/// Copyright (c) 2009 - 2012 by Johns. All Rights Reserved.
/// Copyright (c) 2009 - 2014 by Johns. All Rights Reserved.
///
/// Contributor(s):
///
@ -42,10 +42,17 @@ extern void AudioPlay(void); ///< play audio
extern void AudioPause(void); ///< pause audio
extern void AudioSetBufferTime(int); ///< set audio buffer time
extern void AudioSetSoftvol(int); ///< enable/disable softvol
extern void AudioSetNormalize(int, int); ///< set normalize parameters
extern void AudioSetCompression(int, int); ///< set compression parameters
extern void AudioSetStereoDescent(int); ///< set stereo loudness descent
extern void AudioSetDevice(const char *); ///< set PCM audio device
extern void AudioSetDeviceAC3(const char *); ///< set pass-through device
/// set pass-through device
extern void AudioSetPassthroughDevice(const char *);
extern void AudioSetChannel(const char *); ///< set mixer channel
extern void AudioSetAutoAES(int); ///< set automatic AES flag handling
extern void AudioInit(void); ///< setup audio module
extern void AudioExit(void); ///< cleanup and exit audio module
@ -54,5 +61,7 @@ extern void AudioExit(void); ///< cleanup and exit audio module
//----------------------------------------------------------------------------
extern char AudioAlsaDriverBroken; ///< disable broken driver message
extern char AudioAlsaNoCloseOpen; ///< disable alsa close/open fix
extern char AudioAlsaCloseOpenDelay; ///< enable alsa close/open delay fix
/// @}

1011
codec.c

File diff suppressed because it is too large Load Diff

33
codec.h
View File

@ -1,7 +1,7 @@
///
/// @file codec.h @brief Codec module headerfile
///
/// Copyright (c) 2009 - 2012 by Johns. All Rights Reserved.
/// Copyright (c) 2009 - 2013, 2015 by Johns. All Rights Reserved.
///
/// Contributor(s):
///
@ -23,6 +23,16 @@
/// @addtogroup Codec
/// @{
//----------------------------------------------------------------------------
// Defines
//----------------------------------------------------------------------------
#define CodecPCM 0x01 ///< PCM bit mask
#define CodecMPA 0x02 ///< MPA bit mask (planned)
#define CodecAC3 0x04 ///< AC-3 bit mask
#define CodecEAC3 0x08 ///< E-AC-3 bit mask
#define CodecDTS 0x10 ///< DTS bit mask (planned)
//----------------------------------------------------------------------------
// Typedefs
//----------------------------------------------------------------------------
@ -33,6 +43,13 @@ typedef struct _video_decoder_ VideoDecoder;
/// Audio decoder typedef.
typedef struct _audio_decoder_ AudioDecoder;
//----------------------------------------------------------------------------
// Variables
//----------------------------------------------------------------------------
/// Flag prefer fast xhannel switch
extern char CodecUsePossibleDefectFrames;
//----------------------------------------------------------------------------
// Prototypes
//----------------------------------------------------------------------------
@ -44,7 +61,7 @@ extern VideoDecoder *CodecVideoNewDecoder(VideoHwDecoder *);
extern void CodecVideoDelDecoder(VideoDecoder *);
/// Open video codec.
extern void CodecVideoOpen(VideoDecoder *, const char *, int);
extern void CodecVideoOpen(VideoDecoder *, int);
/// Close video codec.
extern void CodecVideoClose(VideoDecoder *);
@ -62,13 +79,19 @@ extern AudioDecoder *CodecAudioNewDecoder(void);
extern void CodecAudioDelDecoder(AudioDecoder *);
/// Open audio codec.
extern void CodecAudioOpen(AudioDecoder *, const char *, int);
extern void CodecAudioOpen(AudioDecoder *, int);
/// Close audio codec.
extern void CodecAudioClose(AudioDecoder *);
/// Decode an audio packet.
extern void CodecAudioDecodeOld(AudioDecoder *, const AVPacket *);
/// Set audio drift correction.
extern void CodecSetAudioDrift(int);
/// Set audio pass-through.
extern void CodecSetAudioPassthrough(int);
/// Set audio downmix.
extern void CodecSetAudioDownmix(int);
/// Decode an audio packet.
extern void CodecAudioDecode(AudioDecoder *, const AVPacket *);

97
iatomic.h Normal file
View File

@ -0,0 +1,97 @@
///
/// @file iatomic.h @brief Misc function header file
///
/// Copyright (c) 2014 by Johns. All Rights Reserved.
///
/// Contributor(s):
///
/// License: AGPLv3
///
/// This program is free software: you can redistribute it and/or modify
/// it under the terms of the GNU Affero General Public License as
/// published by the Free Software Foundation, either version 3 of the
/// License.
///
/// This program is distributed in the hope that it will be useful,
/// but WITHOUT ANY WARRANTY; without even the implied warranty of
/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
/// GNU Affero General Public License for more details.
///
/// $Id$
//////////////////////////////////////////////////////////////////////////////
/// @addtogroup iatomic
/// @{
#define GCC_VERSION (__GNUC__ * 10000 \
+ __GNUC_MINOR__ * 100 \
+ __GNUC_PATCHLEVEL__)
// gcc before 4.7 didn't support atomic builtins,
// use alsa atomic functions.
#if GCC_VERSION < 40700
#include <alsa/iatomic.h>
#else
//////////////////////////////////////////////////////////////////////////////
// Defines
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// Declares
//////////////////////////////////////////////////////////////////////////////
///
/// atomic type, 24 bit useable,
///
typedef volatile int atomic_t;
//////////////////////////////////////////////////////////////////////////////
// Prototypes
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// Inlines
//////////////////////////////////////////////////////////////////////////////
///
/// Set atomic value.
///
#define atomic_set(ptr, val) \
__atomic_store_n(ptr, val, __ATOMIC_SEQ_CST)
///
/// Read atomic value.
///
#define atomic_read(ptr) \
__atomic_load_n(ptr, __ATOMIC_SEQ_CST)
///
/// Increment atomic value.
///
#define atomic_inc(ptr) \
__atomic_add_fetch(ptr, 1, __ATOMIC_SEQ_CST)
///
/// Decrement atomic value.
///
#define atomic_dec(ptr) \
__atomic_sub_fetch(ptr, 1, __ATOMIC_SEQ_CST)
///
/// Add to atomic value.
///
#define atomic_add(val, ptr) \
__atomic_add_fetch(ptr, val, __ATOMIC_SEQ_CST)
///
/// Subtract from atomic value.
///
#define atomic_sub(val, ptr) \
__atomic_sub_fetch(ptr, val, __ATOMIC_SEQ_CST)
#endif
/// @}

View File

@ -1,2 +0,0 @@
#!/bin/sh
exec make VDRDIR=/usr/include/vdr LIBDIR=. "$@"

1421
po/de_DE.po Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
///
/// @file ringbuffer.c @brief Ringbuffer module
///
/// Copyright (c) 2009, 2011 by Johns. All Rights Reserved.
/// Copyright (c) 2009, 2011, 2014 by Johns. All Rights Reserved.
///
/// Contributor(s):
///
@ -30,8 +30,7 @@
#include <stdlib.h>
#include <string.h>
#include <alsa/iatomic.h>
#include "iatomic.h"
#include "ringbuffer.h"
/// ring buffer structure
@ -48,6 +47,18 @@ struct _ring_buffer_
atomic_t Filled; ///< how many of the buffer is used
};
/**
** Reset ring buffer pointers.
**
** @param rb Ring buffer to reset read/write pointers.
*/
void RingBufferReset(RingBuffer * rb)
{
rb->ReadPointer = rb->Buffer;
rb->WritePointer = rb->Buffer;
atomic_set(&rb->Filled, 0);
}
/**
** Allocate a new ring buffer.
**
@ -69,10 +80,8 @@ RingBuffer *RingBufferNew(size_t size)
}
rb->Size = size;
rb->ReadPointer = rb->Buffer;
rb->WritePointer = rb->Buffer;
rb->BufferEnd = rb->Buffer + size;
atomic_set(&rb->Filled, 0);
RingBufferReset(rb);
return rb;
}
@ -89,7 +98,7 @@ void RingBufferDel(RingBuffer * rb)
/**
** Advance write pointer in ring buffer.
**
** @param rb Ring buffer to adance write pointer.
** @param rb Ring buffer to advance write pointer.
** @param cnt Number of bytes to be adavanced.
**
** @returns Number of bytes that could be advanced in ring buffer.
@ -198,7 +207,7 @@ size_t RingBufferGetWritePointer(RingBuffer * rb, void **wp)
/**
** Advance read pointer in ring buffer.
**
** @param rb Ring buffer to adance read pointer.
** @param rb Ring buffer to advance read pointer.
** @param cnt Number of bytes to be advanced.
**
** @returns Number of bytes that could be advanced in ring buffer.

View File

@ -23,13 +23,16 @@
/// @addtogroup Ringbuffer
/// @{
///< ring buffer typedef
/// ring buffer typedef
typedef struct _ring_buffer_ RingBuffer;
///< create new ring buffer
/// reset ring buffer pointers
extern void RingBufferReset(RingBuffer *);
/// create new ring buffer
extern RingBuffer *RingBufferNew(size_t);
///< free ring buffer
/// free ring buffer
extern void RingBufferDel(RingBuffer *);
/// write into ring buffer

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
///
/// @file softhddev.h @brief software HD device plugin header file.
///
/// Copyright (c) 2011 - 2012 by Johns. All Rights Reserved.
/// Copyright (c) 2011 - 2015 by Johns. All Rights Reserved.
///
/// Contributor(s):
///
@ -25,7 +25,8 @@ extern "C"
{
#endif
/// C callback feed key press
extern void FeedKeyPress(const char *, const char *, int, int);
extern void FeedKeyPress(const char *, const char *, int, int,
const char *);
/// C plugin get osd size and ascpect
extern void GetOsdSize(int *, int *, double *);
@ -33,7 +34,8 @@ extern "C"
/// C plugin close osd
extern void OsdClose(void);
/// C plugin draw osd pixmap
extern void OsdDrawARGB(int, int, int, int, const uint8_t *);
extern void OsdDrawARGB(int, int, int, int, int, const uint8_t *, int,
int);
/// C plugin play audio packet
extern int PlayAudio(const uint8_t *, int, uint8_t);
@ -41,6 +43,8 @@ extern "C"
extern int PlayTsAudio(const uint8_t *, int);
/// C plugin set audio volume
extern void SetVolumeDevice(int);
/// C plugin reset channel id (restarts audio)
extern void ResetChannelId(void);
/// C plugin play video packet
extern int PlayVideo(const uint8_t *, int);
@ -53,6 +57,8 @@ extern "C"
extern int SetPlayMode(int);
/// C plugin get current system time counter
extern int64_t GetSTC(void);
/// C plugin get video stream size and aspect
extern void GetVideoSize(int *, int *, double *);
/// C plugin set trick speed
extern void TrickSpeed(int);
/// C plugin clears all video and audio data from the device
@ -90,6 +96,22 @@ extern "C"
extern void Suspend(int, int, int);
/// Resume plugin
extern void Resume(void);
/// Get decoder statistics
extern void GetStats(int *, int *, int *, int *);
/// C plugin scale video
extern void ScaleVideo(int, int, int, int);
/// Set Pip position
extern void PipSetPosition(int, int, int, int, int, int, int, int);
/// Pip start
extern void PipStart(int, int, int, int, int, int, int, int);
/// Pip stop
extern void PipStop(void);
/// Pip play video packet
extern int PipPlayVideo(const uint8_t *, int);
extern const char *X11DisplayName; ///< x11 display name
#ifdef __cplusplus
}
#endif

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
///
/// @file softhddevice.h @brief software HD device plugin header file.
///
/// Copyright (c) 2011 by Johns. All Rights Reserved.
/// Copyright (c) 2011, 2014 by Johns. All Rights Reserved.
///
/// Contributor(s):
///

65
softhddevice_service.h Normal file
View File

@ -0,0 +1,65 @@
///
/// @file softhddev_service.h @brief software HD device service header file.
///
/// Copyright (c) 2012 by durchflieger. All Rights Reserved.
///
/// Contributor(s):
///
/// License: AGPLv3
///
/// This program is free software: you can redistribute it and/or modify
/// it under the terms of the GNU Affero General Public License as
/// published by the Free Software Foundation, either version 3 of the
/// License.
///
/// This program is distributed in the hope that it will be useful,
/// but WITHOUT ANY WARRANTY; without even the implied warranty of
/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
/// GNU Affero General Public License for more details.
///
/// $Id$
//////////////////////////////////////////////////////////////////////////////
#pragma once
#define ATMO_GRAB_SERVICE "SoftHDDevice-AtmoGrabService-v1.0"
#define ATMO1_GRAB_SERVICE "SoftHDDevice-AtmoGrabService-v1.1"
#define OSD_3DMODE_SERVICE "SoftHDDevice-Osd3DModeService-v1.0"
enum
{ GRAB_IMG_RGBA_FORMAT_B8G8R8A8 };
typedef struct
{
int structSize;
// request data
int analyseSize;
int clippedOverscan;
// reply data
int imgType;
int imgSize;
int width;
int height;
void *img;
} SoftHDDevice_AtmoGrabService_v1_0_t;
typedef struct
{
int Mode;
} SoftHDDevice_Osd3DModeService_v1_0_t;
typedef struct
{
// request/reply data
int width;
int height;
// reply data
int size;
void *img;
} SoftHDDevice_AtmoGrabService_v1_1_t;

View File

@ -1,75 +1,73 @@
# Copyright 1999-2012 Gentoo Foundation
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
EAPI="3"
EAPI="5"
inherit eutils vdr-plugin
inherit vdr-plugin-2 git-2
if [[ ${PV} == "9999" ]] ; then
inherit git-2
EGIT_REPO_URI="git://projects.vdr-developer.org/vdr-plugin-softhddevice.git"
else
SRC_URI="http://projects.vdr-developer.org/attachments/download/838/${P}.tgz"
fi
RESTRICT="test"
EGIT_REPO_URI="git://projects.vdr-developer.org/vdr-plugin-softhddevice.git"
KEYWORDS=""
DESCRIPTION="A software and GPU emulated HD output device plugin for VDR."
DESCRIPTION="VDR Plugin: Software and GPU emulated HD output device"
HOMEPAGE="http://projects.vdr-developer.org/projects/show/plg-softhddevice"
SRC_URI=""
LICENSE="AGPL-3"
SLOT="0"
KEYWORDS="~x86 ~amd64"
IUSE="vaapi vdpau alsa oss yaepg opengl jpeg"
IUSE="alsa +debug opengl oss vaapi vdpau xscreensaver"
DEPEND=">=x11-libs/libxcb-1.8
x11-libs/xcb-util
x11-libs/xcb-util-wm
x11-libs/xcb-util-keysyms
x11-libs/xcb-util-renderutil
x11-libs/libX11
opengl? ( virtual/opengl )
>=virtual/ffmpeg-0.7
sys-devel/gettext
sys-devel/make
dev-util/pkgconfig
yaepg? ( >=media-video/vdr-1.7.23[yaepg] )
!yaepg? ( >=media-video/vdr-1.7.23 )
vdpau? ( x11-libs/libvdpau )
vaapi? ( x11-libs/libva )
alsa? ( media-libs/alsa-lib )
oss? ( sys-kernel/linux-headers )
jpeg? ( virtual/jpeg )
"
RDEPEND=">=media-video/vdr-2
x11-libs/libX11
>=x11-libs/libxcb-1.8
x11-libs/xcb-util-wm
x11-libs/xcb-util-keysyms
x11-libs/xcb-util-renderutil
alsa? ( media-libs/alsa-lib )
opengl? ( virtual/opengl )
vaapi? ( x11-libs/libva
virtual/ffmpeg[vaapi] )
vdpau? ( x11-libs/libvdpau
virtual/ffmpeg[vdpau] )"
DEPEND="${RDEPEND}
virtual/pkgconfig
x11-libs/xcb-util"
src_prepare() {
vdr-plugin_src_prepare
REQUIRED_USE="opengl? ( vaapi )
|| ( vaapi vdpau )
|| ( alsa oss )"
#VDR_CONFD_FILE="${FILESDIR}/confd-0.6.0"
#VDR_RCADDON_FILE="${FILESDIR}/rc-addon-0.6.0.sh"
pkg_setup() {
vdr-plugin-2_pkg_setup
append-cppflags -DHAVE_PTHREAD_NAME
use debug && append-cppflags -DDEBUG -DOSD_DEBUG
}
src_prepare() {
vdr-plugin-2_src_prepare
src_compile() {
local myconf
BUILD_PARAMS+=" ALSA=$(usex alsa 1 0)"
BUILD_PARAMS+=" OPENGL=$(usex opengl 1 0)"
BUILD_PARAMS+=" OSS=$(usex oss 1 0)"
BUILD_PARAMS+=" VAAPI=$(usex vaapi 1 0)"
BUILD_PARAMS+=" VDPAU=$(usex vdpau 1 0)"
BUILD_PARAMS+=" SCREENSAVER=$(usex xscreensaver 1 0)"
myconf="-DHAVE_PTHREAD_NAME"
use vdpau && myconf="${myconf} -DUSE_VDPAU"
use vaapi && myconf="${myconf} -DUSE_VAAPI"
use alsa && myconf="${myconf} -DUSE_ALSA"
use oss && myconf="${myconf} -DUSE_OSS"
use jpeg && myconf="${myconf} -DUSE_JPEG"
emake all CC="$(tc-getCC)" CFLAGS="${CFLAGS}" \
LDFLAGS="${LDFLAGS}" CONFIG="${myconf}" LIBDIR="." || die
if has_version ">=media-video/ffmpeg-0.8"; then
BUILD_PARAMS+=" SWRESAMPLE=1"
fi
if has_version ">=media-video/libav-0.8"; then
BUILD_PARAMS+=" AVRESAMPLE=1"
fi
}
src_install() {
vdr-plugin_src_install
vdr-plugin-2_src_install
dodoc README.txt
#dodir /etc/vdr/plugins || die
#insinto /etc/vdr/plugins
#fowners -R vdr:vdr /etc/vdr || die
#insinto /etc/conf.d
#doins vdr.softhddevice
nonfatal dodoc ChangeLog Todo
}

3708
video.c

File diff suppressed because it is too large Load Diff

85
video.h
View File

@ -1,7 +1,7 @@
///
/// @file video.h @brief Video module header file
///
/// Copyright (c) 2009 - 2012 by Johns. All Rights Reserved.
/// Copyright (c) 2009 - 2015 by Johns. All Rights Reserved.
///
/// Contributor(s):
///
@ -30,30 +30,35 @@
/// Video hardware decoder typedef
typedef struct _video_hw_decoder_ VideoHwDecoder;
/// Video output stream typedef
typedef struct __video_stream__ VideoStream;
//----------------------------------------------------------------------------
// Variables
//----------------------------------------------------------------------------
extern signed char VideoHardwareDecoder; ///< flag use hardware decoder
extern char VideoIgnoreRepeatPict; ///< disable repeat pict warning
extern int VideoAudioDelay; ///< audio/video delay
extern char ConfigStartX11Server; ///< flag start the x11 server
//----------------------------------------------------------------------------
// Prototypes
//----------------------------------------------------------------------------
/// Allocate new video hardware decoder.
extern VideoHwDecoder *VideoNewHwDecoder(void);
extern VideoHwDecoder *VideoNewHwDecoder(VideoStream *);
/// Deallocate video hardware decoder.
extern void VideoDelHwDecoder(VideoHwDecoder *);
#ifdef LIBAVCODEC_VERSION
/// Get and allocate a video hardware surface.
extern unsigned VideoGetSurface(VideoHwDecoder *);
extern unsigned VideoGetSurface(VideoHwDecoder *, const AVCodecContext *);
/// Release a video hardware surface
extern void VideoReleaseSurface(VideoHwDecoder *, unsigned);
#ifdef LIBAVCODEC_VERSION
/// Callback to negotiate the PixelFormat.
extern enum PixelFormat Video_get_format(VideoHwDecoder *, AVCodecContext *,
const enum PixelFormat *);
@ -62,8 +67,8 @@ extern enum PixelFormat Video_get_format(VideoHwDecoder *, AVCodecContext *,
extern void VideoRenderFrame(VideoHwDecoder *, const AVCodecContext *,
const AVFrame *);
/// Get ffmpeg vaapi context.
extern struct vaapi_context *VideoGetVaapiContext(VideoHwDecoder *);
/// Get hwaccel context for ffmpeg.
extern void *VideoGetHwAccelContext(VideoHwDecoder *);
#ifdef AVCODEC_VDPAU_H
/// Draw vdpau render state.
@ -81,6 +86,9 @@ extern void VideoDisplayWakeup(void);
/// Set video device.
extern void VideoSetDevice(const char *);
/// Get video driver name.
extern const char *VideoGetDriverName(void);
/// Set video geometry.
extern int VideoSetGeometry(const char *);
@ -90,14 +98,32 @@ extern void VideoSet60HzMode(int);
/// Set soft start audio/video sync.
extern void VideoSetSoftStartSync(int);
/// Set show black picture during channel switch.
extern void VideoSetBlackPicture(int);
/// Set brightness adjustment.
extern void VideoSetBrightness(int);
/// Set contrast adjustment.
extern void VideoSetContrast(int);
/// Set saturation adjustment.
extern void VideoSetSaturation(int);
/// Set hue adjustment.
extern void VideoSetHue(int);
/// Set video output position.
extern void VideoSetOutputPosition(int, int, int, int);
extern void VideoSetOutputPosition(VideoHwDecoder *, int, int, int, int);
/// Set video mode.
extern void VideoSetVideoMode(int, int, int, int);
/// Set display format.
extern void VideoSetDisplayFormat(int);
/// Set 4:3 display format.
extern void VideoSet4to3DisplayFormat(int);
/// Set other display format.
extern void VideoSetOtherDisplayFormat(int);
/// Set video fullscreen mode.
extern void VideoSetFullscreen(int);
@ -142,31 +168,64 @@ extern void VideoSetAutoCrop(int, int, int);
extern void VideoOsdClear(void);
/// Draw an OSD ARGB image.
extern void VideoOsdDrawARGB(int, int, int, int, const uint8_t *);
extern void VideoOsdDrawARGB(int, int, int, int, int, const uint8_t *, int,
int);
/// Get OSD size.
extern void VideoGetOsdSize(int *, int *);
/// Set OSD size.
extern void VideoSetOsdSize(int, int);
/// Set Osd 3D Mode
extern void VideoSetOsd3DMode(int);
/// Set video clock.
extern void VideoSetClock(VideoHwDecoder *, int64_t);
/// Get video clock.
extern int64_t VideoGetClock(const VideoHwDecoder *);
/// Set closing flag.
extern void VideoSetClosing(VideoHwDecoder *);
/// Reset start of frame counter
extern void VideoResetStart(VideoHwDecoder *);
/// Set trick play speed.
extern void VideoSetTrickSpeed(VideoHwDecoder *, int);
/// Grab screen.
extern uint8_t *VideoGrab(int *, int *, int *, int);
/// Grab screen raw.
extern uint8_t *VideoGrabService(int *, int *, int *);
/// Get decoder statistics.
extern void VideoGetStats(VideoHwDecoder *, int *, int *, int *, int *);
/// Get video stream size
extern void VideoGetVideoSize(VideoHwDecoder *, int *, int *, int *, int *);
extern void VideoOsdInit(void); ///< Setup osd.
extern void VideoOsdExit(void); ///< Cleanup osd.
extern void VideoInit(const char *); ///< Setup video module.
extern void VideoExit(void); ///< Cleanup and exit video module.
extern void VideoFlushInput(void); ///< Flush video input buffers.
extern int VideoDecode(void); ///< Decode video input buffers.
extern int VideoGetBuffers(void); ///< Get number of input buffers.
/// Poll video input buffers.
extern int VideoPollInput(VideoStream *);
/// Decode video input buffers.
extern int VideoDecodeInput(VideoStream *);
/// Get number of input buffers.
extern int VideoGetBuffers(const VideoStream *);
/// Set DPMS at Blackscreen switch
extern void SetDPMSatBlackScreen(int);
/// Raise the frontend window
extern int VideoRaiseWindow(void);
/// @}