mirror of
https://projects.vdr-developer.org/git/vdr-plugin-softhddevice.git
synced 2023-10-10 17:16:51 +00:00
Compare commits
326 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
6dfa88aecf | ||
|
ee2311d252 | ||
|
4fa4f6616a | ||
|
5dc5601576 | ||
|
9e56747a56 | ||
|
5b90137050 | ||
|
f47ee3a201 | ||
|
93981031aa | ||
|
509329c90a | ||
|
8c347fdf1d | ||
|
06b8f77327 | ||
![]() |
700c8e8767 | ||
|
ec58e45607 | ||
|
396d5fac05 | ||
|
f0d31ad33c | ||
|
e0f4a99b99 | ||
|
a1939eb6cb | ||
|
28555643a5 | ||
|
2866e328c6 | ||
|
915dff8714 | ||
|
ca0181b1b1 | ||
|
a36221dea7 | ||
|
4e72638766 | ||
|
93ea660a38 | ||
|
73ce4ba803 | ||
|
1d06c5ba59 | ||
|
2ceeb6db40 | ||
|
4f4d304479 | ||
|
9f134c1b6d | ||
|
0adc02dd78 | ||
|
46e9f23355 | ||
|
ac1d5250c8 | ||
|
c2556eb90a | ||
|
a3c0052c4b | ||
|
8b7402a397 | ||
|
4a4de36878 | ||
|
37f409cb9a | ||
|
5207af6b2d | ||
|
90538ebfa9 | ||
|
ac7672053a | ||
|
0cdedb88ac | ||
|
42bbb763fd | ||
|
5bf2a9b761 | ||
|
b7d372aa39 | ||
|
3d3a88e76c | ||
|
450c9b6309 | ||
|
23ab3707dc | ||
![]() |
b3f0fe9fea | ||
|
f73f7a28f3 | ||
|
340e10a0eb | ||
![]() |
a45b9a3abe | ||
|
590bae406a | ||
|
501d46793f | ||
|
978fc59aba | ||
|
aee9bbed90 | ||
|
8577292c50 | ||
|
a74a8e1c74 | ||
|
e2a65cbf76 | ||
|
35a1dde089 | ||
|
7ffbfea224 | ||
|
bb70c75656 | ||
|
cfda3ba39d | ||
![]() |
0e40f5f872 | ||
|
fb2a7f9959 | ||
|
e3b32861b0 | ||
|
58a76439ee | ||
|
a13c25d309 | ||
|
5265e68aa9 | ||
|
11121b5bdd | ||
|
d8e96c7871 | ||
|
8ff65a011a | ||
|
171a3f4dc9 | ||
|
93357fb1cd | ||
|
c646007db1 | ||
|
7615305960 | ||
|
cc1e2de58b | ||
|
738e9402d2 | ||
|
34fd275b42 | ||
|
64c11efc1b | ||
|
ebb8482226 | ||
|
833112eaa9 | ||
|
3022920b40 | ||
|
c1d3b9d048 | ||
|
4fe1c43c08 | ||
|
7a5e696bc4 | ||
|
8f99f80d44 | ||
|
c0286b3ab4 | ||
|
9dd248f9d0 | ||
|
238224efc8 | ||
|
5b35e70b94 | ||
|
857546a3a5 | ||
|
a1b77b1502 | ||
|
7ef5667598 | ||
|
4e3f5f5414 | ||
|
23b0e0d599 | ||
|
eab051f5e6 | ||
![]() |
e058302a08 | ||
|
efcf3a1d2d | ||
|
1f0d5878b1 | ||
|
f09a37a941 | ||
|
a7562eb2be | ||
![]() |
a747829ffb | ||
|
7db63875d0 | ||
|
637c04655a | ||
|
9954b939ef | ||
|
e65572c2e2 | ||
|
b3ddc47cb5 | ||
|
4d9e3a71f4 | ||
|
21e4f4ee04 | ||
|
746746d5b7 | ||
|
936566c642 | ||
|
d6f557c6f7 | ||
|
2d2ea53d16 | ||
|
bccd959833 | ||
|
240fc17471 | ||
|
7b2caac901 | ||
|
56aae221e7 | ||
|
54255e7b57 | ||
|
2cd667fb44 | ||
|
145d65ff01 | ||
|
8faff0fd1e | ||
|
d31ff55b12 | ||
|
d4535a34c9 | ||
|
ebd2f85f90 | ||
|
dce7ef9110 | ||
|
780e2989ae | ||
|
2661fdf333 | ||
|
2557418e81 | ||
|
b48e0d0638 | ||
|
2c27d83b9e | ||
|
8b22585748 | ||
|
7ed6975330 | ||
|
d5e111238d | ||
![]() |
2733e47af7 | ||
|
f9998e7664 | ||
|
04286fb2ad | ||
|
cd82ee8e4a | ||
|
a1f17199d6 | ||
|
849ca7cfd6 | ||
|
308742a927 | ||
|
1a730ef90b | ||
|
d59c2ad40b | ||
|
3366faece2 | ||
|
2bb2875cd7 | ||
|
e88403d044 | ||
|
11293e8dc1 | ||
|
3bcc3d280e | ||
|
55587c86f0 | ||
|
7cc74795be | ||
|
534b4094b5 | ||
|
7cd025a023 | ||
|
b14a67b601 | ||
|
b24409323d | ||
|
9ec2716026 | ||
|
fa09d940c5 | ||
|
d4702b9a9e | ||
|
6a3a560857 | ||
|
8ee1e84b2e | ||
|
7e96a292eb | ||
|
d89ada9aad | ||
|
59d1a6b1f2 | ||
|
1a744a8eb8 | ||
|
78100cba00 | ||
|
b54ddd4549 | ||
|
d42475f2dc | ||
|
7cf6c1ab2b | ||
|
06b8e3d784 | ||
![]() |
63c22a13cf | ||
|
3d5e59a6e5 | ||
|
acf377ec60 | ||
![]() |
87c1c7be84 | ||
|
5bacd0cf7b | ||
|
b1beb49798 | ||
|
33b14be516 | ||
|
3907f3eb2f | ||
|
00d314dcd1 | ||
|
9719fef55b | ||
|
9b69045a20 | ||
|
966ff4229a | ||
|
e0c0c2021f | ||
|
a3907d11a5 | ||
|
b94d19e7b8 | ||
|
943ee22aa5 | ||
|
b6154a988f | ||
|
932871dea9 | ||
|
5ec6963398 | ||
|
b04323704d | ||
![]() |
38011d51b6 | ||
|
9a2b6f860a | ||
![]() |
10075aa501 | ||
|
cb91c779d3 | ||
|
aad3742670 | ||
|
1b23074de7 | ||
|
78015d90fb | ||
![]() |
0286c434b4 | ||
|
6e9e641453 | ||
|
d36e4c22b6 | ||
|
7e4657e615 | ||
|
84e8e58c91 | ||
|
141eb5cf71 | ||
|
a9e664ac52 | ||
|
30952face4 | ||
|
0519aff4d8 | ||
|
92b4203644 | ||
|
f640ebdeb5 | ||
|
de7c4b2a96 | ||
|
0cf4598f68 | ||
|
80dfa4a80f | ||
|
0a78944996 | ||
|
142c3b16f6 | ||
|
73fe963c36 | ||
|
a61cbcb65a | ||
|
3df9acc034 | ||
|
d9c9061a7c | ||
|
e9fbe6b54f | ||
|
5e93fb2756 | ||
|
e02c1fa5f9 | ||
|
c07ec82e6d | ||
|
ecb48a5d63 | ||
|
9efc73144d | ||
![]() |
a920da652b | ||
|
9ec077ec8a | ||
|
8b0d8d8446 | ||
|
15583a79c4 | ||
|
2cdce610d6 | ||
|
2d6d151b85 | ||
|
ca4f519a1f | ||
|
583b6f246e | ||
|
e6ce7832ba | ||
|
696bb8e934 | ||
|
3bb7782d40 | ||
|
b5162bae5c | ||
|
d486fb2ca1 | ||
|
73d65968ae | ||
|
3be69730f0 | ||
|
6f1c4d6ef6 | ||
|
6aa8601f7d | ||
|
0f62a521f4 | ||
|
57af986367 | ||
|
a2311748ca | ||
|
2c5a14ae4a | ||
|
ed1e16dccf | ||
|
da9886e9f1 | ||
|
32527f832e | ||
|
57bbd02c57 | ||
|
940849d03f | ||
|
c112b850d8 | ||
|
752ee356fa | ||
|
43e70b6a3f | ||
|
541754a619 | ||
|
3772b2160c | ||
|
465c68d839 | ||
![]() |
aca508114b | ||
|
49ae1c7211 | ||
|
0cf110da81 | ||
|
8d5ff6f6fb | ||
|
5456164dce | ||
|
6dd7c2680a | ||
|
3b5c1adef2 | ||
|
47d840bbff | ||
|
207871fd9b | ||
|
ebe0beb400 | ||
|
93ddd26a4a | ||
|
e30e1e5aad | ||
|
d26c34f34f | ||
![]() |
24a8c7f763 | ||
|
3e39ffd5e0 | ||
|
53f22a2ed2 | ||
|
44ca71fedb | ||
|
8039e8ae04 | ||
|
79e78bf235 | ||
|
c9ef8b759a | ||
|
80db7c6656 | ||
|
3ba18d8720 | ||
|
2ffcb874bb | ||
|
5b765f02bd | ||
|
2c52955ac0 | ||
|
09d8588588 | ||
|
71f786711b | ||
|
deea34eb5e | ||
|
1f14af6590 | ||
|
aeae505bd4 | ||
|
e10e62dcf7 | ||
|
2a1793c98e | ||
|
30d4586448 | ||
|
aa4debc9c8 | ||
![]() |
ac2e10a308 | ||
|
c986d285ea | ||
|
8612044b9b | ||
|
c19b86411a | ||
|
9165052d5e | ||
|
413983a666 | ||
|
f86fa4edd7 | ||
|
7f8110557f | ||
|
c9b344a3fd | ||
|
b41f934c37 | ||
|
6058f3da56 | ||
![]() |
689d75b808 | ||
|
bd4503f30b | ||
|
24ba8175a3 | ||
|
fe24cbb182 | ||
|
6eff8fa818 | ||
|
552a994db3 | ||
|
d24f19bc2d | ||
|
7b570c507c | ||
|
09ba3e2993 | ||
|
d0f825f831 | ||
|
47d2896468 | ||
|
f59425ac57 | ||
|
1acdeee913 | ||
|
c2938c7ef3 | ||
|
d65fe88c83 | ||
|
7d3f4f4434 | ||
|
acc35fe30c | ||
|
ee5804fed7 | ||
|
1cbaddf75c | ||
|
226760490b | ||
|
7931909e28 | ||
|
129c139ed7 | ||
|
340816d763 | ||
|
d6c6818ecf | ||
|
181a0bb372 | ||
|
f2d4163899 | ||
|
4cc98d7937 | ||
|
3812fa8d38 | ||
|
da5c5cd5fd |
2
.gitignore
vendored
2
.gitignore
vendored
@ -4,7 +4,7 @@
|
||||
.*.swp
|
||||
.gdb_history
|
||||
# work directory
|
||||
chaos
|
||||
.chaos
|
||||
# generated files
|
||||
.dependencies
|
||||
libvdr-softhddevice.so*
|
||||
|
349
ChangeLog
349
ChangeLog
@ -1,6 +1,355 @@
|
||||
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
|
||||
|
||||
Release Version 0.5.0
|
||||
Change audio/video delay with hot-key.
|
||||
Enable/disable/toggle fullscreen with hot-key (Feature #930).
|
||||
|
||||
User: CafeDelMar
|
||||
Date: Thu Apr 5 22:44:06 CEST 2012
|
||||
|
||||
Cutting pixels are now configured for each resolution.
|
||||
|
||||
User johns
|
||||
Date: Thu Apr 5 15:47:59 CEST 2012
|
||||
|
||||
Buffer less video and audio.
|
||||
Fix 100% cpu use, with mp3 plugin.
|
||||
Audio/Video sync rewrite, trick-speed support moved to video.
|
||||
Faster VdpauBlackSurface version.
|
||||
Fix bug: VideoSetPts wrong position for multi frame packets.
|
||||
|
||||
User: CafeDelMar
|
||||
Date: Mon Mar 26 20:45:54 CEST 2012
|
||||
|
||||
Add VideoSkipPixels support.
|
||||
|
||||
User johns
|
||||
Date: Fri Mar 23 18:43:20 CET 2012
|
||||
|
||||
Add optional argument (display) to ATTA svdrp commmand.
|
||||
Wakeup display to show OSD for remote learning mode.
|
||||
Support switching the primary device with svdrp.
|
||||
Disable and reenable screen saver and DPMS.
|
||||
Video source code cleanup.
|
||||
Fix fast backward with some h264 streams.
|
||||
Make soft start sync setup menu configurable.
|
||||
Fix bug: StillPicture NAL end of sequence is 10 and not 0x10.
|
||||
Fix bug: AudioEnqueue crash without sound card.
|
||||
|
||||
User johns
|
||||
Date: Sun Mar 4 22:35:36 CET 2012
|
||||
|
||||
Release Version 0.4.9
|
||||
Experimental ac3 audio drift correction support.
|
||||
Removes LPCM detection from TS parser.
|
||||
Rewrote video/audio start code.
|
||||
|
246
Makefile
246
Makefile
@ -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 -Woverloaded-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 $@
|
||||
|
189
README.txt
189
README.txt
@ -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,24 +20,27 @@ $Id$
|
||||
|
||||
A software and GPU emulated HD output device plugin for VDR.
|
||||
|
||||
o Video VA-API/VA-API (with intel, nvidia and amd backend supported)
|
||||
o Video CPU/VA-API
|
||||
o Video VDPAU/VDPAU
|
||||
o Video CPU/VDPAU
|
||||
o Audio FFMpeg/Alsa/Analog
|
||||
o Audio FFMpeg/Alsa/Digital
|
||||
o Audio FFMpeg/OSS/Analog
|
||||
o HDMI/SPDIF Passthrough
|
||||
o VA-API bob software deinterlace
|
||||
o Auto-crop
|
||||
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 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 / 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 VA-API/Opengl
|
||||
o planned: Video VDPAU/Opengl
|
||||
o planned: Video CPU/Xv
|
||||
o planned: Video CPU/Opengl
|
||||
o planned: Improved Software Deinterlacer (yadif or/and ffmpeg filters)
|
||||
o planned: Video XvBA/XvBA
|
||||
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.
|
||||
|
||||
@ -55,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
|
||||
|
||||
@ -65,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
|
||||
------
|
||||
@ -80,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
|
||||
@ -96,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
|
||||
@ -107,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
|
||||
@ -122,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)
|
||||
@ -137,18 +144,51 @@ Setup: /etc/vdr/setup.conf
|
||||
-1000 .. 1000 noise reduction level (0 off, -1000 max blur,
|
||||
1000 max sharp)
|
||||
|
||||
softhddevice.<res>.CutTopBottom = 0
|
||||
Cut 'n' pixels at at top and bottom of the video picture.
|
||||
|
||||
softhddevice.<res>.CutLeftRight = 0
|
||||
Cut 'n' pixels at at left and right of the video picture.
|
||||
|
||||
softhddevice.AudioDelay = 0
|
||||
+n or -n ms
|
||||
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
|
||||
@ -166,10 +206,9 @@ Setup: /etc/vdr/setup.conf
|
||||
32bit RGBA background color
|
||||
(Red * 16777216 + Green * 65536 + Blue * 256 + Alpha)
|
||||
or hex RRGGBBAA
|
||||
grey = 2155905279
|
||||
|
||||
softhddevice.SkipLines = 0
|
||||
skip 'n' lines at top and bottom of the video picture.
|
||||
grey 127 * 16777216 + 127 * 65536 + 127 * 256 => 2139062016
|
||||
in the setup menu this is entered as (24bit RGB and 8bit Alpha)
|
||||
(Red * 65536 + Green * 256 + Blue)
|
||||
|
||||
softhddevice.StudioLevels = 0
|
||||
0 use PC levels (0-255) with vdpau.
|
||||
@ -186,11 +225,53 @@ Setup: /etc/vdr/setup.conf
|
||||
0 disable 60Hz display mode
|
||||
1 enable 60Hz display mode
|
||||
|
||||
VideoDisplayFormat = ?
|
||||
softhddevice.SoftStartSync = 0
|
||||
0 disable soft start of audio/video sync
|
||||
1 enable soft start of audio/video sync
|
||||
|
||||
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
|
||||
------
|
||||
|
||||
@ -238,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:
|
||||
--------
|
||||
@ -249,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
|
||||
@ -261,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
|
||||
@ -275,6 +379,11 @@ Requires:
|
||||
x11-libs/xvba-video
|
||||
XVBA Backend for Video Acceleration (VA) API
|
||||
http://www.freedesktop.org/wiki/Software/vaapi
|
||||
|
||||
x11-libs/libvdpau
|
||||
VDPAU wrapper and trace libraries
|
||||
http://www.freedesktop.org/wiki/Software/VDPAU
|
||||
|
||||
x11-libs/libxcb,
|
||||
X C-language Bindings library
|
||||
http://xcb.freedesktop.org
|
||||
|
57
Todo
57
Todo
@ -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,31 +19,39 @@ GNU Affero General Public License for more details.
|
||||
$Id: $
|
||||
|
||||
missing:
|
||||
software deinterlace (yadif, ...)
|
||||
software decoder with software deinterlace
|
||||
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
|
||||
suspend plugin didn't restore full-screen (is this wanted?)
|
||||
Option deinterlace off / deinterlace force!
|
||||
ColorSpace aren't configurable with the gui.
|
||||
Replay of old vdr 1.6 recordings.
|
||||
svdrp support for hot-keys.
|
||||
|
||||
crash:
|
||||
AudioPlayHandlerThread -> pthread_cond_wait
|
||||
works for me: restart vdr not working, when started x11 was killed.
|
||||
|
||||
video:
|
||||
subtitle not cleared
|
||||
subtitle could be asyncron
|
||||
reduce warnings after channel switch
|
||||
grab image with hardware and better scaling support
|
||||
hard channel switch
|
||||
yaepghd changed position is lost on channel switch
|
||||
pause (live tv) has sometime problems with SAT1 HD Pro7 HD
|
||||
radio show black background
|
||||
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
|
||||
@ -53,9 +61,12 @@ 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
|
||||
add support for vaapi-ext
|
||||
libva: branch vaapi-ext / staging
|
||||
add support for vaapi-ext / staging
|
||||
|
||||
libva-intel-driver:
|
||||
deinterlace only supported with vaapi-ext
|
||||
@ -73,27 +84,23 @@ libva-vdpau-driver:
|
||||
libva-xvba-driver:
|
||||
|
||||
x11:
|
||||
disable screensaver
|
||||
skip multiple configure-notify, handle only the last one.
|
||||
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
|
||||
samplerate problem resume/suspend.
|
||||
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
|
||||
@ -108,28 +115,26 @@ playback of recording
|
||||
replay/pause need 100% cpu (fixed?)
|
||||
|
||||
plugins:
|
||||
mp3 plugin needs 100% cpu (OSD updates?)
|
||||
mp3 plugin needs 100% cpu (bad ::Poll)
|
||||
|
||||
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)
|
||||
|
15
audio.h
15
audio.h
@ -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):
|
||||
///
|
||||
@ -32,7 +32,7 @@ extern void AudioFlushBuffers(void); ///< flush audio buffers
|
||||
extern void AudioPoller(void); ///< poll audio events/handling
|
||||
extern int AudioFreeBytes(void); ///< free bytes in audio output
|
||||
extern int AudioUsedBytes(void); ///< used bytes in audio output
|
||||
extern uint64_t AudioGetDelay(void); ///< get current audio delay
|
||||
extern int64_t AudioGetDelay(void); ///< get current audio delay
|
||||
extern void AudioSetClock(int64_t); ///< set audio clock base
|
||||
extern int64_t AudioGetClock(); ///< get current audio clock
|
||||
extern void AudioSetVolume(int); ///< set volume
|
||||
@ -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
|
||||
|
||||
/// @}
|
||||
|
33
codec.h
33
codec.h
@ -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
97
iatomic.h
Normal 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
|
||||
|
||||
/// @}
|
25
misc.h
25
misc.h
@ -107,6 +107,31 @@ static inline void Syslog(const int level, const char *format, ...)
|
||||
#define Debug(level, fmt...) /* disabled */
|
||||
#endif
|
||||
|
||||
#ifndef AV_NOPTS_VALUE
|
||||
#define AV_NOPTS_VALUE INT64_C(0x8000000000000000)
|
||||
#endif
|
||||
|
||||
/**
|
||||
** Nice time-stamp string.
|
||||
**
|
||||
** @param ts dvb time stamp
|
||||
*/
|
||||
static inline const char *Timestamp2String(int64_t ts)
|
||||
{
|
||||
static char buf[4][16];
|
||||
static int idx;
|
||||
|
||||
if (ts == (int64_t) AV_NOPTS_VALUE) {
|
||||
return "--:--:--.---";
|
||||
}
|
||||
idx = (idx + 1) % 3;
|
||||
snprintf(buf[idx], sizeof(buf[idx]), "%2d:%02d:%02d.%03d",
|
||||
(int)(ts / (90 * 3600000)), (int)((ts / (90 * 60000)) % 60),
|
||||
(int)((ts / (90 * 1000)) % 60), (int)((ts / 90) % 1000));
|
||||
|
||||
return buf[idx];
|
||||
}
|
||||
|
||||
/**
|
||||
** Get ticks in ms.
|
||||
**
|
||||
|
1421
po/de_DE.po
Normal file
1421
po/de_DE.po
Normal file
File diff suppressed because it is too large
Load Diff
25
ringbuffer.c
25
ringbuffer.c
@ -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.
|
||||
|
@ -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
|
||||
|
2116
softhddev.c
2116
softhddev.c
File diff suppressed because it is too large
Load Diff
32
softhddev.h
32
softhddev.h
@ -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);
|
||||
@ -51,6 +55,10 @@ extern "C"
|
||||
|
||||
/// C plugin set play mode
|
||||
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
|
||||
@ -79,6 +87,8 @@ extern "C"
|
||||
extern int Start(void);
|
||||
/// C plugin stop code
|
||||
extern void Stop(void);
|
||||
/// C plugin house keeping
|
||||
extern void Housekeeping(void);
|
||||
/// C plugin main thread hook
|
||||
extern void MainThreadHook(void);
|
||||
|
||||
@ -86,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
|
||||
|
2537
softhddevice.cpp
2537
softhddevice.cpp
File diff suppressed because it is too large
Load Diff
@ -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
65
softhddevice_service.h
Normal 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;
|
@ -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
|
||||
}
|
||||
|
108
video.h
108
video.h
@ -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,29 +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 *);
|
||||
@ -61,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.
|
||||
@ -77,20 +83,47 @@ extern void VideoPollEvent(void);
|
||||
/// Wakeup display handler.
|
||||
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 *);
|
||||
|
||||
/// Set 60Hz display mode.
|
||||
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);
|
||||
@ -113,8 +146,11 @@ extern void VideoSetDenoise(int[]);
|
||||
/// Set sharpen.
|
||||
extern void VideoSetSharpen(int[]);
|
||||
|
||||
/// Set skip lines.
|
||||
extern void VideoSetSkipLines(int);
|
||||
/// Set cut top and bottom.
|
||||
extern void VideoSetCutTopBottom(int[]);
|
||||
|
||||
/// Set cut left and right.
|
||||
extern void VideoSetCutLeftRight(int[]);
|
||||
|
||||
/// Set studio levels.
|
||||
extern void VideoSetStudioLevels(int);
|
||||
@ -132,24 +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 *);
|
||||
|
||||
extern int64_t VideoGetClock(void); ///< Get video clock.
|
||||
/// 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);
|
||||
|
||||
/// @}
|
||||
|
Loading…
x
Reference in New Issue
Block a user